ref #10221: code cleaning
[taxeditor.git] / eu.etaxonomy.taxeditor.store / src / main / java / eu / etaxonomy / taxeditor / preference / wizard / AbstractTermSelectionWizardPage.java
old mode 100755 (executable)
new mode 100644 (file)
index 903f225..370189e
@@ -8,22 +8,29 @@
 */
 package eu.etaxonomy.taxeditor.preference.wizard;
 
+
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.List;
-import java.util.UUID;
 
-import org.apache.commons.lang.StringUtils;
-import org.eclipse.jface.viewers.ColumnViewer;
+import org.eclipse.jface.viewers.CheckboxTreeViewer;
 import org.eclipse.jface.wizard.WizardPage;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.events.SelectionAdapter;
+import org.eclipse.swt.events.SelectionEvent;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.layout.GridLayout;
+import org.eclipse.swt.widgets.Button;
 import org.eclipse.swt.widgets.Composite;
 
-import eu.etaxonomy.cdm.api.service.ITermService;
 import eu.etaxonomy.cdm.api.service.IVocabularyService;
-import eu.etaxonomy.cdm.model.common.DefinedTermBase;
-import eu.etaxonomy.cdm.model.common.TermBase;
-import eu.etaxonomy.cdm.model.common.TermType;
-import eu.etaxonomy.cdm.model.common.TermVocabulary;
+import eu.etaxonomy.cdm.model.metadata.CdmPreference;
+import eu.etaxonomy.cdm.model.term.TermType;
+import eu.etaxonomy.cdm.persistence.dto.AbstractTermDto;
+import eu.etaxonomy.cdm.persistence.dto.TermVocabularyDto;
+import eu.etaxonomy.taxeditor.editor.definedterm.DefinedTermSorter;
+import eu.etaxonomy.taxeditor.editor.definedterm.TermDtoContentProvider;
+import eu.etaxonomy.taxeditor.editor.definedterm.TermDtoLabelProvider;
 import eu.etaxonomy.taxeditor.store.CdmStore;
 
 /**
@@ -31,79 +38,60 @@ import eu.etaxonomy.taxeditor.store.CdmStore;
  * @since 04.06.2018
  *
  */
