ref #10410: add preference and adapt checklist editor
[taxeditor.git] / eu.etaxonomy.taxeditor.store / src / main / java / eu / etaxonomy / taxeditor / databaseAdmin / preferencePage / ChecklistEditorGeneralAdminPreference.java
index f34201b7c19fa523af968c7a134c899bd112d6cf..46e8d6a9e24cdbbc13f546aeb9838352a0ded6b9 100755 (executable)
@@ -14,9 +14,12 @@ import org.eclipse.swt.widgets.Control;
 import eu.etaxonomy.cdm.api.application.ICdmRepository;
 import eu.etaxonomy.cdm.api.service.IPreferenceService;
 import eu.etaxonomy.cdm.model.metadata.CdmPreference;
+import eu.etaxonomy.cdm.model.metadata.DistributionDescription;
 import eu.etaxonomy.cdm.model.metadata.PreferencePredicate;
 import eu.etaxonomy.cdm.model.metadata.PreferenceSubject;
-import eu.etaxonomy.taxeditor.l10n.Messages;
+import eu.etaxonomy.cdm.model.metadata.TermComboEnum;
+import eu.etaxonomy.cdm.model.metadata.TermDisplayEnum;
+import eu.etaxonomy.cdm.model.metadata.TermOrder;
 import eu.etaxonomy.taxeditor.preference.ChecklistEditorGeneralPreference;
 import eu.etaxonomy.taxeditor.preference.PreferencesUtil;
 import eu.etaxonomy.taxeditor.store.CdmStore;
@@ -49,48 +52,57 @@ public class ChecklistEditorGeneralAdminPreference extends ChecklistEditorGenera
         }
         IPreferenceService service = controller.getPreferenceService();
         CdmPreference pref;
