1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 package org.seasar.uruma.rcp.configuration;
17
18 import java.util.HashMap;
19 import java.util.Map;
20
21 import org.seasar.uruma.core.UrumaMessageCodes;
22 import org.seasar.uruma.exception.NotFoundException;
23 import org.seasar.uruma.rcp.configuration.elements.ActionElement;
24 import org.seasar.uruma.rcp.configuration.elements.ActionSetElement;
25 import org.seasar.uruma.rcp.configuration.elements.ApplicationElement;
26 import org.seasar.uruma.rcp.configuration.elements.CategoryElement;
27 import org.seasar.uruma.rcp.configuration.elements.ClassElement;
28 import org.seasar.uruma.rcp.configuration.elements.CommandElement;
29 import org.seasar.uruma.rcp.configuration.elements.ContextElement;
30 import org.seasar.uruma.rcp.configuration.elements.GroupMarkerElement;
31 import org.seasar.uruma.rcp.configuration.elements.HandlerElement;
32 import org.seasar.uruma.rcp.configuration.elements.InitializerElement;
33 import org.seasar.uruma.rcp.configuration.elements.KeyElement;
34 import org.seasar.uruma.rcp.configuration.elements.MenuCommandElement;
35 import org.seasar.uruma.rcp.configuration.elements.MenuContributionElement;
36 import org.seasar.uruma.rcp.configuration.elements.MenuElement;
37 import org.seasar.uruma.rcp.configuration.elements.ParameterElement;
38 import org.seasar.uruma.rcp.configuration.elements.PerspectiveElement;
39 import org.seasar.uruma.rcp.configuration.elements.RunElement;
40 import org.seasar.uruma.rcp.configuration.elements.SchemeElement;
41 import org.seasar.uruma.rcp.configuration.elements.SeparatorElement;
42 import org.seasar.uruma.rcp.configuration.elements.ToolbarElement;
43 import org.seasar.uruma.rcp.configuration.elements.ViewElement;
44 import org.seasar.uruma.rcp.configuration.writer.GenericConfigurationWriter;
45 import org.seasar.uruma.util.AssertionUtil;
46
47
48
49
50
51
52 public class ConfigurationWriterFactory {
53 private static final Map<Class<? extends ConfigurationElement>, ConfigurationWriter> writerMap = new HashMap<Class<? extends ConfigurationElement>, ConfigurationWriter>();
54
55 static {
56 addWriter(new GenericConfigurationWriter(Extension.class));
57
58 addWriter(new GenericConfigurationWriter(ActionElement.class));
59 addWriter(new GenericConfigurationWriter(ActionSetElement.class));
60 addWriter(new GenericConfigurationWriter(ApplicationElement.class));
61 addWriter(new GenericConfigurationWriter(CategoryElement.class));
62 addWriter(new GenericConfigurationWriter(ClassElement.class));
63 addWriter(new GenericConfigurationWriter(CommandElement.class));
64 addWriter(new GenericConfigurationWriter(ContextElement.class));
65 addWriter(new GenericConfigurationWriter(GroupMarkerElement.class));
66 addWriter(new GenericConfigurationWriter(HandlerElement.class));
67 addWriter(new GenericConfigurationWriter(InitializerElement.class));
68 addWriter(new GenericConfigurationWriter(KeyElement.class));
69 addWriter(new GenericConfigurationWriter(MenuCommandElement.class));
70 addWriter(new GenericConfigurationWriter(MenuContributionElement.class));
71 addWriter(new GenericConfigurationWriter(MenuElement.class));
72 addWriter(new GenericConfigurationWriter(SeparatorElement.class));
73 addWriter(new GenericConfigurationWriter(ToolbarElement.class));
74 addWriter(new GenericConfigurationWriter(ParameterElement.class));
75 addWriter(new GenericConfigurationWriter(PerspectiveElement.class));
76 addWriter(new GenericConfigurationWriter(RunElement.class));
77 addWriter(new GenericConfigurationWriter(SchemeElement.class));
78 addWriter(new GenericConfigurationWriter(ViewElement.class));
79 }
80
81
82
83
84
85
86
87 public static final void addWriter(final ConfigurationWriter writer) {
88 AssertionUtil.assertNotNull("writer", writer);
89
90 Class<? extends ConfigurationElement> clazz = writer.getSupportType();
91 writerMap.put(clazz, writer);
92 }
93
94
95
96
97
98
99
100
101
102
103 public static final ConfigurationWriter getConfigurationWriter(
104 final Class<? extends ConfigurationElement> clazz) {
105 ConfigurationWriter writer = writerMap.get(clazz);
106 if (writer != null) {
107 return writer;
108 } else {
109 throw new NotFoundException(
110 UrumaMessageCodes.CONFIGURATION_WRITER_NOT_FOUND, clazz
111 .getName());
112 }
113 }
114
115
116
117
118
119
120
121
122
123
124
125 public static final ConfigurationWriter getConfigurationWriter(
126 final ConfigurationElement element) {
127 AssertionUtil.assertNotNull("element", element);
128 return getConfigurationWriter(element.getClass());
129 }
130 }