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.general;
19
20 import java.util.List;
21
22 import org.eclipse.osgi.util.NLS;
23 import org.eclipse.swt.SWT;
24 import org.eclipse.swt.widgets.Combo;
25 import org.eclipse.swt.widgets.Composite;
26
27 import pl.edu.agh.cast.importer.base.converter.rules.IConversionRule;
28 import pl.edu.agh.cast.importer.base.data.TabularData;
29 import pl.edu.agh.cast.importer.base.general.GeneralImportConverter;
30 import pl.edu.agh.cast.importer.base.general.IDateConversionRule;
31 import pl.edu.agh.cast.importer.base.general.ISourceNodeConversionRule;
32 import pl.edu.agh.cast.importer.base.general.ITargetNodeConversionRule;
33 import pl.edu.agh.cast.importer.wizard.page.AbstractConversionRulesSelectionPage;
34 import pl.edu.agh.cast.importer.wizard.util.Messages;
35 import pl.edu.agh.cast.importer.wizard.utils.AbstractWizardPageHelper;
36 import pl.edu.agh.cast.ui.util.MsgBoxHelper;
37
38
39
40
41
42
43
44 public class GeneralConversionRulesSelectionPage extends AbstractConversionRulesSelectionPage {
45
46
47
48
49 public static final String PAGE_ID = "pl.edu.agh.cast.importer.wizard.rulespage.general";
50
51 private GeneralConversionRulesSelectionPageComposite composite;
52
53 private ISourceNodeConversionRule sourceNodeRule;
54
55 private ITargetNodeConversionRule targetNodeRule;
56
57 private IDateConversionRule dateRule;
58
59 private TabularData previewDataCache;
60
61
62
63
64 public GeneralConversionRulesSelectionPage() {
65 super(Messages.ImporterWizard_GeneralRulesSelectionPageTitle,
66 Messages.ImporterWizard_GeneralRulesSelectionPageDescription);
67 converter = new GeneralImportConverter();
68 }
69
70
71
72
73
74
75
76 public Composite createConvRulesComposite(Composite parent) {
77 composite = new GeneralConversionRulesSelectionPageComposite(parent, SWT.NULL, this);
78
79
80
81
82
83
84
85 refreshPage();
86 return composite;
87 }
88
89
90
91
92
93
94 public boolean canFinish() {
95 if (!isComplete()) {
96 return false;
97 }
98 ((GeneralImportConverter)converter).setConversionRules(sourceNodeRule, targetNodeRule, dateRule);
99 getImportProcess().setConverter(converter);
100 return true;
101 }
102
103
104
105
106
107
108
109
110
111
112
113
114 @Override
115 protected boolean isComplete() {
116 ((GeneralImportConverter)converter).setConversionRules(sourceNodeRule, targetNodeRule, dateRule);
117 return converter.isComplete();
118 }
119
120
121
122
123
124
125 @Override
126 public void refreshSelectedData() {
127 TabularData data = getImportProcess().getParsedData().get(0);
128
129 boolean needsRefresh = false;
130 int previewSize = getPreviewSize(data);
131
132 if (data == null) {
133 refreshPreviewDataCache(data, previewSize);
134 needsRefresh = true;
135 } else {
136 TabularData previewData = data.retrieveDataPreview(previewSize);
137 if (previewData == null || !previewData.equals(previewDataCache)) {
138 refreshPreviewDataCache(previewData, previewSize);
139 needsRefresh = true;
140 }
141 }
142
143 if (composite != null && needsRefresh) {
144 refreshPage();
145 }
146 }
147
148
149
150
151
152
153 @Override
154 public void refreshConversionPreview() {
155 canFinish();
156 composite.refreshConversionPreview();
157 }
158
159
160
161
162
163
164 @Override
165 public int showWarningMsgBox() {
166 int result = -1;
167 if (dateRule != null && !dateRule.isComplete()) {
168 result = MsgBoxHelper.showWarningQuestionBox(composite,
169 Messages.GeneralConversionRulesSelectionPage_DateNotConfiguredWarningTitle, NLS.bind(
170 Messages.GeneralConversionRulesSelectionPage_FieldNotConfiguredWarningMsg,
171 Messages.GeneralConversionRulesSelectionPage_Date));
172 }
173 return result;
174 }
175
176
177
178
179
180
181
182 @Override
183 public void refreshCombosBlocking(List<Combo> combosToBlock, List<Combo> combosToUnblock, IConversionRule newRule) {
184 if (combosToBlock != null && !combosToBlock.isEmpty()) {
185 this.composite.disableCombos(combosToBlock, newRule);
186 }
187
188 if (combosToUnblock != null && !combosToUnblock.isEmpty()) {
189 this.composite.enableCombos(combosToUnblock);
190 }
191 }
192
193
194
195
196
197
198
199
200
201 private void refreshPage() {
202 if (previewDataCache != null) {
203 composite.refreshFilePreview(previewDataCache);
204 }
205 if (sourceNodeRule != null) {
206 sourceNodeRule.clear();
207 }
208 if (targetNodeRule != null) {
209 targetNodeRule.clear();
210 }
211 if (dateRule != null) {
212 dateRule.clear();
213 }
214 refreshConversionPreview();
215 }
216
217 private void refreshPreviewDataCache(TabularData data, int previewSize) {
218 if (data == null) {
219 previewDataCache = null;
220 return;
221 }
222
223 previewDataCache = data.retrieveDataPreview(previewSize);
224 }
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240 public void setSourceNodeRule(String ruleId) {
241 ISourceNodeConversionRule rule = (ruleId == null) ? null
242 : (ISourceNodeConversionRule)getConversionRuleInstance(ruleId);
243 setSourceNodeRule(rule);
244 }
245
246
247
248
249
250
251
252 public void setSourceNodeRule(ISourceNodeConversionRule rule) {
253 this.sourceNodeRule = rule;
254 ((GeneralImportConverter)converter).setSourceNodeRule(rule);
255 }
256
257
258
259
260
261
262
263 public void setTargetNodeRule(String ruleId) {
264 ITargetNodeConversionRule rule = (ruleId == null) ? null
265 : (ITargetNodeConversionRule)getConversionRuleInstance(ruleId);
266 setTargetNodeRule(rule);
267 }
268
269
270
271
272
273
274
275 public void setTargetNodeRule(ITargetNodeConversionRule rule) {
276 this.targetNodeRule = rule;
277 ((GeneralImportConverter)converter).setTargetNodeRule(rule);
278 }
279
280
281
282
283
284
285
286 public void setDateRule(String ruleId) {
287 IDateConversionRule rule = (ruleId == null) ? null : (IDateConversionRule)getConversionRuleInstance(ruleId);
288 setDateRule(rule);
289 }
290
291
292
293
294
295
296
297 public void setDateRule(IDateConversionRule rule) {
298 this.dateRule = rule;
299 ((GeneralImportConverter)converter).setDateRule(rule);
300 }
301
302 public ISourceNodeConversionRule getSourceNodeRule() {
303 return sourceNodeRule;
304 }
305
306 public ITargetNodeConversionRule getTargetNodeRule() {
307 return targetNodeRule;
308 }
309
310 public IDateConversionRule getDateRule() {
311 return dateRule;
312 }
313
314 private int getPreviewSize(TabularData data) {
315 return (data.size() > AbstractWizardPageHelper.PREVIEW_ROWS_LIMIT_FOR_ANALYSIS) ? AbstractWizardPageHelper.PREVIEW_ROWS_LIMIT_FOR_ANALYSIS
316 : data.size();
317 }
318
319
320
321 }