ref #8389: adapt term preference handling
authorKatja Luther <k.luther@bgbm.org>
Thu, 5 Sep 2019 10:53:17 +0000 (12:53 +0200)
committerKatja Luther <k.luther@bgbm.org>
Thu, 5 Sep 2019 10:53:17 +0000 (12:53 +0200)
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/preference/CdmPreferenceCache.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/preference/GeneralTermPreference.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/preference/RankPreference.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/preference/menu/SpecimenTypeDesignationStatusMenuPreferences.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/store/TermManager.java

index b2181c72eb0ba2fc6156e2f9d9b50a90e73f6bd0..a045583e8b9aa9821c8aa3de7a0a1e90c3e0d67a 100755 (executable)
@@ -25,6 +25,7 @@ import eu.etaxonomy.cdm.model.metadata.PreferenceResolver;
 import eu.etaxonomy.cdm.model.metadata.PreferenceSubject;
 import eu.etaxonomy.cdm.model.term.DefinedTermBase;
 import eu.etaxonomy.cdm.model.term.TermType;
+import eu.etaxonomy.cdm.persistence.dto.TermDto;
 import eu.etaxonomy.taxeditor.store.CdmStore;
 
 /**
@@ -145,7 +146,11 @@ public class CdmPreferenceCache {
                 }
 
                 List<DefinedTermBase> definedTermBases = termService.load(uuidList, null);
-                CdmStore.getTermManager().setPreferredTermsByType(definedTermBases, TermType.PresenceAbsenceTerm);
+                List<TermDto> dtos = new ArrayList<>();
+                for (DefinedTermBase term: definedTermBases){
+                    dtos.add(TermDto.fromTerm(term));
+                }
+                CdmStore.getTermManager().setPreferredTermsByType(dtos, TermType.PresenceAbsenceTerm);
             }
         }
          key = CdmPreference.NewKey(PreferenceSubject.NewTaxEditorInstance(), PreferencePredicate.AvailableRanks);
@@ -167,7 +172,11 @@ public class CdmPreferenceCache {
                 }
 
                 List<DefinedTermBase> definedTermBases = termService.load(uuidList, null);
-                CdmStore.getTermManager().setPreferredTermsByType(definedTermBases, TermType.Rank);
+                List<TermDto> dtos = new ArrayList();
+                for (DefinedTermBase term: definedTermBases){
+                    dtos.add(TermDto.fromTerm(term));
+                }
+                CdmStore.getTermManager().setPreferredTermsByType(dtos, TermType.Rank);
             }
         }
 
@@ -190,7 +199,11 @@ public class CdmPreferenceCache {
                 }
 
                 List<DefinedTermBase> definedTermBases = termService.load(uuidList, null);
-                CdmStore.getTermManager().setPreferredTermsByType(definedTermBases, TermType.NomenclaturalStatusType);
+                List<TermDto> dtos = new ArrayList();
+                for (DefinedTermBase term: definedTermBases){
+                    dtos.add(TermDto.fromTerm(term));
+                }
+                CdmStore.getTermManager().setPreferredTermsByType(dtos, TermType.NomenclaturalStatusType);
             }
         }
     }
index 5518bd038a7a1cf45324ecc769d36cebae6d72e6..080176f125b622127bc92ddd49a40570300da748 100755 (executable)
@@ -322,10 +322,10 @@ abstract public class GeneralTermPreference extends CdmPreferencePage implements
         }else if (text.equals(LocalOrDefaultEnum.Local.getLabel())){
             PreferencesUtil.setBooleanValue(PreferencesUtil.createOverridePreferenceString(predicate.getKey()), true);
         }
-        if (vocabularies.size() == 1){
+        if (type == null){
             CdmStore.getTermManager().setPreferredTermsByDto(preferredTermDtos, vocabularies.get(0));
         }else{
-            CdmStore.getTermManager().setPreferredTermsByType(preferredTerms, type);
+            CdmStore.getTermManager().setPreferredTermsByType(preferredTermDtos, type);
         }
         PreferencesUtil.firePreferencesChanged(this.getClass());
         return true;
index f1c367dd354f5766074f73a87af0476d0507758f..c1874090d205d9f2a81c11046ca645969f0bccb6 100755 (executable)
@@ -14,10 +14,8 @@ 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;
@@ -68,12 +66,12 @@ public class RankPreference extends GeneralTermPreference {
         }
         Object[] checkedElements = treeComposite.getViewer().getCheckedElements();
         List<UUID> listUIIDChecked = new ArrayList<>();
-        List<DefinedTermBase> preferredTerms = new ArrayList<>();
+        List<TermDto> 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()));
+                preferredTerms.add(termDto);
             }
         }
         String saveCheckedElements = StringUtils.join(listUIIDChecked, ";"); //$NON-NLS-1$
index 611cc0b8096ed900bdec85ccc57bd910c0219948..fd97c145648a9a2fe39f55eb1ef665ec29a44590 100644 (file)
@@ -15,9 +15,7 @@ import java.util.UUID;
 
 import org.apache.commons.lang.StringUtils;
 
-import eu.etaxonomy.cdm.api.service.ITermService;
 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;
@@ -64,12 +62,12 @@ public class SpecimenTypeDesignationStatusMenuPreferences extends
        }
        Object[] checkedElements = treeComposite.getViewer().getCheckedElements();
        List<UUID> listUIIDChecked = new ArrayList<>();
-       List<DefinedTermBase> preferredTerms = new ArrayList<>();
+       List<TermDto> 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()));
+               preferredTerms.add(termDto);
            }
        }
        String saveCheckedElements = StringUtils.join(listUIIDChecked, ";"); //$NON-NLS-1$
index af2ff66b02884e435873b4fa90568df75ea614a4..f82de4cd7dbab67e919ffae2e15729b6ceb69ee6 100644 (file)
@@ -265,21 +265,22 @@ public class TermManager {
      * @param initialTerms a {@link java.util.List} object.
      * @param <T> a T object.
      */
-    public <T extends DefinedTermBase> void setPreferredTermsByType(Collection<T> preferredTerms, TermType type){
-
-
-
-        List<DefinedTermBase> oldValues = getPreferredTerms(type);
-        for (DefinedTermBase term: oldValues){
-            PreferencesUtil.setBooleanValue(getPrefName(term), false);
+    public  void setPreferredTermsByType(Collection<TermDto> preferredTerms, TermType type){
+        List<?> oldValues = getPreferredTerms(type);
+        for (Object term: oldValues){
+            if (term instanceof TermDto){
+                PreferencesUtil.setBooleanValue(getPrefNameByDto((TermDto)term), false);
+            }else{
+                PreferencesUtil.setBooleanValue(getPrefName((DefinedTermBase)term), false);
+            }
         }
-        for(TermBase term : preferredTerms){
-           PreferencesUtil.setBooleanValue(getPrefName(term), true);
+        for(TermDto term : preferredTerms){
+           PreferencesUtil.setBooleanValue(getPrefNameByDto(term), true);
 
         }
 
         clearTermMapForTermType(type);
-        List<DefinedTermBase> list = new ArrayList<>(preferredTerms);
+        List<TermDto> list = new ArrayList<>(preferredTerms);
         cachedTermMap.put(type.getUuid(), list);