ref #10221: code cleaning
[taxeditor.git] / eu.etaxonomy.taxeditor.store / src / main / java / eu / etaxonomy / taxeditor / preference / wizard / AvailableDistributionPerAreaStatusWizard.java
old mode 100755 (executable)
new mode 100644 (file)
index a2605d6..8127542
@@ -13,13 +13,17 @@ import java.util.List;
 
 import org.eclipse.jface.wizard.IWizardPage;
 import org.eclipse.jface.wizard.Wizard;
+import org.osgi.service.prefs.BackingStoreException;
+import org.osgi.service.prefs.Preferences;
 
-import eu.etaxonomy.cdm.api.conversation.ConversationHolder;
-import eu.etaxonomy.cdm.api.conversation.IConversationEnabled;
+import eu.etaxonomy.cdm.model.location.NamedArea;
 import eu.etaxonomy.cdm.model.metadata.CdmPreference;
+import eu.etaxonomy.cdm.model.metadata.CdmPreference.PrefKey;
 import eu.etaxonomy.cdm.model.metadata.PreferencePredicate;
+import eu.etaxonomy.cdm.model.metadata.PreferenceSubject;
 import eu.etaxonomy.cdm.persistence.hibernate.CdmDataChangeMap;
 import eu.etaxonomy.taxeditor.l10n.Messages;
+import eu.etaxonomy.taxeditor.preference.CdmPreferenceCache;
 import eu.etaxonomy.taxeditor.preference.PreferencesUtil;
 import eu.etaxonomy.taxeditor.store.CdmStore;
 
@@ -28,20 +32,55 @@ import eu.etaxonomy.taxeditor.store.CdmStore;
  * @since 05.10.2018
  *
  */
-public class AvailableDistributionPerAreaStatusWizard extends Wizard implements IConversationEnabled{
-    private ConversationHolder conversation;
+public class AvailableDistributionPerAreaStatusWizard extends Wizard {
     private final AvailableDistributionPerAreaStatusPage aPage;
     List<CdmPreference> prefs;
+    private boolean isAdmin;
 
-    public AvailableDistributionPerAreaStatusWizard() {
+
+    public AvailableDistributionPerAreaStatusWizard(boolean isAdmin) {
+        this.isAdmin = isAdmin;
         setWindowTitle(Messages.AvailableDistributionStatusWizard_WIZARD_TITLE);
         // TODO if preferenceStore has elements checked load elements in wizard
-        prefs = PreferencesUtil.getPreferencesFromDB(PreferencePredicate.AvailableDistributionPerAreaStatus);
-        if (prefs == null) {
-            prefs = new ArrayList();
+        if (isAdmin){
+            CdmPreferenceCache cache = CdmPreferenceCache.instance();
+            prefs = new ArrayList<>();
+            cache.getAllTaxEditorDBPreferences();
+            List<CdmPreference> distrPrefs = cache.getAllForPredicate(PreferencePredicate.AvailableDistributionStatus.getKey());
+            if (distrPrefs != null){
+                prefs.addAll(distrPrefs);
+            }
+            if (prefs == null || prefs.isEmpty()) {
+                prefs = new ArrayList();
+                prefs.add(CdmPreference.NewTaxEditorInstance(PreferencePredicate.AvailableDistributionStatus, null));
+            }
+        }else{
+            Preferences predicateNode = PreferencesUtil.getEditorPreferences().node(PreferencePredicate.AvailableDistributionStatus.getKey());
+            try {
+                if (prefs == null){
+                    prefs = new ArrayList();
+                }
+                for (String childName: predicateNode.childrenNames()){
+                    PrefKey key = CdmPreference.NewKey(PreferenceSubject.NewInstance(childName), PreferencePredicate.AvailableDistributionStatus);
+                    prefs.add(CdmPreference.NewInstance(key, predicateNode.get(childName, null)));
+                }
+            } catch (BackingStoreException e) {
+                // TODO Auto-generated catch block
+                e.printStackTrace();
+            }
         }
         aPage = new AvailableDistributionPerAreaStatusPage(Messages.AvailableDistributionStatusWizard_PAGE_TITLE, prefs, false);
 
+
+    }
+
+    public void setActualPref(CdmPreference pref){
+        this.aPage.setActualPreference(pref);
+    }
+
+    public void setNamedArea(NamedArea namedArea){
+        this.aPage.actualArea = namedArea;
+
     }
 
     @Override
@@ -82,24 +121,20 @@ public class AvailableDistributionPerAreaStatusWizard extends Wizard implements
     @Override
     public boolean performFinish() {
         aPage.refreshActualPrefernce();
-        PreferencesUtil.setPreferencesToDB(aPage.perAreaPreferences);
-        PreferencesUtil.setPreferenceToDB(aPage.pref);
-       // PreferencesUtil.setBooleanValue(PreferencesUtil.createOverridePreferenceString(PreferencePredicate.AvailableDistributionStatus.getKey()), aPage.override);
-        PreferencesUtil.firePreferencesChanged(this.getClass());
-        return true;
-    }
+        if (isAdmin){
+            PreferencesUtil.setPreferencesToDB(aPage.perAreaPreferences);
+            PreferencesUtil.setPreferenceToDB(aPage.pref);
+        }else{
 
-    @Override
-    public void update(CdmDataChangeMap changeEvents) {
+            //how to create a new preference(s) or save to a list????
+//            PreferencesUtil.getEditorPreferences().put(PreferencesUtil.createSubjectStringForChildNodes("", aPage.pref), aPage.getPreference().getValue());
+        }
 
-    }
 
-    @Override
-    public ConversationHolder getConversationHolder() {
-        if (conversation == null) {
-            conversation = CdmStore.createConversation();
-        }
-        return conversation;
+       // PreferencesUtil.setBooleanValue(PreferencesUtil.createOverridePreferenceString(PreferencePredicate.AvailableDistributionStatus.getKey()), aPage.override);
+        PreferencesUtil.firePreferencesChanged(this.getClass());
+
+        return true;
     }
 
 }