ref #8489: show local values in local distr status table
authorKatja Luther <k.luther@bgbm.org>
Tue, 17 Sep 2019 10:06:25 +0000 (12:06 +0200)
committerKatja Luther <k.luther@bgbm.org>
Tue, 17 Sep 2019 10:07:09 +0000 (12:07 +0200)
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/preference/DistributionStatusPreferencePage.java

index 6327b166d369213d107353b3d965520871a17ba9..78d975dfcf5e777ec154090be1ca7104536f5954 100755 (executable)
@@ -40,6 +40,7 @@ import eu.etaxonomy.cdm.model.location.NamedArea;
 import eu.etaxonomy.cdm.model.metadata.CdmPreference;
 import eu.etaxonomy.cdm.model.metadata.PreferencePredicate;
 import eu.etaxonomy.cdm.model.metadata.PreferenceResolver;
+import eu.etaxonomy.cdm.model.metadata.PreferenceSubject;
 import eu.etaxonomy.cdm.model.term.TermType;
 import eu.etaxonomy.taxeditor.l10n.Messages;
 import eu.etaxonomy.taxeditor.model.ImageResources;
@@ -201,28 +202,33 @@ public class DistributionStatusPreferencePage extends AbstractVocabularySelectio
 
 
             }else if (col == 2){
-               if (pref.getValue() == null){
-                   item.setText(col, "All status");
-               }else{
-                   List<UUID> uuidList = PreferencesUtil.createUuidList(pref.getValue());
-                   List<PresenceAbsenceTerm> terms = CdmStore.getTermManager().getTerms(uuidList, PresenceAbsenceTerm.class);
-                   String status = "";
-                   int index = 1;
-                   for (PresenceAbsenceTerm term: terms){
-                       status = status.concat(term.getLabel());
-                       if (index < terms.size()){
-                           status = status.concat(", ");
+
+                   if ((isAdminPreference || !override)&& pref.getValue() == null){
+                       item.setText(col, "All status");
+                   }else{
+                       List<UUID> uuidList;
+                       if (isAdminPreference || (!override || (!(pref.getSubject().equals(PreferenceSubject.ROOT) || pref.getSubject().equals(PreferenceSubject.TAX_EDITOR))))){
+                           uuidList = PreferencesUtil.createUuidList(pref.getValue());
+                       }else{
+                           uuidList = PreferencesUtil.createUUIDListFromStringPref(PreferencePredicate.AvailableDistributionStatus.getKey(), true);
                        }
-                       index ++;
-                       if (index > 3 && index < terms.size()){
-                           status = status.concat("...");
-                           break;
+                       List<PresenceAbsenceTerm> terms = CdmStore.getTermManager().getTerms(uuidList, PresenceAbsenceTerm.class);
+                       String status = "";
+                       int index = 1;
+                       for (PresenceAbsenceTerm term: terms){
+                           status = status.concat(term.getLabel());
+                           if (index < terms.size()){
+                               status = status.concat(", ");
+                           }
+                           index ++;
+
                        }
+                       item.setText(col, status);
+
                    }
-                   item.setText(col, status);
 
-               }
-            }else if (col == 3 && isAdminPreference){
+
+             }else if (col == 3 && isAdminPreference){
                 Button allowOverrideButton = new Button(table, SWT.CHECK);
                 allowOverrideButton.setData(pref);
                 TableEditor editor = new TableEditor(table);
@@ -330,6 +336,8 @@ public class DistributionStatusPreferencePage extends AbstractVocabularySelectio
         }
         createNamedAreaUUIDMap();
 
+        override = PreferencesUtil.getBooleanValue(PreferencesUtil.createOverridePreferenceString(PreferencePredicate.AvailableDistributionStatus.getKey()));
+
         commandHandlerStringStatus = "eu.etaxonomy.taxeditor.store.open.OpenDistributionStatusWizardHandler";
        // setApply(true);
     }