implement get(PrefKey) for exact match of key in preferenceCache
authorKatja Luther <k.luther@bgbm.org>
Fri, 3 May 2019 10:42:38 +0000 (12:42 +0200)
committerKatja Luther <k.luther@bgbm.org>
Fri, 3 May 2019 10:43:30 +0000 (12:43 +0200)
eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/checklist/e4/StatusComboBoxDataProvider.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/preference/CdmPreferenceCache.java

index 67ff2fa82672d52ae5e97e76d17279141d18546c..3ed0e503d70440fe10c887c7da39c2f4274565c6 100755 (executable)
@@ -27,7 +27,6 @@ import eu.etaxonomy.cdm.model.term.DefinedTermBase;
 import eu.etaxonomy.cdm.model.term.OrderedTermComparator;
 import eu.etaxonomy.cdm.model.term.Representation;
 import eu.etaxonomy.taxeditor.preference.CdmPreferenceCache;
-import eu.etaxonomy.taxeditor.preference.PreferencesUtil;
 import eu.etaxonomy.taxeditor.store.CdmStore;
 
 /**
@@ -53,9 +52,10 @@ public class StatusComboBoxDataProvider implements IComboBoxDataProvider {
         CdmPreference pref = CdmPreferenceCache.instance().findBestMatching(key);
         if (pref == null) {
             key = CdmPreference.NewKey(PreferenceSubject.NewTaxEditorInstance(), PreferencePredicate.AvailableDistributionStatus);
-            pref = CdmPreferenceCache.instance().findBestMatching(key);
+            //pref = PreferenceResolver.resolve(preferenceCache.get(predicate), CdmPreference.NewKey(PreferenceSubject.NewTaxEditorInstance(), PreferencePredicate.getByKey(predicate)));
+            pref = CdmPreferenceCache.instance().get(key);
             if (pref == null){
-                pref = CdmPreference.NewTaxEditorInstance(PreferencePredicate.AvailableDistributionStatus, PreferencesUtil.getStringValue(PreferencePredicate.AvailableDistributionStatus.getKey()));
+                pref = CdmPreference.NewTaxEditorInstance(PreferencePredicate.AvailableDistributionStatus, PreferencePredicate.AvailableDistributionStatus.getDefaultValue() != null ? PreferencePredicate.AvailableDistributionStatus.getDefaultValue().toString(): null);
             }
         }
         return getValues(pref);
index 0a92c9bed3669b912f9390741342740754c9bba7..c05ad79966056b59713ec6dec889f29a976fbe6f 100755 (executable)
@@ -51,27 +51,28 @@ public class CdmPreferenceCache {
 
     public CdmPreference get(String predicate){
         if (preferenceCache.get(predicate) != null){
+            List<CdmPreference> preferences = preferenceCache.get(predicate);
             if (preferenceCache.get(predicate).size() > 1){
-                return findBestMatching(CdmPreference.NewKey(PreferenceSubject.NewTaxEditorInstance(), PreferencePredicate.getByKey(predicate)));
+                CdmPreference pref = PreferenceResolver.resolve(preferenceCache.get(predicate), CdmPreference.NewKey(PreferenceSubject.NewTaxEditorInstance(), PreferencePredicate.getByKey(predicate)));
+                return pref;
             }
             return preferenceCache.get(predicate).get(0);
         }
         return null;
     }
-//    public Collection<CdmPreference> get(PrefKey key){
-//        if (preferenceCache.containsKey(key.getPredicate())){
-//            if (key.getSubject() != null){
-//                Set<CdmPreference> result = new HashSet();
-//                result.add(preferenceCache.get(key.getPredicate()).get(key.getSubject()));
-//                return result;
-//            }else{
-//                if (!preferenceCache.get(key.getPredicate()).values().isEmpty()){
-//                    return preferenceCache.get(key.getPredicate()).values();
-//                }
-//            }
-//        }
-//        return null;
-//    }
+
+    //looking for the equal prefkey
+    public CdmPreference get(PrefKey key){
+        if (preferenceCache.containsKey(key.getPredicate())){
+            for (CdmPreference pref: preferenceCache.get(key.getPredicate())){
+                if (pref.getKey().equals(key)){
+                    return pref;
+                }
+            }
+
+        }
+        return null;
+    }
 
     public void put(CdmPreference pref){
         if (preferenceCache.containsKey(pref.getPredicate())){