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.strategy;
19
20 import org.apache.log4j.Logger;
21 import org.eclipse.jface.wizard.Wizard;
22
23 import pl.edu.agh.cast.importer.base.template.ImportTemplateManager;
24 import pl.edu.agh.cast.importer.base.template.exception.TemplateException;
25 import pl.edu.agh.cast.importer.base.tokenizer.csv.CsvTokenizer;
26 import pl.edu.agh.cast.importer.base.tokenizer.fixedwidth.FixedWidthTokenizer;
27 import pl.edu.agh.cast.importer.wizard.Activator;
28 import pl.edu.agh.cast.importer.wizard.ImporterWizard;
29 import pl.edu.agh.cast.importer.wizard.page.AbstractConversionRulesSelectionPage;
30 import pl.edu.agh.cast.importer.wizard.page.AbstractImportWizardPage;
31 import pl.edu.agh.cast.importer.wizard.page.AnalyzersSelectionPage;
32 import pl.edu.agh.cast.importer.wizard.page.DelimiterSelectionPage;
33 import pl.edu.agh.cast.importer.wizard.page.FileParamsSelectionPage;
34 import pl.edu.agh.cast.importer.wizard.page.FixedWidthColumnSelectionPage;
35 import pl.edu.agh.cast.importer.wizard.page.InitImportPage;
36 import pl.edu.agh.cast.importer.wizard.page.TemplatePropertiesPage;
37 import pl.edu.agh.cast.importer.wizard.page.ValidationPage;
38
39
40
41
42
43
44
45 public abstract class AbstractStepByStepImportStrategy implements IImportWizardStrategy {
46
47
48
49 protected static final Logger LOG = Activator.getLogger();
50
51 private FileParamsSelectionPage fileParamsSelectionPage;
52
53 private DelimiterSelectionPage delimiterSelectionPage;
54
55 private FixedWidthColumnSelectionPage fixedWidthColumnSelectionPage;
56
57 private AnalyzersSelectionPage analyzersSelectionPage;
58
59 private ValidationPage validationPage;
60
61 private TemplatePropertiesPage templatePage;
62
63
64
65
66 protected AbstractConversionRulesSelectionPage conversionRulesSelectionPage;
67
68
69
70
71 protected ImporterWizard importerWizard;
72
73
74
75
76
77
78
79 @Override
80 public AbstractImportWizardPage getNextPage(AbstractImportWizardPage current) {
81 current.refreshImportData();
82
83 AbstractImportWizardPage resultPage;
84
85 if (current instanceof InitImportPage) {
86 resultPage = fileParamsSelectionPage;
87 } else if (current == fileParamsSelectionPage) {
88 if (fileParamsSelectionPage.getTokenizer() instanceof CsvTokenizer) {
89 resultPage = delimiterSelectionPage;
90 } else if (fileParamsSelectionPage.getTokenizer() instanceof FixedWidthTokenizer) {
91 resultPage = fixedWidthColumnSelectionPage;
92 } else {
93 resultPage = analyzersSelectionPage;
94 }
95 } else if (current == delimiterSelectionPage) {
96 resultPage = analyzersSelectionPage;
97 } else if (current == fixedWidthColumnSelectionPage) {
98 resultPage = analyzersSelectionPage;
99 } else if (current == analyzersSelectionPage) {
100 resultPage = validationPage;
101 } else if (current == validationPage) {
102 conversionRulesSelectionPage = current.getImportWizard().getCurrConversionRulesPage();
103 current.getImportWizard().addPage(conversionRulesSelectionPage);
104 resultPage = conversionRulesSelectionPage;
105 } else if (current == conversionRulesSelectionPage) {
106 resultPage = templatePage;
107 } else {
108 throw new IllegalArgumentException("Not expected wizard (next) page:" + current.getName());
109 }
110
111 resultPage.initPage();
112
113 return resultPage;
114 }
115
116
117
118
119
120
121 @Override
122 public void addPages(Wizard wizard) {
123 if (!(wizard instanceof ImporterWizard)) {
124 throw new IllegalArgumentException("Cannot apply strategy to wizard " +
125 "different than ImporterWizard instance");
126 }
127 importerWizard = (ImporterWizard)wizard;
128 fileParamsSelectionPage = new FileParamsSelectionPage();
129 delimiterSelectionPage = new DelimiterSelectionPage();
130 fixedWidthColumnSelectionPage = new FixedWidthColumnSelectionPage();
131 analyzersSelectionPage = new AnalyzersSelectionPage();
132 validationPage = new ValidationPage();
133 templatePage = new TemplatePropertiesPage();
134
135 wizard.addPage(fileParamsSelectionPage);
136 wizard.addPage(delimiterSelectionPage);
137 wizard.addPage(fixedWidthColumnSelectionPage);
138 wizard.addPage(analyzersSelectionPage);
139 wizard.addPage(validationPage);
140 wizard.addPage(templatePage);
141 }
142
143
144
145
146
147
148 @Override
149 public boolean canFinishWizard() {
150 if (conversionRulesSelectionPage != null && conversionRulesSelectionPage.isCurrentWizardPage()
151 && !conversionRulesSelectionPage.isSaveTemplateSelected() && conversionRulesSelectionPage.canFinish()) {
152 return true;
153 }
154 if (templatePage != null && templatePage.isCurrentWizardPage() && templatePage.isPageComplete()) {
155 return true;
156 }
157
158 return false;
159 }
160
161 protected boolean saveTemplate() {
162 try {
163 final ImportTemplateManager manager = pl.edu.agh.cast.importer.base.Activator.getDefault()
164 .getTemplateManager();
165 manager.saveTemplate(manager.createTemplateBasedOnImportProcess(conversionRulesSelectionPage
166 .getImportProcess(), templatePage.getTemplateName(), templatePage.getTemplateDescription()), null);
167 } catch (TemplateException e) {
168 LOG.error(e.getMessage(), e);
169 return false;
170 }
171 return true;
172 }
173 }