2 * Copyright (C) 2018 EDIT
3 * European Distributed Institute of Taxonomy
4 * http://www.e-taxonomy.eu
6 * The contents of this file are subject to the Mozilla Public License Version 1.1
7 * See LICENSE.TXT at the top of this package for the full license terms.
9 package eu
.etaxonomy
.taxeditor
.preference
.wizard
;
11 import java
.util
.ArrayList
;
12 import java
.util
.List
;
14 import org
.eclipse
.jface
.wizard
.IWizardPage
;
15 import org
.eclipse
.jface
.wizard
.Wizard
;
16 import org
.osgi
.service
.prefs
.BackingStoreException
;
17 import org
.osgi
.service
.prefs
.Preferences
;
19 import eu
.etaxonomy
.cdm
.model
.location
.NamedArea
;
20 import eu
.etaxonomy
.cdm
.model
.metadata
.CdmPreference
;
21 import eu
.etaxonomy
.cdm
.model
.metadata
.CdmPreference
.PrefKey
;
22 import eu
.etaxonomy
.cdm
.model
.metadata
.PreferencePredicate
;
23 import eu
.etaxonomy
.cdm
.model
.metadata
.PreferenceSubject
;
24 import eu
.etaxonomy
.cdm
.persistence
.hibernate
.CdmDataChangeMap
;
25 import eu
.etaxonomy
.taxeditor
.l10n
.Messages
;
26 import eu
.etaxonomy
.taxeditor
.preference
.CdmPreferenceCache
;
27 import eu
.etaxonomy
.taxeditor
.preference
.PreferencesUtil
;
28 import eu
.etaxonomy
.taxeditor
.store
.CdmStore
;
35 public class AvailableDistributionPerAreaStatusWizard
extends Wizard
{
36 private final AvailableDistributionPerAreaStatusPage aPage
;
37 List
<CdmPreference
> prefs
;
38 private boolean isAdmin
;
41 public AvailableDistributionPerAreaStatusWizard(boolean isAdmin
) {
42 this.isAdmin
= isAdmin
;
43 setWindowTitle(Messages
.AvailableDistributionStatusWizard_WIZARD_TITLE
);
44 // TODO if preferenceStore has elements checked load elements in wizard
46 CdmPreferenceCache cache
= CdmPreferenceCache
.instance();
47 prefs
= new ArrayList
<>();
48 cache
.getAllTaxEditorDBPreferences();
49 List
<CdmPreference
> distrPrefs
= cache
.getAllForPredicate(PreferencePredicate
.AvailableDistributionStatus
.getKey());
50 if (distrPrefs
!= null){
51 prefs
.addAll(distrPrefs
);
53 if (prefs
== null || prefs
.isEmpty()) {
54 prefs
= new ArrayList();
55 prefs
.add(CdmPreference
.NewTaxEditorInstance(PreferencePredicate
.AvailableDistributionStatus
, null));
58 Preferences predicateNode
= PreferencesUtil
.getEditorPreferences().node(PreferencePredicate
.AvailableDistributionStatus
.getKey());
61 prefs
= new ArrayList();
63 for (String childName
: predicateNode
.childrenNames()){
64 PrefKey key
= CdmPreference
.NewKey(PreferenceSubject
.NewInstance(childName
), PreferencePredicate
.AvailableDistributionStatus
);
65 prefs
.add(CdmPreference
.NewInstance(key
, predicateNode
.get(childName
, null)));
67 } catch (BackingStoreException e
) {
68 // TODO Auto-generated catch block
72 aPage
= new AvailableDistributionPerAreaStatusPage(Messages
.AvailableDistributionStatusWizard_PAGE_TITLE
, prefs
, false);
77 public void setActualPref(CdmPreference pref
){
78 this.aPage
.setActualPreference(pref
);
81 public void setNamedArea(NamedArea namedArea
){
82 this.aPage
.actualArea
= namedArea
;
87 public void addPages() {
92 public IWizardPage
getPage(String pageName
) {
98 public int getPageCount() {
103 public IWizardPage
[] getPages() {
104 IWizardPage
[] pages
= new IWizardPage
[1];
110 public String
getWindowTitle() {
112 return Messages
.AvailableDistributionStatusWizard_WINDOW_TITLE
;
116 public boolean performCancel() {
117 // TODO Auto-generated method stub
122 public boolean performFinish() {
123 aPage
.refreshActualPrefernce();
125 PreferencesUtil
.setPreferencesToDB(aPage
.perAreaPreferences
);
126 PreferencesUtil
.setPreferenceToDB(aPage
.pref
);
129 //how to create a new preference(s) or save to a list????
130 // PreferencesUtil.getEditorPreferences().put(PreferencesUtil.createSubjectStringForChildNodes("", aPage.pref), aPage.getPreference().getValue());
134 // PreferencesUtil.setBooleanValue(PreferencesUtil.createOverridePreferenceString(PreferencePredicate.AvailableDistributionStatus.getKey()), aPage.override);
135 PreferencesUtil
.firePreferencesChanged(this.getClass());