ref #5821: fix term handling after adapting local preferences
authorKatja Luther <k.luther@bgbm.org>
Fri, 1 Apr 2022 08:32:12 +0000 (10:32 +0200)
committerKatja Luther <k.luther@bgbm.org>
Fri, 1 Apr 2022 08:32:12 +0000 (10:32 +0200)
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/editor/definedterm/e4/DefinedTermMenuE4.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/editor/definedterm/e4/DefinedTermTreeMenu.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/store/TermManager.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/combo/NameRelationshipTypeCombo.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/combo/term/TermComboElement.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/name/NameDetailElement.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/name/NomenclaturalStatusElement.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/name/SpecimenTypeDesignationElement.java

index 0ff695bb7ab8db4e9e73cf02ffe29a2fcc413c3b..7b29d6690ffa0b1b820705271a2d0c08a27d76c2 100644 (file)
@@ -83,7 +83,7 @@ public class DefinedTermMenuE4 {
     private void addChildTermsToMenuManager(List<MMenuElement> items, TermType termType, boolean skipChildren) {
 
         //FIXME : need a better way to find out if a term type can be editable (ticket 3853)
-        if(termType.getEmptyDefinedTermBase() != null) {
+        if(termType.getEmptyDefinedTermBase(PreferencesUtil.getGlobalLanguage()) != null) {
             Set<TermType> children = termType.getGeneralizationOf();
             // term type has no children, so create menu item
             if(skipChildren || children.isEmpty()) {
index 71ad3a0833c640405e21a957183e2a04c43234ef..27b645e3c6b863f240a47c4916bcc378cef2ded5 100644 (file)
@@ -82,7 +82,7 @@ public class DefinedTermTreeMenu {
     private void addChildTermsToMenuManager(List<MMenuElement> items, TermType termType, boolean skipChildren) {
 
         //FIXME : need a better way to find out if a term type can be editable (ticket 3853)
-        if(termType.getEmptyDefinedTermBase() != null) {
+        if(termType.getEmptyDefinedTermBase(PreferencesUtil.getGlobalLanguage()) != null) {
             Set<TermType> children = termType.getGeneralizationOf();
             // term type has no children, so create menu item
             if(skipChildren || children.isEmpty()) {
index 523a59bb38b9585305bea9ea716f04c1b6e0355e..6cb341ad5e0141beffdb1b353b116c65c629e0ba 100644 (file)
 package eu.etaxonomy.taxeditor.store;
 
 import java.util.ArrayList;
+import java.util.Arrays;
 import java.util.Collection;
 import java.util.Comparator;
 import java.util.HashMap;
+import java.util.HashSet;
 import java.util.Iterator;
 import java.util.List;
 import java.util.Map;
+import java.util.Set;
 import java.util.UUID;
 
+import org.apache.commons.lang3.StringUtils;
+
+import eu.etaxonomy.cdm.api.service.ITermService;
 import eu.etaxonomy.cdm.model.term.DefinedTermBase;
 import eu.etaxonomy.cdm.model.term.TermBase;
 import eu.etaxonomy.cdm.model.term.TermType;
@@ -158,7 +164,7 @@ public class TermManager {
                                        filteredTerms.add(type);
                                }
                        }
-
+                       
                        if(PreferencesUtil.getBooleanValue(getPrefName(term), true)){
                                filteredTerms.add(term);
                        }
@@ -170,7 +176,7 @@ public class TermManager {
                        preferredTerms = cachedTermMap.get(initialTerms.get(0).getVocabulary().getUuid());
                    }
                    if (preferredTerms == null){
-                       preferredTerms = cachedTermMap.get(initialTerms.get(0).getTermType());
+                       preferredTerms = cachedTermMap.get(initialTerms.get(0).getTermType().getUuid());
                    }
                    if (preferredTerms == null){
                        return initialTerms;
@@ -187,7 +193,43 @@ public class TermManager {
 
                return filteredTerms;
        }
+       
+       public <T extends DefinedTermBase>List<T> createTermListFromString(String stringValue, TermType type){
+               String[] listChecked = stringValue.split(";"); //$NON-NLS-1$
+        String[] listCheckedComma = stringValue.split(","); //$NON-NLS-1$
+        List<String> checked = new ArrayList<>();
+        if (listChecked != null ){
+            checked = Arrays.asList(listChecked);
+        }
+        if (listCheckedComma != null && stringValue.contains(",")){ //$NON-NLS-1$
+            checked = Arrays.asList(listCheckedComma);
+        }
+        List<T> termsFromStringValues = getTermsFromStringValues(checked, type);
+        return termsFromStringValues;
+       }
 
+        protected <T extends DefinedTermBase>List<T> getTermsFromStringValues(List<String> listValue, TermType type) {
+               Collection<DefinedTermBase> termlist = new ArrayList<>();
+               ITermService termService = CdmStore.getService(ITermService.class);
+               Set<UUID> uuidList = new HashSet();
+               for (String s : listValue) {
+                   if (!StringUtils.isBlank(s)){
+                       UUID uuid = UUID.fromString(s);
+                       uuidList.add(uuid);
+                   }
+               }
+               if (!uuidList.isEmpty()){
+                   termlist = termService.find(uuidList);
+               }
+
+               if (listValue == null || listValue.isEmpty() ){
+                   termlist = termService.listByTermType(type, null, null, null, null);
+
+               }
+
+               return new ArrayList(termlist);
+           }
+       
        /**
      * Generic method to get term preferences for a term vocabulary
      *
@@ -274,7 +316,7 @@ public class TermManager {
 
         clearTermMapForTermType(type);
         List<TermDto> list = new ArrayList<>(preferredTerms);
-        cachedTermMap.put(type, list);
+        cachedTermMap.put(type.getUuid(), list);
     }
 
     /**
@@ -317,7 +359,7 @@ public class TermManager {
        }
 
        public void clearTermMapForTermType(TermType termType){
-        cachedTermMap.remove(termType);
+        cachedTermMap.remove(termType.getUuid());
     }
 
        /**
index 6315858fbecb4513be365085aa26cffadf04eeb6..040690bae6c202c13608b5b7c962a7ea89527709 100755 (executable)
@@ -18,7 +18,10 @@ import org.eclipse.swt.SWT;
 import org.eclipse.swt.events.SelectionEvent;
 
 import eu.etaxonomy.cdm.model.common.Language;
+import eu.etaxonomy.cdm.model.metadata.PreferencePredicate;
 import eu.etaxonomy.cdm.model.name.NameRelationshipType;
+import eu.etaxonomy.cdm.model.name.Rank;
+import eu.etaxonomy.cdm.model.term.DefinedTermBase;
 import eu.etaxonomy.cdm.model.term.Representation;
 import eu.etaxonomy.cdm.model.term.TermType;
 import eu.etaxonomy.taxeditor.preference.PreferencesUtil;
@@ -58,7 +61,13 @@ public class NameRelationshipTypeCombo<T extends InverseTermWrapper> extends Abs
             Comparator<T> comparator) {
      super(cdmFormFactory, parentElement);
      // labelString, selection, addEmptyElement, style,  comparator
-     terms = getTermManager().getPreferredTerms(TermType.NameRelationshipType);
+     
+     String availableTypes = PreferencesUtil.getStringValue(PreferencePredicate.AvailableNameRelationshipType.getKey());
+     List<NameRelationshipType> relTypes = CdmStore.getTermManager().createTermListFromString(availableTypes, TermType.NameRelationshipType);
+     
+//     terms = getTermManager().getPreferredTerms(TermType.NameRelationshipType);
+     
+     terms = relTypes;
 //     PreferencesUtil.get
      this.useAbbrevLabel = useAbbrevLabel;
      populateTerms();
index 0ade14c1e6054acebc8abdd38771b2c5b118cfdd..f182217d6c039484e636941984329afa332da554 100755 (executable)
@@ -113,7 +113,7 @@ public class TermComboElement<T extends DefinedTermBase>
                int style, boolean useAbbrevLabel, Comparator<T> comparator) {
         super(formFactory, parentElement);
 
-        this.termType = termType;
+//        this.termType = termType;
         this.termVocabulary = termVocabulary;
         this.termClass = termClass;
         this.addEmptyElement = addEmptyElement;
@@ -137,7 +137,11 @@ public class TermComboElement<T extends DefinedTermBase>
         }else if (terms != null){
             addTerms(terms);
         }
-
+        if (termType == null && terms != null && !terms.isEmpty()){
+               this.termType = terms.get(0).getTermType();
+        }else{
+               this.termType = termType;
+        }
 
         addContentProposalAdapter();
         combo.addSelectionListener(this);
@@ -174,7 +178,7 @@ public class TermComboElement<T extends DefinedTermBase>
             int style, boolean useAbbrevLabel, Comparator<T> comparator) {
         super(formFactory, parentElement);
 
-        this.termType = termType;
+//        this.termType = termType;
         this.termVocabulary = termVocabulary;
         this.termClass = termClass;
         this.addEmptyElement = addEmptyElement;
@@ -194,8 +198,14 @@ public class TermComboElement<T extends DefinedTermBase>
         }
         else if(this.termClass!=null){
             addTerms(getPreferredTerms());
-        }else if (terms != null){
+        }else if (terms != null && !terms.isEmpty()){
             addTerms(terms);
+            
+        }
+        if (termType == null){
+               this.termType = terms.get(0).getTermType();
+        }else{
+               this.termType = termType;
         }
 
 
index 989119e6f9dd1fa74d60d654dd8dde983a461cd4..158e563fa05c73cd63dd7c88f1b95fb8f07e7547 100644 (file)
@@ -15,6 +15,7 @@ import java.util.List;
 import org.apache.log4j.Logger;
 import org.eclipse.swt.SWT;
 
+import eu.etaxonomy.cdm.model.metadata.PreferencePredicate;
 import eu.etaxonomy.cdm.model.name.IBacterialName;
 import eu.etaxonomy.cdm.model.name.ICultivarPlantName;
 import eu.etaxonomy.cdm.model.name.IFungusName;
@@ -91,7 +92,7 @@ public class NameDetailElement
                                    if (o2 == null){
                                        return -1;
                                    }
-                                       return o1.compareTo(o2);
+                                       return -1*o1.compareTo(o2);
                                }
                        };
                }
@@ -252,7 +253,8 @@ public class NameDetailElement
 
     private List<Rank> getRanks(INonViralName name, NomenclaturalCode code) {
         List<Rank> ranks = new ArrayList<>();
-        List<DefinedTermBase> allRanks = CdmStore.getTermManager().getPreferredTerms(TermType.Rank);
+        String availableRanks = PreferencesUtil.getStringValue(PreferencePredicate.AvailableRanks.getKey());
+        List<DefinedTermBase> allRanks = CdmStore.getTermManager().createTermListFromString(availableRanks, TermType.Rank);
         for(DefinedTermBase term: allRanks){
                    Rank rank = (Rank)term;
                    if (rank.isCultivar() == code.equals(NomenclaturalCode.ICNCP)){
index f149afb69a40b4a9d812ccb8cc74a2754d4cb563..fa852eed7b36ae90e94fef94d38f4f437541adc4 100644 (file)
 package eu.etaxonomy.taxeditor.ui.section.name;
 
 import java.util.Comparator;
+import java.util.List;
 
 import org.eclipse.swt.events.SelectionListener;
 
+import eu.etaxonomy.cdm.model.metadata.PreferencePredicate;
 import eu.etaxonomy.cdm.model.name.NomenclaturalStatus;
 import eu.etaxonomy.cdm.model.name.NomenclaturalStatusType;
+import eu.etaxonomy.cdm.model.term.DefinedTermBase;
 import eu.etaxonomy.cdm.model.term.TermType;
 import eu.etaxonomy.taxeditor.preference.NameDetailsConfigurator;
 import eu.etaxonomy.taxeditor.preference.PreferencesUtil;
+import eu.etaxonomy.taxeditor.store.CdmStore;
 import eu.etaxonomy.taxeditor.ui.combo.term.TermComboElement;
 import eu.etaxonomy.taxeditor.ui.element.AbstractFormSection;
 import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
@@ -81,8 +85,11 @@ public class NomenclaturalStatusElement extends AbstractSourcedEntityElement<Nom
             }
         };
 
-               nomenclaturalStatusTypeCombo = formFactory.createDefinedTermComboElement(TermType.NomenclaturalStatusType, this, "Status", null,true, style, true);
-               nomenclaturalStatusTypeCombo.setTermComparator(termComparator);
+        String availableStatus = PreferencesUtil.getStringValue(PreferencePredicate.AvailableNomenclaturalStatus.getKey());
+        List<NomenclaturalStatusType> allStatus = CdmStore.getTermManager().createTermListFromString(availableStatus, TermType.NomenclaturalStatusType);
+
+               nomenclaturalStatusTypeCombo = formFactory.createDefinedTermComboElement(allStatus, this, "Status", null,style, termComparator);
+
                if (config == null || config.isNomenclaturalStatusRuleConsideredActivated()){
                    ruleConsidered = formFactory.createRuleConsideredElement(this, "Rule Considered", config == null || config.isNomenclaturalStatusRuleConsideredCodeEditionActivated(), style);
                }
index dc0b93d52a5929713f57f6fad8955c62db4d7012..9159d799de2e94a1655a88ce492f0a29c008b871 100644 (file)
@@ -8,10 +8,14 @@
  */
 package eu.etaxonomy.taxeditor.ui.section.name;
 
+import java.util.List;
+
 import org.eclipse.swt.events.SelectionListener;
 
 import eu.etaxonomy.cdm.compare.name.TypeDesignationStatusComparator;
 import eu.etaxonomy.cdm.hibernate.HibernateProxyHelper;
+import eu.etaxonomy.cdm.model.metadata.PreferencePredicate;
+import eu.etaxonomy.cdm.model.name.NameRelationshipType;
 import eu.etaxonomy.cdm.model.name.SpecimenTypeDesignation;
 import eu.etaxonomy.cdm.model.name.SpecimenTypeDesignationStatus;
 import eu.etaxonomy.cdm.model.occurrence.DerivedUnit;
@@ -20,6 +24,8 @@ import eu.etaxonomy.cdm.model.reference.NamedSource;
 import eu.etaxonomy.cdm.model.term.TermType;
 import eu.etaxonomy.taxeditor.l10n.Messages;
 import eu.etaxonomy.taxeditor.model.MessagingUtils;
+import eu.etaxonomy.taxeditor.preference.PreferencesUtil;
+import eu.etaxonomy.taxeditor.store.CdmStore;
 import eu.etaxonomy.taxeditor.ui.combo.term.TermComboElement;
 import eu.etaxonomy.taxeditor.ui.element.AbstractFormSection;
 import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
@@ -50,9 +56,12 @@ public class SpecimenTypeDesignationElement extends
                                .createSelectionElement(DerivedUnit.class,
                                        formElement, "Specimen", null,
                                                EntitySelectionElement.ALL, style);
-               combo_typeStatus = formFactory.createDefinedTermComboElement(TermType.SpecimenTypeDesignationStatus,
-                                               formElement, "Designation Status", null, style, new TypeDesignationStatusComparator<SpecimenTypeDesignationStatus>());
-
+               String availableTypes = PreferencesUtil.getStringValue(PreferencePredicate.SpecimenTypeDesignationStatus.getKey());
+           List<SpecimenTypeDesignationStatus> relTypes = CdmStore.getTermManager().createTermListFromString(availableTypes, TermType.SpecimenTypeDesignationStatus);
+//             combo_typeStatus = formFactory.createDefinedTermComboElement(TermType.SpecimenTypeDesignationStatus,
+//                                             formElement, "Designation Status", null, style, new TypeDesignationStatusComparator<SpecimenTypeDesignationStatus>());
+           combo_typeStatus = formFactory.createDefinedTermComboElement(relTypes, formElement, "Designation Status", null,style, new TypeDesignationStatusComparator<SpecimenTypeDesignationStatus>());
+           
                super.createControls(formElement, style);
                setEntity(entity);
        }