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;
private ConversationHolder conversation;
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
- 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));
+ 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){
@Override
public boolean performFinish() {
aPage.refreshActualPrefernce();
- PreferencesUtil.setPreferencesToDB(aPage.perAreaPreferences);
- PreferencesUtil.setPreferenceToDB(aPage.pref);
+ if (isAdmin){
+ PreferencesUtil.setPreferencesToDB(aPage.perAreaPreferences);
+ PreferencesUtil.setPreferenceToDB(aPage.pref);
+ }else{
+
+ //how to create a new preference(s) or save to a list????
+// PreferencesUtil.getEditorPreferences().put(PreferencesUtil.createSubjectStringForChildNodes("", aPage.pref), aPage.getPreference().getValue());
+ }
+
// PreferencesUtil.setBooleanValue(PreferencesUtil.createOverridePreferenceString(PreferencePredicate.AvailableDistributionStatus.getKey()), aPage.override);
PreferencesUtil.firePreferencesChanged(this.getClass());