fix local preference evaluation for distr. editor status
authorKatja Luther <k.luther@bgbm.org>
Wed, 8 May 2019 10:43:52 +0000 (12:43 +0200)
committerKatja Luther <k.luther@bgbm.org>
Wed, 8 May 2019 10:45:19 +0000 (12:45 +0200)
eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/checklist/e4/StatusComboBoxDataProvider.java

index 91e7d912f5096cb249d661270de3becfff7d8cac..321347e6af9253293aa5b9dbbb99dc5c9bf27c5a 100755 (executable)
@@ -27,6 +27,7 @@ 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;
 
 /**
@@ -49,7 +50,11 @@ public class StatusComboBoxDataProvider implements IComboBoxDataProvider {
     public List<?> getValues(int columnIndex, int rowIndex) {
         NamedArea area = editor.getAreaToColumnIndexMap().get(columnIndex);
         PrefKey key = CdmPreference.NewKey(PreferenceSubject.NewInstance(PreferenceSubject.ROOT+"NamedArea["+area.getUuid().toString() + "]"+PreferenceSubject.ROOT), PreferencePredicate.AvailableDistributionStatus);
-        CdmPreference pref = CdmPreferenceCache.instance().findBestMatching(key);
+        CdmPreference pref = CdmPreferenceCache.instance().get(key);
+        // if there is no preference for the area, look for the general
+        if (pref == null){
+            pref = CdmPreference.NewTaxEditorInstance(PreferencePredicate.AvailableDistributionStatus, PreferencesUtil.getStringValue(PreferencePredicate.AvailableDistributionStatus.getKey()));
+        }
         if (pref == null) {
             key = CdmPreference.NewKey(PreferenceSubject.NewTaxEditorInstance(), PreferencePredicate.AvailableDistributionStatus);
             //pref = PreferenceResolver.resolve(preferenceCache.get(predicate), CdmPreference.NewKey(PreferenceSubject.NewTaxEditorInstance(), PreferencePredicate.getByKey(predicate)));