Merge branch 'release/5.8.0'
[taxeditor.git] / eu.etaxonomy.taxeditor.store / src / main / java / eu / etaxonomy / taxeditor / preference / RankPreference.java
diff --git a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/preference/RankPreference.java b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/preference/RankPreference.java
new file mode 100755 (executable)
index 0000000..9f077eb
--- /dev/null
@@ -0,0 +1,101 @@
+/**
+* Copyright (C) 2019 EDIT
+* European Distributed Institute of Taxonomy
+* http://www.e-taxonomy.eu
+*
+* The contents of this file are subject to the Mozilla Public License Version 1.1
+* See LICENSE.TXT at the top of this package for the full license terms.
+*/
+package eu.etaxonomy.taxeditor.preference;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.UUID;
+
+import org.apache.commons.lang.StringUtils;
+
+import eu.etaxonomy.cdm.api.service.ITermService;
+import eu.etaxonomy.cdm.api.service.IVocabularyService;
+import eu.etaxonomy.cdm.model.metadata.PreferencePredicate;
+import eu.etaxonomy.cdm.model.term.DefinedTermBase;
+import eu.etaxonomy.cdm.model.term.TermType;
+import eu.etaxonomy.cdm.persistence.dto.TermDto;
+import eu.etaxonomy.cdm.persistence.dto.TermVocabularyDto;
+import eu.etaxonomy.taxeditor.store.CdmStore;
+import eu.etaxonomy.taxeditor.store.TermStore;
+
+/**
+ * @author k.luther
+ * @since 05.06.2019
+ *
+ */
+public class RankPreference extends GeneralTermPreference {
+
+    public RankPreference(){
+        super();
+        setLocalPref(true);
+        setPredicate(PreferencePredicate.AvailableRanks);
+        type = TermType.Rank;
+    }
+
+
+
+
+    /**
+     * {@inheritDoc}
+     */
+    @Override
+    protected List<TermVocabularyDto> getVocabulariesFromPreference() {
+        // TODO Auto-generated method stub
+        return null;
+    }
+
+    @Override
+    protected void initialiseVocabularies() {
+
+        if (getVocabularies() != null) {
+            getVocabularies().clear();
+        }
+        List<TermVocabularyDto> vocs = new ArrayList<>();
+        vocs = CdmStore.getService(IVocabularyService.class).findVocabularyDtoByTermType(type);
+
+        setVocabularies(vocs);
+    }
+
+    @Override
+    public boolean performOk() {
+        if (!isApply()){
+            return true;
+        }
+        Object[] checkedElements = treeComposite.getViewer().getCheckedElements();
+        List<UUID> listUIIDChecked = new ArrayList<>();
+        List<DefinedTermBase> preferredTerms = new ArrayList<>();
+        for (Object o : checkedElements) {
+            if(o instanceof TermDto){
+                TermDto termDto = (TermDto) o;
+                listUIIDChecked.add(termDto.getUuid());
+                preferredTerms.add(CdmStore.getService(ITermService.class).load(termDto.getUuid()));
+            }
+        }
+        String saveCheckedElements = StringUtils.join(listUIIDChecked, ";"); //$NON-NLS-1$
+
+        PreferencesUtil.setStringValue(PreferencePredicate.AvailableRanks.getKey(), saveCheckedElements);
+        String text = this.useLocalOrAdmin.getText();
+        if (text.equals(LocalOrDefaultEnum.Database.getLabel()) || text.equals(LocalOrDefaultEnum.Default.getLabel())){
+            PreferencesUtil.setBooleanValue(PreferencesUtil.createOverridePreferenceString(PreferencePredicate.AvailableRanks.getKey()), false);
+        }else if (text.equals(LocalOrDefaultEnum.Local.getLabel())){
+            PreferencesUtil.setBooleanValue(PreferencesUtil.createOverridePreferenceString(PreferencePredicate.AvailableRanks.getKey()), true);
+        }
+
+        CdmStore.getTermManager().setPreferredTerms(preferredTerms, TermStore.getTerms(TermType.Rank, null));
+        PreferencesUtil.firePreferencesChanged(this.getClass());
+        return true;
+
+    }
+
+
+
+
+
+
+}