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;
* @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
@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;
}
}