Merge branch 'release/5.8.0'
[taxeditor.git] / eu.etaxonomy.taxeditor.store / src / main / java / eu / etaxonomy / taxeditor / databaseAdmin / preferencePage / PublishFlagPreference.java
index 7eda2bcde11608f4366b5f05f3c614d3fcbc9acb..fb84c1c478bcf51566f674d2a053e9525989065d 100755 (executable)
@@ -13,6 +13,7 @@ import eu.etaxonomy.cdm.api.service.IPreferenceService;
 import eu.etaxonomy.cdm.model.metadata.CdmPreference;
 import eu.etaxonomy.cdm.model.metadata.PreferencePredicate;
 import eu.etaxonomy.cdm.model.metadata.PublishEnum;
+import eu.etaxonomy.taxeditor.l10n.Messages;
 import eu.etaxonomy.taxeditor.preference.PreferencesUtil;
 import eu.etaxonomy.taxeditor.preference.PublishFlagLocalPreference;
 import eu.etaxonomy.taxeditor.store.CdmStore;
@@ -36,10 +37,22 @@ public class PublishFlagPreference extends PublishFlagLocalPreference implements
 
     @Override
     public boolean performOk() {
-        if (pref == null){
+        if (!isApply()){
             return true;
         }
+        ICdmRepository controller = CdmStore.getCurrentApplicationConfiguration();
+        if (controller == null){
+            return false;
+        }
+        IPreferenceService service = controller.getPreferenceService();
         String text = publishFlagBehaviour.getText();
+        // default -> delete preference
+        if(text.equals(Messages.Preference_Use_Default)){
+            service.remove(pref.getKey());
+            PreferencesUtil.updateDBPreferences();
+            return true;
+        }
+
         for (PublishEnum display: PublishEnum.values()){
             if (display.getLabel().equals(text)){
                 text = display.getKey();
@@ -49,11 +62,6 @@ public class PublishFlagPreference extends PublishFlagLocalPreference implements
         CdmPreference pref = CdmPreference.NewTaxEditorInstance(PreferencePredicate.DefaultBehaviourForPublishFlag, text);
         pref.setAllowOverride(allowOverride);
 
-        ICdmRepository controller = CdmStore.getCurrentApplicationConfiguration();
-        if (controller == null){
-            return false;
-        }
-        IPreferenceService service = controller.getPreferenceService();
         service.set(pref);
         PreferencesUtil.updateDBPreferences();
 
@@ -68,9 +76,13 @@ public class PublishFlagPreference extends PublishFlagLocalPreference implements
         pref = PreferencesUtil.getPreferenceFromDB(PreferencePredicate.DefaultBehaviourForPublishFlag);
         if (pref == null){
             pref = CdmPreference.NewTaxEditorInstance(PreferencePredicate.DefaultBehaviourForPublishFlag, ((PublishEnum)PreferencePredicate.DefaultBehaviourForPublishFlag.getDefaultValue()).getKey());
+            publishBehaviour = null;
+            allowOverride = pref.isAllowOverride();
+        }
+        else {
+            allowOverride = pref.isAllowOverride();
+            publishBehaviour = PublishEnum.valueOf(pref.getValue());
         }
-        allowOverride = pref.isAllowOverride();
-        publishBehaviour = PublishEnum.valueOf(pref.getValue());
     }