-public abstract class AbstractTermSelectionWizardPage extends WizardPage {
+public abstract class AbstractTermSelectionWizardPage<T extends AbstractTermDto> extends WizardPage {
 
-    private ColumnViewer viewer;
-    private List<TermVocabulary<DefinedTermBase>> vocabularies = new ArrayList<>();
+    protected CheckBoxTreeComposite treeComposite;
+    private List<TermVocabularyDto> vocabularies = new ArrayList<>();
     boolean localPref;
-    List<TermBase> listCheckedTerms = new ArrayList<>();
-    List<TermBase> listGrayedTerms = new ArrayList<>();
+    protected CdmPreference pref;
+    protected boolean override;
 
-    TermType type;
+    protected TermType type;
 
-    /**
-     * @param pageName
-     */
     protected AbstractTermSelectionWizardPage(String pageName, TermType type) {
         super(pageName);
-        // TODO check if configuration exists
-        CdmStore.getCurrentSessionManager().bindNullSession();
         this.type = type;
+
     }
 
-    /**
-     * {@inheritDoc}
-     */
     @Override
-    public abstract void createControl(Composite parent) ;
-
-    public ColumnViewer getViewer() {
-        return viewer;
+    public void createControl(Composite parent){
+        parent.setLayout(new GridLayout());
+        treeComposite = new CheckBoxTreeComposite(parent, new TermDtoContentProvider(), new TermDtoLabelProvider(), SWT.NONE);
+        treeComposite.getViewer().setComparator(new DefinedTermSorter());
+        rememberCheckedValues(getCheckedValuesFromPreferences());
+        treeComposite.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true, 1, 1));
+        setControl(treeComposite);
     }
 
-    public void setViewer(ColumnViewer viewer) {
-        this.viewer = viewer;
+    protected abstract String getCheckedValuesFromPreferences();
+
+    public CheckboxTreeViewer getViewer(){
+        return treeComposite.getViewer();
     }
 
-    public List<TermVocabulary<DefinedTermBase>> getVocabularies() {
+    public List<TermVocabularyDto> getVocabularies() {
         return vocabularies;
     }
 
-    public void addVocabularies(TermVocabulary<DefinedTermBase> vocabulary) {
+    public void addVocabularies(TermVocabularyDto vocabulary) {
         this.vocabularies.add(vocabulary);
     }
 
+    protected void setVocabularies(List<TermVocabularyDto> vocs) {
 
-    /**
-     * @param vocs
-     */
-    protected void setVocabularies(List<TermVocabulary<DefinedTermBase>> vocs) {
-        for (TermVocabulary voc:vocs){
-            vocabularies.add(voc);
-        }
-    }
-
-    public List<TermBase> getListCheckedTerms() {
-        return listCheckedTerms;
+        vocabularies = vocs;
     }
 
-    public List<TermBase> getListGrayedTerms() {
-        return listGrayedTerms;
+    public CdmPreference getPreference() {
+        return pref;
     }
 
-    protected void rememberCheckedValues(String checkedValues, String grayedValues) {
+    protected void rememberCheckedValues(String checkedValues) {
         initialiseVocabularies();
-        getViewer().setInput(getVocabularies());
-
-        if (grayedValues != null && grayedValues != "") { //$NON-NLS-1$
-            String[] arrayGrayed = grayedValues.split(";"); //$NON-NLS-1$
-            List<String> listGrayed = Arrays.asList(arrayGrayed);
-            if (listGrayedTerms == null){
-                listGrayedTerms = new ArrayList();
-            }
-            getTermsFromStringValues(listGrayed, this.listGrayedTerms);
 
-        }
+        treeComposite.getViewer().setInput(getVocabularies());
+        List<T> termsFromStringValues = null;
         if (checkedValues != null && checkedValues != "") { //$NON-NLS-1$
             String[] listChecked = checkedValues.split(";"); //$NON-NLS-1$
             String[] listCheckedComma = checkedValues.split(","); //$NON-NLS-1$
@@ -114,53 +102,61 @@ public abstract class AbstractTermSelectionWizardPage extends WizardPage {
             if (listCheckedComma != null && checkedValues.contains(",")){ //$NON-NLS-1$
                 checked = Arrays.asList(listCheckedComma);
             }
-            if (listCheckedTerms == null){
-                listCheckedTerms = new ArrayList();
+            termsFromStringValues = getTermsFromStringValues(checked);
+            if (termsFromStringValues != null){
+                treeComposite.setCheckedElements(termsFromStringValues.toArray());
             }
-            getTermsFromStringValues(checked, listCheckedTerms);
 
         }
-    }
-
-    /**
-     * @param split
-     * @param termlist
-     */
-    private void getTermsFromStringValues(List<String> listValue, List<TermBase> termlist) {
-
-        for (String s : listValue) {
-            if (!StringUtils.isBlank(s)){
-                UUID uuid = UUID.fromString(s);
-                ITermService termService = CdmStore.getService(ITermService.class);
-                DefinedTermBase definedTermBase = termService.load(uuid);
-                if(definedTermBase != null){
-                    termlist.add(definedTermBase);
-                }else{
-                    IVocabularyService vocabularyService = CdmStore.getService(IVocabularyService.class);
-                    TermVocabulary termVocabulary = vocabularyService.load(uuid);
-                    termlist.add(termVocabulary);
-                }
+        if (termsFromStringValues == null){
+            termsFromStringValues = getTermsFromStringValues(new ArrayList<String>());
+            if (termsFromStringValues != null){
+                treeComposite.setCheckedElements(termsFromStringValues.toArray());
             }
         }
     }
 
 
+
     protected void initialiseVocabularies() {
         if (getVocabularies() != null) {
             getVocabularies().clear();
         }
-        List<TermVocabulary<DefinedTermBase>> vocs = new ArrayList<>();
-        if (localPref){
-            vocs = getVocabulariesFromPreference();
+        List<TermVocabularyDto> vocs = new ArrayList<>();
+        vocs = CdmStore.getService(IVocabularyService.class).findVocabularyDtoByTermType(type);
 
-        }else{
-            vocs = CdmStore.getService(IVocabularyService.class).findByTermType(
-                    type, null);
-        }
         setVocabularies(vocs);
     }
 
-    protected abstract List<TermVocabulary<DefinedTermBase>> getVocabulariesFromPreference();
+    protected abstract List<TermVocabularyDto> getVocabulariesFromPreference();
+
+    /**
+     * @param listValue
+     * @return
+     */
+    protected abstract List<T> getTermsFromStringValues(List<String> listValue);
+
+    protected Button createAllowOverrideButton(Composite parent) {
+       Button activateCheckButton = new Button(parent, SWT.CHECK);
+       if (localPref){
+           activateCheckButton.setText("Override");
+           activateCheckButton.setSelection(override);
+       }else{
+           activateCheckButton.setText("Allow Override");
+           activateCheckButton.setSelection(override);
+       }
+
 
 
+        activateCheckButton.addSelectionListener(new SelectionAdapter(){
+                @Override
+                public void widgetSelected(SelectionEvent e) {
+                    pref.setAllowOverride(activateCheckButton.getSelection());
+                    override = activateCheckButton.getSelection();
+
+                }
+            });
+        return activateCheckButton;
+    }
+
 }