1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 package pl.edu.agh.cast.importer.wizard.util;
19
20 import java.util.ArrayList;
21 import java.util.List;
22
23 import org.apache.log4j.Logger;
24 import org.eclipse.core.runtime.CoreException;
25 import org.eclipse.core.runtime.IConfigurationElement;
26 import org.eclipse.core.runtime.Platform;
27
28 import pl.edu.agh.cast.importer.base.util.IImporterPluginRegistryProvider;
29 import pl.edu.agh.cast.importer.wizard.Activator;
30 import pl.edu.agh.cast.importer.wizard.dialog.analyzer.AbstractDataTypeConfigDialog;
31 import pl.edu.agh.cast.importer.wizard.dialog.rule.AbstractConversionRuleConfigDialog;
32 import pl.edu.agh.cast.importer.wizard.page.AbstractConversionRulesSelectionPage;
33
34
35
36
37
38
39 public class WizardUtil {
40
41 private static Logger log = Activator.getLogger();
42
43
44
45
46 private IWizardPluginRegistryProvider pluginRegistryProvider;
47
48
49
50
51 public WizardUtil() {
52 this.pluginRegistryProvider = new DefaultWizardPluginRegistryProvider();
53 }
54
55
56
57
58
59
60
61
62 public WizardUtil(IWizardPluginRegistryProvider provider) {
63 if (provider != null) {
64 this.pluginRegistryProvider = provider;
65 } else {
66 this.pluginRegistryProvider = new DefaultWizardPluginRegistryProvider();
67 }
68 }
69
70
71
72
73
74
75
76
77
78 public List<ConversionRulesPageInfo> getConversionRulesSelectionPageInfos() throws CoreException {
79 IConfigurationElement[] elements = getConversionRulesSelectionPageConfigurations();
80
81 List<ConversionRulesPageInfo> res = new ArrayList<ConversionRulesPageInfo>(elements.length);
82
83 for (IConfigurationElement element : elements) {
84 String id = element.getAttribute(Activator.WIZARD_CONVERSIONRULES_PAGE_ID);
85 String name = element.getAttribute(Activator.WIZARD_CONVERSIONRULES_PAGE_NAME);
86 String description = element.getAttribute(Activator.WIZARD_CONVERSIONRULES_PAGE_DESCRIPTION);
87 AbstractConversionRulesSelectionPage page = (AbstractConversionRulesSelectionPage)element
88 .createExecutableExtension(Activator.WIZARD_CONVERSIONRULES_PAGE_CLASS);
89 res.add(new ConversionRulesPageInfo(id, name, description, page));
90
91 }
92
93 return res;
94 }
95
96
97
98
99
100
101
102 public IConfigurationElement[] getConversionRulesSelectionPageConfigurations() {
103 return Platform.getExtensionRegistry().getConfigurationElementsFor(
104 Activator.WIZARD_CONVERSIONRULES_PAGE_EXTENSION_ID);
105 }
106
107
108
109
110
111
112
113 public IConfigurationElement[] getConversionRuleConfigDialogConfigurations() {
114 return Platform.getExtensionRegistry().getConfigurationElementsFor(
115 Activator.WIZARD_CONVERSIONRULE_DIALOG_EXTENSION_ID);
116 }
117
118
119
120
121
122
123
124 public IConfigurationElement[] getDataTypeConfigDialogConfigurations() {
125 return Platform.getExtensionRegistry().getConfigurationElementsFor(
126 Activator.WIZARD_DATATYPE_DIALOG_EXTENSION_ID);
127 }
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143 public AbstractConversionRulesSelectionPage getConversionRulesSelectionPageInstance(String pageId)
144 throws CoreException {
145 return this.pluginRegistryProvider.getConversionRulesSelectionPageInstance(pageId);
146 }
147
148
149
150
151
152
153
154
155
156 public AbstractConversionRuleConfigDialog getConversionRuleConfigDialogInstance(String ruleId) throws CoreException {
157 return this.pluginRegistryProvider.getConversionRuleConfigDialogInstance(ruleId);
158 }
159
160
161
162
163
164
165
166
167
168 public AbstractDataTypeConfigDialog getDataTypeConfigDialogInstance(String dataTypeId) throws CoreException {
169 return this.pluginRegistryProvider.getDataTypeConfigDialogInstance(dataTypeId);
170 }
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185 private class DefaultWizardPluginRegistryProvider implements IWizardPluginRegistryProvider {
186
187
188
189
190
191
192
193
194 private IConfigurationElement getConversionRulesSelectionPageConfiguration(String pageId) {
195 IConfigurationElement[] rulePages = getConversionRulesSelectionPageConfigurations();
196
197 for (IConfigurationElement conf : rulePages) {
198 String actualId = conf.getAttribute(Activator.WIZARD_CONVERSIONRULES_PAGE_ID);
199
200 if (actualId.equals(pageId)) {
201 return conf;
202 }
203 }
204 log.error("Cannot get conversion rules selection page instance. "
205 + "No conversion rules page with ID = " + pageId);
206 return null;
207 }
208
209
210
211
212
213
214
215
216 private IConfigurationElement getConversionRulesConfigDialogConfiguration(String ruleId) {
217 IConfigurationElement[] ruleDialogs = getConversionRuleConfigDialogConfigurations();
218
219 for (IConfigurationElement conf : ruleDialogs) {
220 String actualId = conf.getAttribute(Activator.WIZARD_CONVERSIONRULE_DIALOG_ID);
221
222 if (actualId.equals(ruleId)) {
223 return conf;
224 }
225 }
226 log.error("Cannot get conversion rule configuration dialog instance. "
227 + "No conversion rules config dialog with ID = " + ruleId);
228 return null;
229 }
230
231
232
233
234
235
236
237
238 private IConfigurationElement getDataTypeConfigDialogConfiguration(String dataTypeId) {
239 IConfigurationElement[] dataTypeDialogs = getDataTypeConfigDialogConfigurations();
240
241 for (IConfigurationElement conf : dataTypeDialogs) {
242 String actualId = conf.getAttribute(Activator.WIZARD_DATATYPE_DIALOG_ID);
243
244 if (actualId.equals(dataTypeId)) {
245 return conf;
246 }
247 }
248 log.warn("Cannot get data type configuration dialog instance. "
249 + "No data type config dialog with ID = " + dataTypeId);
250 return null;
251 }
252
253
254
255
256
257
258
259 public AbstractConversionRulesSelectionPage getConversionRulesSelectionPageInstance(String pageId)
260 throws CoreException {
261 IConfigurationElement conf = getConversionRulesSelectionPageConfiguration(pageId);
262 if (conf == null) {
263 return null;
264 }
265 return (AbstractConversionRulesSelectionPage)conf
266 .createExecutableExtension(Activator.WIZARD_CONVERSIONRULES_PAGE_CLASS);
267 }
268
269
270
271
272
273
274
275 public AbstractConversionRuleConfigDialog getConversionRuleConfigDialogInstance(String ruleId)
276 throws CoreException {
277 IConfigurationElement conf = getConversionRulesConfigDialogConfiguration(ruleId);
278 if (conf == null) {
279 return null;
280 }
281 return (AbstractConversionRuleConfigDialog)conf
282 .createExecutableExtension(Activator.WIZARD_CONVERSIONRULE_DIALOG_CLASS);
283 }
284
285
286
287
288
289
290
291 @Override
292 public AbstractDataTypeConfigDialog getDataTypeConfigDialogInstance(String dataTypeId) throws CoreException {
293 IConfigurationElement conf = getDataTypeConfigDialogConfiguration(dataTypeId);
294 if (conf == null) {
295 return null;
296 }
297 return (AbstractDataTypeConfigDialog)conf.createExecutableExtension(Activator.WIZARD_DATATYPE_DIALOG_CLASS);
298 }
299 }
300
301
302 }