Updates to preference and build
modified preferences to support multiple filters
modified pom target builds
diff --git a/cda/plugins/org.eclipse.mdht.cda.xml.ui/src/org/eclipse/mdht/cda/xml/ui/handlers/GenerateCDADataHandler.java b/cda/plugins/org.eclipse.mdht.cda.xml.ui/src/org/eclipse/mdht/cda/xml/ui/handlers/GenerateCDADataHandler.java
index 0a6dcff..75ed50c 100644
--- a/cda/plugins/org.eclipse.mdht.cda.xml.ui/src/org/eclipse/mdht/cda/xml/ui/handlers/GenerateCDADataHandler.java
+++ b/cda/plugins/org.eclipse.mdht.cda.xml.ui/src/org/eclipse/mdht/cda/xml/ui/handlers/GenerateCDADataHandler.java
@@ -30,7 +30,6 @@
import java.nio.file.Files;
import java.nio.file.Paths;
import java.util.ArrayList;
-import java.util.Arrays;
import java.util.Collection;
import java.util.Collections;
import java.util.Comparator;
@@ -304,7 +303,9 @@
static HashMap<String, String> organizations = new HashMap<String, String>();
- static String preferenceFilters;
+ static Map<String, List<String>> preferenceFilters = new HashMap<String, List<String>>();
+
+ static String activeFilter;
static String fileNameFilters;
@@ -474,8 +475,13 @@
omitUnits = org.eclipse.mdht.uml.cda.ui.internal.Activator.getDefault().getPreferenceStore().getBoolean(
MDHTPreferences.OMIT_UNITS_STORE_VALUE);
- preferenceFilters = org.eclipse.mdht.uml.cda.ui.internal.Activator.getDefault().getPreferenceStore().getString(
- MDHTPreferences.CDA_REPORT_DEFAULT_FILTER);
+ MDHTPreferences.filtersFromString(
+ org.eclipse.mdht.uml.cda.ui.internal.Activator.getDefault().getPreferenceStore().getString(
+ MDHTPreferences.CDA_REPORT_FILTERS),
+ preferenceFilters);
+
+ activeFilter = org.eclipse.mdht.uml.cda.ui.internal.Activator.getDefault().getPreferenceStore().getString(
+ MDHTPreferences.CDA_REPORT_ACTIVE_FILTER);
fileNameFilters = org.eclipse.mdht.uml.cda.ui.internal.Activator.getDefault().getPreferenceStore().getString(
MDHTPreferences.CDA_REPORT_FILE_NAME_FILTERS);
@@ -559,16 +565,14 @@
if (filterSelectionDialog.open() != Window.OK) {
return null;
}
- // return the selection
for (Object object : filterSelectionDialog.getResult()) {
theSections.add((EClass) object);
}
- } else if (filterOption == null && !StringUtils.isEmpty(preferenceFilters)) {
+ } else if (filterOption == null && preferenceFilters.containsKey(activeFilter)) {
getFilterHash(theSectionCache);
- List<String> result = Arrays.asList(preferenceFilters.split("\\s*,\\s*"));
- for (String r : result) {
+ for (String r : preferenceFilters.get(activeFilter)) {
if (theSectionCache.containsKey(ConsolPackage.eINSTANCE.getEClassifier(r))) {
theSections.add((EClass) ConsolPackage.eINSTANCE.getEClassifier(r));
}
diff --git a/cda/plugins/org.eclipse.mdht.uml.cda.ui/src/org/eclipse/mdht/uml/cda/ui/editors/MDHTPreferences.java b/cda/plugins/org.eclipse.mdht.uml.cda.ui/src/org/eclipse/mdht/uml/cda/ui/editors/MDHTPreferences.java
index fc47833..2a0d2d2 100644
--- a/cda/plugins/org.eclipse.mdht.uml.cda.ui/src/org/eclipse/mdht/uml/cda/ui/editors/MDHTPreferences.java
+++ b/cda/plugins/org.eclipse.mdht.uml.cda.ui/src/org/eclipse/mdht/uml/cda/ui/editors/MDHTPreferences.java
@@ -18,7 +18,9 @@
import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
+import java.util.Map;
import java.util.Set;
+import java.util.stream.Collectors;
import org.apache.commons.lang.StringUtils;
import org.eclipse.emf.common.util.TreeIterator;
@@ -26,13 +28,19 @@
import org.eclipse.emf.ecore.EObject;
import org.eclipse.emf.ecore.EPackage;
import org.eclipse.jface.dialogs.IDialogConstants;
+import org.eclipse.jface.dialogs.IInputValidator;
+import org.eclipse.jface.dialogs.InputDialog;
import org.eclipse.jface.preference.IPreferenceStore;
import org.eclipse.jface.preference.PreferencePage;
import org.eclipse.jface.viewers.ILabelProvider;
import org.eclipse.jface.viewers.ILabelProviderListener;
import org.eclipse.jface.window.Window;
import org.eclipse.mdht.uml.cda.ui.internal.Activator;
+import org.eclipse.mdht.uml.cda.ui.internal.Logger;
import org.eclipse.swt.SWT;
+import org.eclipse.swt.custom.CCombo;
+import org.eclipse.swt.events.SelectionAdapter;
+import org.eclipse.swt.events.SelectionEvent;
import org.eclipse.swt.graphics.Image;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.layout.GridLayout;
@@ -86,7 +94,9 @@
public static String OMIT_VALIDATION_STORE_VALUE = "OmitValidationStoreValue";
- public static String CDA_REPORT_DEFAULT_FILTER = "CDAReportDefaultFilter";
+ public static String CDA_REPORT_FILTERS = "CDAReportDefaultFilter";
+
+ public static String CDA_REPORT_ACTIVE_FILTER = "CDAReportActiveFilter";
public static final String CDA_REPORT_FILE_NAME_FILTERS = "fileNameFilter";
@@ -102,6 +112,7 @@
private static String OMIT_VALIDATION_CHECK_BOX_TOOLTIP = "Do not include DCDA Validation in reports";
+ // org.eclipse.ui.dialogs.EditorSelectionDialog
/**
* FilterListSelectionDialog
* The dialog buttons were not easily accessible to change the text for OK and Cancel
@@ -148,11 +159,15 @@
private Text cdaReportFilterText;
+ private CCombo cdaReportFilterCombo;
+
private Text cdaFileFiltersText;
private Button omitValidationCheckBox;
- final ArrayList<String> cdaReportfilters = new ArrayList<String>();
+ String cdaReportActivefilter;
+
+ Map<String, List<String>> cdaReportfilters = new HashMap<String, List<String>>();
/**
* Creates an new checkbox instance and sets the default
@@ -175,6 +190,26 @@
FilterListSelectionDialog filterSelectionDialog = null;
+ private Button setFilterButton;
+
+ private Button createAddFilterButton(Composite group, String label, String toolTip) {
+ Button button = new Button(group, SWT.PUSH | SWT.LEFT);
+ button.setText(label);
+ button.setToolTipText(toolTip);
+ GridData data = new GridData();
+ button.setLayoutData(data);
+
+ button.addListener(SWT.Selection, new Listener() {
+
+ @Override
+ public void handleEvent(Event event) {
+ addFilterName("<<FilterName>>", cdaReportfilters.keySet());
+ }
+ });
+ return button;
+
+ }
+
private Button createFilterButton(Composite group, String label, String toolTip) {
ILabelProvider lp = new ILabelProvider() {
@@ -238,12 +273,6 @@
filterSelectionDialog.setMultipleSelection(true);
- String currentSelections = cdaReportFilterText.getText();
-
- // currentSelections.split("\\s*,\\s*"));
-
- // filterSelectionDialog.setInitialElementSelections(selectedElements);
-
Button button = new Button(group, SWT.PUSH | SWT.LEFT);
button.setText(label);
button.setToolTipText(toolTip);
@@ -269,13 +298,19 @@
switch (filterSelectionDialog.open()) {
case Window.OK:
- for (Object object : filterSelectionDialog.getResult()) {
- cdaReportfilters.add(((EClass) object).getName());
+ if (cdaReportfilters.containsKey(cdaReportActivefilter)) {
+ cdaReportfilters.get(cdaReportActivefilter).clear();
+ } else {
+ cdaReportfilters.put(cdaReportActivefilter, new ArrayList<String>());
}
- cdaReportFilterText.setText(formatFilterNames(cdaReportfilters));
+
+ for (Object object : filterSelectionDialog.getResult()) {
+ cdaReportfilters.get(cdaReportActivefilter).add(((EClass) object).getName());
+ }
+ cdaReportFilterText.setText(formatFilterNames(cdaReportfilters.get(cdaReportActivefilter)));
break;
case Window.CANCEL:
- cdaReportfilters.clear();
+ cdaReportfilters.get(cdaReportActivefilter).clear();
cdaReportFilterText.setText(NONE);
break;
}
@@ -286,11 +321,15 @@
private String formatFilterNames(List<String> filterNames) {
StringBuilder formattedFilters = new StringBuilder();
- for (String filter : filterNames) {
- if (formattedFilters.length() > 0) {
- formattedFilters.append(System.getProperty("line.separator"));
+ if (filterNames != null) {
+ for (String filter : filterNames) {
+ if (formattedFilters.length() > 0) {
+ formattedFilters.append(System.getProperty("line.separator"));
+ }
+ formattedFilters.append(formatFilterName(filter));
}
- formattedFilters.append(formatFilterName(filter));
+ } else {
+ formattedFilters.append("NONE");
}
return formattedFilters.toString();
}
@@ -344,6 +383,7 @@
*/
@Override
protected Control createContents(Composite parent) {
+
PlatformUI.getWorkbench().getHelpSystem().setHelp(parent, "MDHTPreferences");
Composite composite_textField = createComposite(parent, 2);
@@ -365,12 +405,51 @@
omitUnitsCheckBox = createCheckBox(
units_composite_textField, OMIT_UNITS_CHECK_BOX_LABEL, OMIT_UNITS_CHECK_BOX_TOOLTIP);
+ // Need to call ths before combo set up but after check box setups - bad design swm
+ initializeValues();
+
Composite filterLabelComposite = createComposite(parent, 2);
Label filterLabel = new Label(filterLabelComposite, SWT.LEFT);
- filterLabel.setText("CDA Default Report Filters");
+ filterLabel.setText("Report Section Filters");
+
+ Composite filterComboLabelComposite = createComposite(parent, 2);
+ Label filterComboLabel = new Label(filterComboLabelComposite, SWT.LEFT);
+ filterComboLabel.setText("Active Filter");
+
+ Composite filter_Combo = createComposite(parent, 1);
+
+ cdaReportFilterCombo = new CCombo(filter_Combo, SWT.READ_ONLY);
+
+ String[] items = cdaReportfilters.keySet().stream().toArray(String[]::new);
+
+ if (items.length == 0) {
+ ArrayList<String> noneList = new ArrayList<String>();
+ noneList.add(NONE);
+ items = noneList.toArray(String[]::new);
+ }
+
+ cdaReportFilterCombo.setItems(items);
+ cdaReportFilterCombo.select(Arrays.asList(cdaReportFilterCombo.getItems()).indexOf(this.cdaReportActivefilter));
+
+ cdaReportFilterCombo.addSelectionListener(new SelectionAdapter() {
+ @Override
+ public void widgetSelected(SelectionEvent e) {
+ Logger.log(
+ Logger.INFO,
+ "Selection: " + cdaReportFilterCombo.getItem(cdaReportFilterCombo.getSelectionIndex()));
+ cdaReportActivefilter = cdaReportFilterCombo.getItem(cdaReportFilterCombo.getSelectionIndex());
+ cdaReportFilterText.setText(formatFilterNames(cdaReportfilters.get(cdaReportActivefilter)));
+ if (cdaReportActivefilter.equals("NONE") || StringUtils.isEmpty(cdaReportActivefilter)) {
+ setFilterButton.setEnabled(false);
+ } else {
+ setFilterButton.setEnabled(true);
+ }
+
+ }
+ });
Composite filter_text = createComposite(parent, 1);
- // filter_text
+
cdaReportFilterText = new Text(filter_text, SWT.MULTI | SWT.BORDER | SWT.WRAP | SWT.V_SCROLL | SWT.LEFT);
GridData gd = new GridData(SWT.FILL, SWT.FILL, true, true);
@@ -379,9 +458,19 @@
cdaReportFilterText.setEditable(false);
Composite filter_composite = createComposite(parent, 2);
- createFilterButton(filter_composite, "Set Default Filters", "Set the default filters for CDA spreadsheet");
+ setFilterButton = createFilterButton(
+ filter_composite, "Set Section Filters", "Set the Section filters for CDA spreadsheet");
- initializeValues();
+ if (this.cdaReportActivefilter.equals("NONE") || StringUtils.isEmpty(cdaReportActivefilter)) {
+ setFilterButton.setEnabled(false);
+ } else {
+ setFilterButton.setEnabled(true);
+ }
+
+ Composite addFilter_composite = createComposite(parent, 3);
+ createAddFilterButton(addFilter_composite, "Add Filters", "Add filter for CDA spreadsheet");
+
+ cdaReportFilterText.setText(formatFilterNames(cdaReportfilters.get(cdaReportActivefilter)));
return new Composite(parent, SWT.NULL);
}
@@ -412,6 +501,7 @@
omitUnitsCheckBox.setSelection(store.getBoolean(OMIT_UNITS_STORE_VALUE));
omitValidationCheckBox.setSelection(store.getBoolean(OMIT_VALIDATION_STORE_VALUE));
cdaReportFilterText.setText(NONE);
+ cdaReportActivefilter = NONE;
}
/**
@@ -424,8 +514,21 @@
omitDOBCheckBox.setSelection(store.getBoolean(OMIT_DOB_STORE_VALUE));
omitUnitsCheckBox.setSelection(store.getBoolean(OMIT_UNITS_STORE_VALUE));
omitValidationCheckBox.setSelection(store.getBoolean(OMIT_VALIDATION_STORE_VALUE));
- String preferenceFilters = store.getString(CDA_REPORT_DEFAULT_FILTER);
- cdaReportFilterText.setText(formatFilterNames(Arrays.asList(preferenceFilters.split("\\s*,\\s*"))));
+
+ filtersFromString(store.getString(CDA_REPORT_FILTERS), cdaReportfilters);
+ for (String k3 : cdaReportfilters.keySet()) {
+ Logger.log(Logger.INFO, "LOOPNG " + k3);
+ Logger.log(Logger.INFO, "VALUE " + cdaReportfilters.get(k3));
+ }
+ cdaReportActivefilter = store.getString(CDA_REPORT_ACTIVE_FILTER);
+
+ // cdaReportActivefilter = DEFAULT;
+
+ Logger.log(Logger.INFO, "READING " + cdaReportActivefilter);
+ if (StringUtils.isEmpty(cdaReportActivefilter)) {
+ cdaReportActivefilter = NONE;
+ }
+
}
@Override
@@ -450,16 +553,39 @@
store.setValue(OMIT_DOB_STORE_VALUE, omitDOBCheckBox.getSelection());
store.setValue(OMIT_UNITS_STORE_VALUE, omitUnitsCheckBox.getSelection());
store.setValue(OMIT_VALIDATION_STORE_VALUE, omitValidationCheckBox.getSelection());
- StringBuilder sb = new StringBuilder();
- for (String filter : cdaReportfilters) {
- if (sb.length() > 0) {
- sb.append(",");
- }
- sb.append(filter);
- }
- store.setValue(CDA_REPORT_DEFAULT_FILTER, sb.toString());
-
+ store.setValue(CDA_REPORT_FILTERS, filtersToString(cdaReportfilters));
store.setValue(CDA_REPORT_FILE_NAME_FILTERS, "C62TXT");
+ store.setValue(CDA_REPORT_ACTIVE_FILTER, cdaReportActivefilter);
+ }
+
+ private static String filtersToString(Map<String, List<String>> map) {
+ String mapAsString = map.keySet().stream().map(
+ key -> key + "=" + " " + String.join(" ", map.get(key)) + " ").collect(Collectors.joining(", ", " ", " "));
+
+ Logger.log(Logger.INFO, "STORING " + mapAsString);
+ return mapAsString;
+ }
+
+ public static void filtersFromString(String mapAsString, Map<String, List<String>> filters) {
+
+ filters.clear();
+ Logger.log(Logger.INFO, "READING " + mapAsString);
+
+ if (mapAsString.contains("=")) {
+ Map<String, String> map1 = Arrays.stream(mapAsString.split(",")).map(entry -> entry.split("=")).collect(
+ Collectors.toMap(entry -> entry[0], entry -> entry[1]));
+
+ for (String k : map1.keySet()) {
+ String key = StringUtils.trim(k);
+ filters.put(key, new ArrayList<String>());
+ filters.get(key).addAll(Arrays.asList(map1.get(k).split(" ")));
+ }
+
+ } else {
+ filters.put(NONE, new ArrayList<String>());
+ filters.get(NONE).addAll(Arrays.asList(mapAsString.split(" ")));
+ }
+
}
void getFilterHash(HashMap<EClass, HashSet<EClass>> theSections) {
@@ -540,4 +666,45 @@
}
}
+ private void addFilterName(String initialName, final Set<String> usedNames) {
+ InputDialog dlg = new InputDialog(
+ getShell(), "Add New Filter", "Enter Filter Name : ", initialName, new IInputValidator() {
+
+ @Override
+ public String isValid(String newText) {
+ newText = newText.trim();
+ if (newText.isEmpty()) {
+ return "EMPTY";
+ } else if (usedNames.contains(newText)) {
+ return "FILTER EXISTS";
+ }
+ return null;
+ }
+ });
+ if (dlg.open() == Window.OK) {
+ cdaReportActivefilter = dlg.getValue().trim();
+
+ Logger.log(Logger.INFO, "cdaReportActivefilter >>>" + cdaReportActivefilter);
+
+ ArrayList<String> filters = new ArrayList<String>();
+
+ filters.addAll(Arrays.asList(cdaReportFilterCombo.getItems()));
+ filters.add(cdaReportActivefilter);
+
+ for (String filter : filters) {
+ Logger.log(Logger.INFO, "filter >>>" + filter);
+ }
+ cdaReportFilterCombo.setItems(filters.toArray(String[]::new));
+ cdaReportFilterCombo.redraw();
+ cdaReportFilterCombo.select(
+ Arrays.asList(cdaReportFilterCombo.getItems()).indexOf(this.cdaReportActivefilter));
+ if (cdaReportActivefilter.equals("NONE") || StringUtils.isEmpty(cdaReportActivefilter)) {
+ setFilterButton.setEnabled(false);
+ } else {
+ setFilterButton.setEnabled(true);
+ }
+
+ }
+ }
+
}
diff --git a/pom.xml b/pom.xml
index 23047bc..650b6fb 100644
--- a/pom.xml
+++ b/pom.xml
@@ -11,13 +11,13 @@
<properties>
<tycho-version>1.7.0</tycho-version>
- <tychoExtrasVersion>1.7.0</tychoExtrasVersion>
+ <tychoExtrasVersion>2.0.0</tychoExtrasVersion>
<tycho.scmUrl>scm:git:git://git.eclipse.org/gitroot/mdht/org.eclipse.mdht</tycho.scmUrl>
<jarSignerVersion>1.1.2</jarSignerVersion>
<findbugs.version>3.0.1</findbugs.version>
<xtext.version>2.7.3</xtext.version>
- <java.source.version>1.7</java.source.version>
- <java.target.version>1.7</java.target.version>
+ <java.source.version>1.8</java.source.version>
+ <java.target.version>1.8</java.target.version>
<mylyn.wikitext.version>2.4.0-SNAPSHOT</mylyn.wikitext.version>
<skipAllTests>false</skipAllTests>
<skipInnerTests>true</skipInnerTests>
@@ -28,12 +28,12 @@
<!-- MDHT repositories. Used when we're building individual components
(vs building the parent pom including everything) -->
- <mdht.eclipse.target>oxygen</mdht.eclipse.target>
+ <mdht.eclipse.target>2019-09</mdht.eclipse.target>
<mdht.repo.main>${eclipse.download}/modeling/mdht/updates/nightly/${mdht.eclipse.target}</mdht.repo.main>
- <maven.compiler.source>1.7</maven.compiler.source>
- <maven.compiler.target>1.7</maven.compiler.target>
+ <maven.compiler.source>1.8</maven.compiler.source>
+ <maven.compiler.target>1.8</maven.compiler.target>
</properties>
@@ -114,26 +114,11 @@
<configuration>
<environments>
<environment>
- <os>linux</os>
- <ws>gtk</ws>
- <arch>x86_64</arch>
- </environment>
- <environment>
- <os>linux</os>
- <ws>gtk</ws>
- <arch>x86</arch>
- </environment>
- <environment>
<os>win32</os>
<ws>win32</ws>
<arch>x86_64</arch>
</environment>
<environment>
- <os>win32</os>
- <ws>win32</ws>
- <arch>x86</arch>
- </environment>
- <environment>
<os>macosx</os>
<ws>cocoa</ws>
<arch>x86_64</arch>