-        if (isEditorActivated == null){
+        if (isEditorActivated == null && allowOverrideActivatedButton.getSelection()){
             service.remove(CdmPreference.NewKey(PreferenceSubject.NewTaxEditorInstance(), PreferencePredicate.DistributionEditorActivated));
         }else{
-            pref = CdmPreference.NewTaxEditorInstance( PreferencePredicate.DistributionEditorActivated, Boolean.toString(isEditorActivated));
+            pref = CdmPreference.NewTaxEditorInstance( PreferencePredicate.DistributionEditorActivated, isEditorActivated != null? Boolean.toString(isEditorActivated): null);
             pref.setAllowOverride(allowOverrideActivatedButton.getSelection());
             service.set(pref);
         }
-        if(displayArea.equals(Messages.Preference_Use_Default)){
+        if(displayArea == null && allowOverrideAreaDisplayButton.getSelection()){
             service.remove(CdmPreference.NewKey(PreferenceSubject.NewTaxEditorInstance(), PreferencePredicate.DisplayOfAreasInDistributionEditor));
         }else{
-            pref = CdmPreference.NewTaxEditorInstance( PreferencePredicate.DisplayOfAreasInDistributionEditor, this.displayArea);
+            pref = CdmPreference.NewTaxEditorInstance( PreferencePredicate.DisplayOfAreasInDistributionEditor, displayArea != null ?this.displayArea.getKey(): null);
             pref.setAllowOverride(allowOverrideAreaDisplayButton.getSelection());
             service.set(pref);
         }
 
-        if (displayStatus.equals(Messages.Preference_Use_Default)){
+        if (displayStatus == null && allowOverrideStatusDisplayButton.getSelection()){
             service.remove(CdmPreference.NewKey(PreferenceSubject.NewTaxEditorInstance(), PreferencePredicate.DisplayOfStatus));
         }else{
-            pref = CdmPreference.NewTaxEditorInstance( PreferencePredicate.DisplayOfStatus, this.displayStatus);
+            pref = CdmPreference.NewTaxEditorInstance( PreferencePredicate.DisplayOfStatus, displayStatus != null? this.displayStatus.getKey(): null);
             pref.setAllowOverride(allowOverrideStatusDisplayButton.getSelection());
             service.set(pref);
         }
 
-        if (isShowRank == null){
+        if (isShowRank == null && allowOverrideRankButton.getSelection()){
             service.remove(CdmPreference.NewKey(PreferenceSubject.NewTaxEditorInstance(), PreferencePredicate.ShowRankInDistributionEditor));
         }else{
-            pref = CdmPreference.NewTaxEditorInstance( PreferencePredicate.ShowRankInDistributionEditor, Boolean.toString(isShowRank));
+            pref = CdmPreference.NewTaxEditorInstance( PreferencePredicate.ShowRankInDistributionEditor, isShowRank != null? Boolean.toString(isShowRank): null);
             pref.setAllowOverride(allowOverrideRankButton.getSelection());
             service.set(pref);
         }
-        if (orderAreas.equals(Messages.Preference_Use_Default)){
+        if (orderAreas == null && allowOverrideOrderAreasButton.getSelection()){
             service.remove(CdmPreference.NewKey(PreferenceSubject.NewTaxEditorInstance(), PreferencePredicate.AreasSortedInDistributionEditor));
         }else{
-            pref = CdmPreference.NewTaxEditorInstance( PreferencePredicate.AreasSortedInDistributionEditor, this.orderAreas);
+            pref = CdmPreference.NewTaxEditorInstance( PreferencePredicate.AreasSortedInDistributionEditor, orderAreas != null? this.orderAreas.getKey(): null);
             pref.setAllowOverride(allowOverrideOrderAreasButton.getSelection());
             service.set(pref);
         }
 
-        if (displayStatusCombo == null){
+        if (orderStatus == null && allowOverrideStatusSortButton.getSelection()){
+            service.remove(CdmPreference.NewKey(PreferenceSubject.NewTaxEditorInstance(), PreferencePredicate.StatusSortedInDistributionEditor));
+        }else{
+            pref = CdmPreference.NewTaxEditorInstance( PreferencePredicate.StatusSortedInDistributionEditor, orderStatus != null? this.orderStatus.getKey(): null);
+            pref.setAllowOverride(allowOverrideStatusSortButton.getSelection());
+            service.set(pref);
+        }
+
+
+        if (displayStatusCombo == null && allowOverrideStatusDisplayInComboButton.getSelection()){
             service.remove(CdmPreference.NewKey(PreferenceSubject.NewTaxEditorInstance(), PreferencePredicate.DisplayOfStatusInCombo));
         }else{
-            pref = CdmPreference.NewTaxEditorInstance( PreferencePredicate.DisplayOfStatusInCombo, displayStatusCombo);
+            pref = CdmPreference.NewTaxEditorInstance( PreferencePredicate.DisplayOfStatusInCombo, displayStatusCombo != null? displayStatusCombo.getKey(): null);
             if (prefStatusDisplayInCombo == null){
                 prefStatusDisplayInCombo = pref;
             }
@@ -98,6 +110,28 @@ public class ChecklistEditorGeneralAdminPreference extends ChecklistEditorGenera
             service.set(pref);
         }
 
+        if (numberOfStatus == null && allowOverrideNumberOfStatusButton.getSelection()){
+            service.remove(CdmPreference.NewKey(PreferenceSubject.NewTaxEditorInstance(), PreferencePredicate.NumberOfVisibleStatusInDropDown));
+        }else{
+            pref = CdmPreference.NewTaxEditorInstance( PreferencePredicate.NumberOfVisibleStatusInDropDown, numberOfStatus != null? numberOfStatus.toString(): null);
+            if (prefNumberStatus == null){
+                prefNumberStatus = pref;
+            }
+            pref.setAllowOverride(prefNumberStatus.isAllowOverride());
+            service.set(pref);
+        }
+        
+        if (descriptionForDistributionEditor == null && allowOverrideDescriptionSelectionButton.getSelection()){
+            service.remove(CdmPreference.NewKey(PreferenceSubject.NewTaxEditorInstance(), PreferencePredicate.DescriptionForDistributionEditor));
+        }else{
+            pref = CdmPreference.NewTaxEditorInstance( PreferencePredicate.DescriptionForDistributionEditor, descriptionForDistributionEditor != null? descriptionForDistributionEditor.getKey(): null);
+            if (prefDescription == null){
+                prefDescription = pref;
+            }
+            pref.setAllowOverride(prefDescription.isAllowOverride());
+            service.set(pref);
+        }
+
         PreferencesUtil.updateDBPreferences();
 
         return true;
@@ -106,59 +140,79 @@ public class ChecklistEditorGeneralAdminPreference extends ChecklistEditorGenera
     @Override
     public void getValues() {
         super.getValues();
-        //distributionEditorPref = PreferencesUtil.getPreferenceFromDB(PreferencePredicate.DistributionEditorActivated);
+        distributionEditorPref = PreferencesUtil.getPreferenceFromDB(PreferencePredicate.DistributionEditorActivated);
         if (distributionEditorPref != null){
-            isEditorActivated = Boolean.valueOf(distributionEditorPref.getValue());
+            isEditorActivated = distributionEditorPref.getValue() != null? Boolean.valueOf(distributionEditorPref.getValue()): null;
+        }else{
+            isEditorActivated = null;
         }
 
 
         isAdminPreference = true;
 
         if (prefAreaDisplay != null){
-            this.displayArea = prefAreaDisplay.getValue();
+            this.displayArea = prefAreaDisplay.getValue()!= null?TermDisplayEnum.byKey(prefAreaDisplay.getValue()): null;
         }else{
-            this.displayArea = Messages.Preference_Use_Default;
+            this.displayArea = null;
         }
 
 
         if (prefStatusDisplay != null){
-            this.displayStatus = prefStatusDisplay.getValue();
+            this.displayStatus = prefStatusDisplay.getValue() != null? TermDisplayEnum.byKey(prefStatusDisplay.getValue()): null;
         }else{
-            this.displayStatus = Messages.Preference_Use_Default;
+            this.displayStatus = null;
         }
 
         if (prefStatusDisplayInCombo != null){
-            this.displayStatusCombo = prefStatusDisplayInCombo.getValue();
+            this.displayStatusCombo = prefStatusDisplayInCombo.getValue() != null? TermComboEnum.byKey(prefStatusDisplayInCombo.getValue()): null;
         }else{
-            this.displayStatusCombo = Messages.Preference_Use_Default;
+            this.displayStatusCombo = null;
         }
 
 
         if (prefAreaSort != null){
             if (prefAreaSort.getValue() != null){
-                this.orderAreas = prefAreaSort.getValue().toString();
+                this.orderAreas = prefAreaSort.getValue() != null? TermOrder.valueOf(prefAreaSort.getValue().toString()): null;
+            }else{
+                this.orderAreas = null;
+            }
+
+        }else{
+            this.orderAreas = null;
+
+        }
+
+        if (prefStatusSort != null){
+            if (prefStatusSort.getValue() != null){
+                this.orderStatus = prefStatusSort.getValue() != null? TermOrder.valueOf(prefStatusSort.getValue().toString()): null;
             }else{
-                this.orderAreas = Messages.Preference_Use_Default;
+                this.orderStatus = null;
             }
 
         }else{
-            this.orderAreas = Messages.Preference_Use_Default;
+            this.orderStatus = null;
 
         }
 
 
         if (prefRank != null){
-            this.isShowRank = Boolean.valueOf(prefRank.getValue().toString());
+            this.isShowRank = prefRank.getValue() != null?Boolean.valueOf(prefRank.getValue().toString()): null;
 
         }else{
             this.isShowRank = null;
         }
 
+        if (prefNumberStatus != null){
+            this.numberOfStatus = prefNumberStatus.getValue() != null?Integer.valueOf(prefNumberStatus.getValue().toString()): null;
+
+        }else{
+            this.numberOfStatus = null;
+        }
 
-        if (prefOwnDescription != null){
-            this.ownDescriptionForDistributionEditor = Boolean.valueOf(prefOwnDescription.getValue().toString());
+        if (prefDescription != null){
+            this.descriptionForDistributionEditor = prefDescription.getValue() != null? DistributionDescription.byKey(prefDescription.getValue().toString()): null;
         }else{
-            this.ownDescriptionForDistributionEditor = Boolean.valueOf(PreferencePredicate.OwnDescriptionForDistributionEditor.getDefaultValue().toString());
+            this.descriptionForDistributionEditor = null;
         }