Eclipseplugins
DatasetDefinitionFilePropertyPage.java
1 package com.proalpha.pds.ui.wizards.wizardpages;
2 
3 import java.net.URL;
4 import java.util.Collections;
5 import java.util.HashMap;
6 import java.util.LinkedHashMap;
7 
8 import org.eclipse.core.runtime.FileLocator;
9 import org.eclipse.core.runtime.Path;
10 import org.eclipse.core.runtime.Platform;
11 import org.eclipse.jface.dialogs.IDialogPage;
12 import org.eclipse.jface.resource.ImageDescriptor;
13 import org.eclipse.jface.window.Window;
14 import org.eclipse.jface.wizard.WizardPage;
15 import org.eclipse.swt.SWT;
16 import org.eclipse.swt.events.ModifyEvent;
17 import org.eclipse.swt.events.ModifyListener;
18 import org.eclipse.swt.events.SelectionAdapter;
19 import org.eclipse.swt.events.SelectionEvent;
20 import org.eclipse.swt.layout.GridData;
21 import org.eclipse.swt.layout.GridLayout;
22 import org.eclipse.swt.widgets.Button;
23 import org.eclipse.swt.widgets.Composite;
24 import org.eclipse.swt.widgets.Label;
25 import org.eclipse.swt.widgets.Text;
26 
27 import com.openedge.pdt.project.ui.ResourceSelectionDialog;
28 import com.proalpha.pds.paconnector.repository.RepositoryDelegate;
29 import com.proalpha.pds.paconnector.repository.RepositoryInformations;
30 import com.proalpha.pds.templates.data.GeneratorSettingsConstans;
31 import com.proalpha.pds.ui.Activator;
32 
39 public class DatasetDefinitionFilePropertyPage extends WizardPage implements IpaWizardPage {
40 
41  private Text businessEntityObjectText;
42 
43  private Button masterDataValidationToggle;
44 
45  private Text businessEntityProxyText;
46 
47  private Button createRepositoryEntryToggle;
48 
49  private Button getChangesToggle;
50 
51  private Button readOnlyToggle;
52 
53  private Button recursiveStructureToggle;
54 
55  private Text dataAccessObjectText;
56 
57  private Text dsNameText;
58 
59  private WizardMainPage wizardMainPage;
60 
61  private RepositoryInformations repositoryInformations;
62 
68  public DatasetDefinitionFilePropertyPage(LinkedHashMap<String, WizardMainPageConfiguration> config,
69  RepositoryDelegate repositoryDelegate, RepositoryInformations repositoryInformations) {
70  super("DatasetDefinitionFilePropertyPage");
71 
72  URL url = FileLocator.find(Platform.getBundle(Activator.PLUGIN_ID), new Path("icons/pA-logox72.png"),
73  Collections.emptyMap());
74 
75  setImageDescriptor(ImageDescriptor.createFromURL(url));
76  this.repositoryInformations = repositoryInformations;
77  WizardMainPageConfiguration configuration = config.entrySet().iterator().next().getValue();
78  setTitle(configuration.getWizardTitle());
79  setDescription(configuration.getWizardDescription());
80 
81  repositoryDelegate.fillRepositoryCache();
82 
83  }
84 
88  public void createControl(Composite parent) {
89  Label label;
90  Button btnBEO;
91  Button btnBEProxy;
92  Button btnDAO;
93 
94  Composite container = new Composite(parent, SWT.NULL);
95  GridLayout layout = new GridLayout();
96  container.setLayout(layout);
97  layout.numColumns = 3;
98 
99  label = new Label(container, SWT.NONE);
100  label.setText("Dataset Name:");
101  GridData ttNameTextLData = new GridData();
102  ttNameTextLData.grabExcessHorizontalSpace = true;
103  ttNameTextLData.horizontalAlignment = GridData.FILL;
104  ttNameTextLData.horizontalSpan = 2;
105  dsNameText = new Text(container, SWT.SINGLE | SWT.BORDER);
106  dsNameText.setLayoutData(ttNameTextLData);
107  dsNameText.setToolTipText("Dataset Name");
108  dsNameText.addModifyListener(new ModifyListener() {
109  public void modifyText(ModifyEvent e) {
110  dialogChanged();
111  }
112  });
113  label = new Label(container, SWT.NONE);
114  label.setText("Business Entity Object:");
115  GridData businessEntityObjectTextLData = new GridData();
116  businessEntityObjectTextLData.grabExcessHorizontalSpace = true;
117  businessEntityObjectTextLData.horizontalAlignment = GridData.FILL;
118  businessEntityObjectText = new Text(container, SWT.SINGLE | SWT.BORDER);
119  businessEntityObjectText.setLayoutData(businessEntityObjectTextLData);
120  businessEntityObjectText.addModifyListener(new ModifyListener() {
121  public void modifyText(ModifyEvent e) {
122  dialogChanged();
123  }
124  });
125  btnBEO = new Button(container, SWT.PUSH | SWT.CENTER);
126  GridData btnBEOLData = new GridData();
127  btnBEOLData.grabExcessHorizontalSpace = true;
128  btnBEOLData.horizontalAlignment = GridData.FILL;
129  btnBEO.setLayoutData(btnBEOLData);
130  btnBEO.setText("Browse");
131  btnBEO.addSelectionListener(new SelectionAdapter() {
132  @Override
133  public void widgetSelected(SelectionEvent e) {
134  handleBrowse(businessEntityObjectText);
135  }
136  });
137  label = new Label(container, SWT.NONE);
138  label.setText("Data Access Object:");
139  GridData daoTextLData = new GridData();
140  daoTextLData.horizontalAlignment = GridData.FILL;
141  daoTextLData.grabExcessHorizontalSpace = true;
142  dataAccessObjectText = new Text(container, SWT.SINGLE | SWT.BORDER);
143  dataAccessObjectText.setLayoutData(daoTextLData);
144  dataAccessObjectText.addModifyListener(new ModifyListener() {
145  public void modifyText(ModifyEvent e) {
146  dialogChanged();
147  }
148  });
149  btnDAO = new Button(container, SWT.PUSH | SWT.CENTER);
150  GridData btnDAOLData = new GridData();
151  btnDAOLData.horizontalAlignment = GridData.FILL;
152  btnDAOLData.grabExcessHorizontalSpace = true;
153  btnDAO.setLayoutData(btnDAOLData);
154  btnDAO.setText("Browse");
155  btnDAO.addSelectionListener(new SelectionAdapter() {
156  @Override
157  public void widgetSelected(SelectionEvent e) {
158  handleBrowse(dataAccessObjectText);
159  }
160  });
161  label = new Label(container, SWT.NONE);
162  label.setText("Business Entity Proxy:");
163  GridData businessEntityProxyTextLData = new GridData();
164  businessEntityProxyTextLData.grabExcessHorizontalSpace = true;
165  businessEntityProxyTextLData.horizontalAlignment = GridData.FILL;
166  businessEntityProxyText = new Text(container, SWT.SINGLE | SWT.BORDER);
167  businessEntityProxyText.setLayoutData(businessEntityProxyTextLData);
168  businessEntityProxyText.addModifyListener(new ModifyListener() {
169  public void modifyText(ModifyEvent e) {
170  dialogChanged();
171  }
172  });
173  btnBEProxy = new Button(container, SWT.PUSH | SWT.CENTER);
174  btnBEProxy.setText("Browse");
175  GridData button1LData = new GridData();
176  button1LData.horizontalAlignment = GridData.FILL;
177  button1LData.grabExcessHorizontalSpace = true;
178  button1LData.heightHint = 23;
179  btnBEProxy.setLayoutData(button1LData);
180  btnBEProxy.addSelectionListener(new SelectionAdapter() {
181  @Override
182  public void widgetSelected(SelectionEvent evt) {
183  handleBrowse(businessEntityProxyText);
184  }
185  });
186  label = new Label(container, SWT.NONE);
187  masterDataValidationToggle = new Button(container, SWT.CHECK | SWT.LEFT);
188  GridData masterDataValidationToggleLData = new GridData();
189  masterDataValidationToggleLData.horizontalAlignment = GridData.FILL;
190  masterDataValidationToggleLData.horizontalSpan = 2;
191  masterDataValidationToggleLData.grabExcessHorizontalSpace = true;
192  masterDataValidationToggle.setLayoutData(masterDataValidationToggleLData);
193  masterDataValidationToggle.setText("Master Data Validation");
194  label = new Label(container, SWT.NONE);
195  recursiveStructureToggle = new Button(container, SWT.CHECK | SWT.LEFT);
196  GridData recursiveStructureToggleLData = new GridData();
197  recursiveStructureToggleLData.horizontalAlignment = GridData.FILL;
198  recursiveStructureToggleLData.grabExcessHorizontalSpace = true;
199  recursiveStructureToggleLData.horizontalSpan = 2;
200  recursiveStructureToggle.setLayoutData(recursiveStructureToggleLData);
201  recursiveStructureToggle.setText("Recursive Structure");
202  label = new Label(container, SWT.NONE);
203  readOnlyToggle = new Button(container, SWT.CHECK | SWT.LEFT);
204  GridData readOnlyToggleLData = new GridData();
205  readOnlyToggleLData.horizontalAlignment = GridData.FILL;
206  readOnlyToggleLData.grabExcessHorizontalSpace = true;
207  readOnlyToggleLData.horizontalSpan = 2;
208  readOnlyToggle.setLayoutData(readOnlyToggleLData);
209  readOnlyToggle.setText("Read Only");
210  label = new Label(container, SWT.NONE);
211  getChangesToggle = new Button(container, SWT.CHECK | SWT.LEFT);
212  GridData getChangesToggleLData = new GridData();
213  getChangesToggleLData.horizontalAlignment = GridData.FILL;
214  getChangesToggleLData.grabExcessHorizontalSpace = true;
215  getChangesToggleLData.horizontalSpan = 2;
216  getChangesToggle.setLayoutData(getChangesToggleLData);
217  getChangesToggle.setText("Get Changes");
218  label = new Label(container, SWT.NONE);
219  createRepositoryEntryToggle = new Button(container, SWT.CHECK | SWT.LEFT);
220  GridData createRepositoryEntryToggleLData = new GridData();
221  createRepositoryEntryToggleLData.horizontalSpan = 2;
222  createRepositoryEntryToggle.setLayoutData(createRepositoryEntryToggleLData);
223  createRepositoryEntryToggle.setText("Create Repository Entry");
224  initialize();
225  dialogChanged();
226  setControl(container);
227  }
228 
229  private void handleBrowse(Text textObject) {
230 
231  ResourceSelectionDialog dialog = new ResourceSelectionDialog(getShell(), "Please select Object");
232  dialog.open();
233  if (dialog.getReturnCode() == Window.OK) {
234  textObject.setText(dialog.getResource().getName());
235  }
236  }
237 
242  private void dialogChanged() {
243 
244  String dsName = dsNameText.getText();
245  String beo = businessEntityObjectText.getText();
246  String dao = dataAccessObjectText.getText();
247  String bep = businessEntityProxyText.getText();
248 
253  if (!(dsName.startsWith("ds"))) {
254  updateStatus("Dataset Name should begin with 'ds'");
255  return;
256  }
257 
262  if (beo.equals("")) {
263  updateStatus("Business Entity Object is empty");
264  return;
265  }
266 
267  if (!repositoryInformations.exitsInstanceInRepository(beo)) {
268  updateStatus("Business Entity Object is unknown to Repository Manager");
269  return;
270  }
271 
272  if (!(repositoryInformations.isInstanceOfClass(beo, "Business Entity Object").equals("yes"))) {
273  updateStatus("Business Entity Object should be member of Class \"Business Entity Object\"");
274  return;
275  }
276 
283  if (dao.equals("")) {
284  String daoTemp = beo.substring(0, 2) + "j" + beo.substring(3);
285  if (repositoryInformations.exitsInstanceInRepository(daoTemp)) {
286  dataAccessObjectText.setText(daoTemp);
287  dao = dataAccessObjectText.getText();
288  }
289  }
290 
295  if (dao.equals("")) {
296  updateStatus("Data Access Object is empty");
297  return;
298  }
299 
300  if (!repositoryInformations.exitsInstanceInRepository(dao)) {
301  updateStatus("Data Access Object is unknown to Repository Manager");
302  return;
303  }
304 
305  if (!(repositoryInformations.isInstanceOfClass(dao, "Data Access Object")).equals("yes")) {
306  updateStatus("Data Access Object should be member of Class \"Data Access Object\"");
307  return;
308  }
309 
315  if (!bep.equals("")) {
316  if (!repositoryInformations.exitsInstanceInRepository(bep)) {
317  updateStatus("Business Entity Proxy is unknown to Repository Manager");
318  return;
319  }
320 
321  if (!(repositoryInformations.isInstanceOfClass(bep, "Business Entity Proxy")).equals("yes")) {
322  updateStatus("Business Entity Proxy should be member of Class \"Business Entity Proxy\"");
323  return;
324  }
325 
326  }
327 
332  wizardMainPage.setFileDescriptionText("Definition of Dataset " + dsName);
333 
334  updateStatus(null);
335  }
336 
342  private void updateStatus(String message) {
343  setErrorMessage(message);
344  setPageComplete(message == null);
345  }
346 
350  private void initialize() {
351  dsNameText.setText("ds");
352  masterDataValidationToggle.setSelection(true);
353  readOnlyToggle.setSelection(false);
354  recursiveStructureToggle.setSelection(false);
355  getChangesToggle.setSelection(true);
356  createRepositoryEntryToggle.setSelection(true);
357  recursiveStructureToggle.setVisible(false);
358  }
359 
360  public void setWizardMainPage(WizardMainPage wizardMainPage) {
361  this.wizardMainPage = wizardMainPage;
362  }
363 
364  /*
365  * (non-Javadoc)
366  *
367  * @see
368  * com.proalpha.java.oea.plugins.templates.wizards.wizardpages.IpaWizardPage
369  * #getSettings(java.util.HashMap)
370  */
371  public HashMap<String, Object> getSettings() {
372  HashMap<String, Object> wizardSettings = new HashMap<>();
373 
374  wizardSettings.put(GeneratorSettingsConstans.DATASET_NAME, this.getDSName());
375  wizardSettings.put(GeneratorSettingsConstans.BUSINESS_ENTITY_OBJECT, this.getBusinessEntityObject());
376  wizardSettings.put(GeneratorSettingsConstans.DATA_ACCESS_OBJECT, this.getDataAccessObject());
377  wizardSettings.put(GeneratorSettingsConstans.BUSINESS_ENTITY_PROXY, this.getBusinessEntityProxy());
378  wizardSettings.put(GeneratorSettingsConstans.MASTER_DATA_VALIDATION,
379  (this.getMasterDataValidation() ? "true" : "false"));
380  wizardSettings.put("RecursiveStructure", (this.getRecursiveStructure() ? "true" : "false"));
381  wizardSettings.put(GeneratorSettingsConstans.READ_ONLY, (this.getReadOnly() ? "true" : "false"));
382  wizardSettings.put(GeneratorSettingsConstans.GET_CHANGES, (this.getGetChanges() ? "true" : "false"));
383 
384  return wizardSettings;
385  }
386 
387  private String getBusinessEntityProxy() {
388 
389  if (this.businessEntityProxyText.getText().equals("")) {
390  return "";
391  }
392 
393  return repositoryInformations.getRelativePath(this.businessEntityProxyText.getText()) + "/"
394  + this.businessEntityProxyText.getText();
395  }
396 
397  private boolean getGetChanges() {
398  return this.getChangesToggle.getSelection();
399  }
400 
401  private boolean getReadOnly() {
402  return this.readOnlyToggle.getSelection();
403  }
404 
405  private boolean getRecursiveStructure() {
406  return this.recursiveStructureToggle.getSelection();
407  }
408 
409  private boolean getMasterDataValidation() {
410  return this.masterDataValidationToggle.getSelection();
411  }
412 
413  private String getDataAccessObject() {
414  return repositoryInformations.getRelativePath(this.dataAccessObjectText.getText()) + "/"
415  + this.dataAccessObjectText.getText();
416  }
417 
418  private String getBusinessEntityObject() {
419  return repositoryInformations.getRelativePath(this.businessEntityObjectText.getText()) + "/"
420  + this.businessEntityObjectText.getText();
421  }
422 
423  private String getDSName() {
424  return dsNameText.getText();
425  }
426 
427  public boolean getCreateDataset() {
428  return this.createRepositoryEntryToggle.getSelection();
429  }
430 }
DatasetDefinitionFilePropertyPage(LinkedHashMap< String, WizardMainPageConfiguration > config, RepositoryDelegate repositoryDelegate, RepositoryInformations repositoryInformations)