Eclipseplugins
GeneratorDataContainer.java
1 package com.proalpha.pds.templates.data;
2 
3 import java.util.HashMap;
4 import java.util.List;
5 import java.util.Map;
6 import java.util.Map.Entry;
7 
8 import org.eclipse.core.resources.IFile;
9 import org.eclipse.core.resources.IFolder;
10 import org.eclipse.core.resources.ResourcesPlugin;
11 import org.eclipse.core.runtime.IStatus;
12 import org.eclipse.core.runtime.Path;
13 import org.eclipse.core.runtime.Status;
14 
15 import com.proalpha.pds.paconnector.PaProject;
16 import com.proalpha.pds.paconnector.parameter.StartparameterReader;
17 import com.proalpha.pds.paconnector.repository.RepositoryInformations;
18 import com.proalpha.pds.templates.Activator;
19 import com.proalpha.pds.templates.helper.FileSystemUtils;
20 import com.proalpha.pds.templates.jaxb.TtUserExits.TtUserExitsRow;
21 
22 class GeneratorDataContainer implements IGeneratorDataContainer {
23 
24  private Map<String, Object> wizardSettings;
25 
26  private IFile outputFile;
27 
28  private final StartparameterReader starparameterReader;
29  private final RepositoryInformations repositoryInformations;
30  private PaProject paProject;
31 
32  public PaProject getPaProject() {
33  return paProject;
34  }
35 
36  public GeneratorDataContainer(Map<String, Object> data, PaProject paProject,
37  StartparameterReader starparameterReader, RepositoryInformations repositoryInformations) {
38 
39  this.wizardSettings = new HashMap<>();
40  this.starparameterReader = starparameterReader;
41  this.repositoryInformations = repositoryInformations;
42 
43  this.paProject = paProject;
44 
45  initializeDataContainer(data);
46  }
47 
48  public String getCustomLevel() {
49  //first selection for settings are the pA project
50  return paProject.getCustomLevel();
51  }
52 
53  public Map<String, Object> getDataAsMap() {
54  return wizardSettings;
55  }
56 
57  public String getDescription() {
58  return getWizardSetting(GeneratorSettingsConstans.DESCRIPTION);
59  }
60 
61  public String getFileName() {
62  return getWizardSetting(GeneratorSettingsConstans.FILE_NAME);
63  }
64 
65  public String getObjectInfo() {
66  return getWizardSetting(GeneratorSettingsConstans.OBJECT_INFO);
67  }
68 
69  public String getParentObject() {
70  return getWizardSetting(GeneratorSettingsConstans.PARENT_OBJECT);
71  }
72 
73  public String getRelativePath() {
74  return getWizardSetting(GeneratorSettingsConstans.RELATIVE_PATH);
75  }
76 
77  public String getTableName() {
78  return getWizardSetting(GeneratorSettingsConstans.TABLE_NAME);
79  }
80 
81  public String getTriggerMode() {
82  return getWizardSetting(GeneratorSettingsConstans.TRIGGER_MODE);
83  }
84 
85  public String getVersion(){
86 
87  //first selection for settings are the pA project
88  //generator only confirmed if pa Available
89  return paProject.getVersion();
90  }
91 
92  private String getWizardSetting(String key) {
93  return (String) wizardSettings.get(key);
94  }
95 
96  private void initializeDataContainer(Map<String, Object> initializeData) {
97 
98  if ((initializeData != null) && (initializeData.size() > 0)) {
99 
100  wizardSettings.putAll(initializeData);
101 
102  // Der relative Pfad wird automatisch ermittelt, wenn der File Name
103  // gesetzt wird.
104  // Wird der File Name ueber die wizardSettings gesetzt muss hier der
105  // relative Pfad ermittelt werden.
106  if ((wizardSettings.containsKey(GeneratorSettingsConstans.FILE_NAME))
107  && (!wizardSettings.containsKey(GeneratorSettingsConstans.RELATIVE_PATH))) {
108  setFileNameDependentAttrbutes(getFileName());
109  }
110  }
111 
112  setSortCase(starparameterReader.getUserExitSortCase());
113 
114  }
115 
116  private void setFileNameDependentAttrbutes(String fileName) {
117  setRelativePath(fileName);
118  setProduct(repositoryInformations.getProductName(fileName));
119  setProductDescription(repositoryInformations.getProductDescription(fileName));
120  setModule(repositoryInformations.getModule(fileName));
121  setModuleDescription(repositoryInformations.getModuleDescription(fileName));
122  }
123 
124  public void setAuthor(String author) {
125  setWizardSetting(GeneratorSettingsConstans.AUTHOR, author);
126  }
127 
128  public void setBALPTemplateList(List<String> balpTemplateList) {
129  wizardSettings.put("baltTemplateList", balpTemplateList);
130  }
131 
132  public void setCompanyInclude(String companyInclude) {
133  setWizardSetting(GeneratorSettingsConstans.COMPANY_INCLUDE, companyInclude);
134  }
135 
136  public void setDescription(String description) {
137  setWizardSetting(GeneratorSettingsConstans.DESCRIPTION, description);
138  }
139 
140  public void setFileName(String fileName) {
141  setWizardSetting(GeneratorSettingsConstans.FILE_NAME, fileName);
142  setFileNameDependentAttrbutes(fileName);
143  }
144 
145  public void setHasChangeLogEnglish(Boolean hasChangeLogEnglish) {
146  setWizardSetting(GeneratorSettingsConstans.CHANGE_LOG_ENGLISH, String.valueOf(hasChangeLogEnglish));
147  }
148 
149  public void setHasChangeLogGerman(Boolean hasChangeLogGerman) {
150  setWizardSetting(GeneratorSettingsConstans.CHANGE_LOG_GERMAN, String.valueOf(hasChangeLogGerman));
151  }
152 
153  public void setHasClassicLngTable(Boolean hasClassicLngTable) {
154  setWizardSetting(GeneratorSettingsConstans.HAS_CLASSIC_LNG_TABLE, String.valueOf(hasClassicLngTable));
155  }
156 
157  public void setHasCompanyField(Boolean hasCompanyField) {
158  setWizardSetting(GeneratorSettingsConstans.HAS_COMPANY, String.valueOf(hasCompanyField));
159  }
160 
161  public void setIsObjectID(Boolean isObjectID) {
162  setWizardSetting(GeneratorSettingsConstans.Object_ID, String.valueOf(isObjectID));
163  }
164 
165  public void setMainClass(String mainClass) {
166  setWizardSetting(GeneratorSettingsConstans.MAIN_CLASS, mainClass);
167  }
168 
169  private void setModule(String module) {
170  setWizardSetting(GeneratorSettingsConstans.MODULE, module);
171  }
172 
173  private void setModuleDescription(String moduleDescription) {
174  setWizardSetting(GeneratorSettingsConstans.MODULE_DESCRIPTION, moduleDescription);
175  }
176 
177  public void setParentObject(String parentClassName) {
178  setWizardSetting(GeneratorSettingsConstans.PARENT_OBJECT, parentClassName);
179  }
180 
181  private void setProduct(String productName) {
182  setWizardSetting(GeneratorSettingsConstans.PRODUCT, productName);
183  }
184 
185  private void setProductDescription(String productDescription) {
186  setWizardSetting(GeneratorSettingsConstans.PRODUCT_DESCRIPTION, productDescription);
187  }
188 
189  public void setQualifiedClassName(String qualifiedClassName) {
190  setWizardSetting(GeneratorSettingsConstans.QUALIFIED_CLASS_NAME, qualifiedClassName);
191  }
192 
193  public void setQualifiedClassParentClassName(String qualifiedParentClassName) {
194  setWizardSetting(GeneratorSettingsConstans.QUALIFIED_PARENT_CLASS_NAME, qualifiedParentClassName);
195  }
196 
197  private void setRelativePath(String fileName) {
198  String relativePath = repositoryInformations.getRelativePath(fileName);
199  setWizardSetting(GeneratorSettingsConstans.RELATIVE_PATH, relativePath);
200  }
201 
202  private void setShortcut(String shortcut) {
203  setWizardSetting(GeneratorSettingsConstans.SHORTCUT, shortcut);
204  }
205 
206  private void setSortCase(String sort) {
207  setWizardSetting(GeneratorSettingsConstans.SORT, sort);
208  }
209 
210  public void setUserExitFiles(List<String> userExitList) {
211  wizardSettings.put("userExitList", userExitList);
212  }
213 
214  public void setUserExits(List<TtUserExitsRow> userExits) {
215  wizardSettings.put("UserExits", userExits);
216  }
217 
218  public void setVersion(String proALPHAVersion) {
219  setWizardSetting(GeneratorSettingsConstans.VERSION, proALPHAVersion);
220  }
221 
222  private void setWizardSetting(String key, String value) {
223  wizardSettings.put(key, value);
224  }
225 
226  public void setXBaseName(String xbaseName) {
227  setWizardSetting(GeneratorSettingsConstans.XBASE_NAME, xbaseName);
228  }
229 
230  public void setOutputFile(IFile file) {
231  outputFile = file;
232  }
233 
234  public IFile getOutputFile() throws Exception {
235 
236  if (outputFile == null) {
237  String container = getContainer();
238  IFolder outputFolder = null;
239 
240  if (container != null) {
241  outputFolder = ResourcesPlugin.getWorkspace().getRoot().getFolder(new Path(container));
242  }
243 
244  if (outputFolder == null) {
245  outputFolder = starparameterReader.getWorkingDirectory();
246  }
247 
248  outputFile = FileSystemUtils.createFileInWorkingDirectory(outputFolder, getRelativePath(), getFileName());
249  }
250  return outputFile;
251 
252  }
253 
254  private String getContainer() {
255  return getWizardSetting(GeneratorSettingsConstans.CONTAINER_NAME);
256  }
257 
258  public Boolean isGenerationConfirmed() {
259 
260  try {
261  return this.paProject.isAvailable();
262  } catch (Exception e) {
263 
264  String message = (e.getMessage().length() > 0) ? e.getMessage() : "Could not confirm generation.";
265 
266  IStatus status = new Status(IStatus.ERROR, Activator.PLUGIN_ID, message);
267  Activator.getDefault().getLog().log(status);
268 
269  return Boolean.FALSE;
270  }
271  }
272 
273  public void setCustomLevel(String customLevel) {
274  setWizardSetting(GeneratorSettingsConstans.CUSTOM_LEVEL, customLevel);
275  }
276 
277  public void setObjectInfo(String objectInfo) {
278  setWizardSetting(GeneratorSettingsConstans.OBJECT_INFO, objectInfo);
279  }
280 
281  public Map<String, Object> getWizardSettings() {
282  return wizardSettings;
283  }
284 
285  public StartparameterReader getStarparameterReader() {
286  return starparameterReader;
287  }
288 
289  public RepositoryInformations getRepositoryInformations() {
290  return repositoryInformations;
291  }
292 
293  public void setTriggerMode(String triggerMode) {
294  setWizardSetting(GeneratorSettingsConstans.TRIGGER_MODE, triggerMode);
295  }
296 
297  public void setQualifiedClassStandardClassName(String qualifiedStandardClassName) {
298  setWizardSetting(GeneratorSettingsConstans.QUALIFIED_STANDARD_CLASS_NAME, qualifiedStandardClassName);
299  }
300 
301  public void setTableName(String tableName) {
302  setWizardSetting(GeneratorSettingsConstans.TABLE_NAME, tableName);
303  }
304 
305  public Map<String, Object> cloneWizardSettings() {
306  HashMap<String, Object> exitFileGeneratorSettings = new HashMap<String, Object>();
307 
308  for (Entry<String, Object> entry : wizardSettings.entrySet()) {
309  exitFileGeneratorSettings.put(entry.getKey(), entry.getValue());
310  }
311 
312  return exitFileGeneratorSettings;
313  }
314 
315  public String getSortCase() {
316  return getWizardSetting(GeneratorSettingsConstans.SORT);
317  }
318 
319  @Override
320  public void setHasChangeLogDateTime(Boolean hasDateTimeFields) {
321  setWizardSetting(GeneratorSettingsConstans.CHANGE_LOG_DATETIME, String.valueOf(hasDateTimeFields));
322 
323  }
324 
325 }