Project

General

Profile

Download (4.66 KB) Statistics
| Branch: | Tag: | Revision:
1
/**
2
* Copyright (C) 2018 EDIT
3
* European Distributed Institute of Taxonomy
4
* http://www.e-taxonomy.eu
5
*
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.
8
*/
9
package eu.etaxonomy.taxeditor.preference.wizard;
10

    
11
import java.util.ArrayList;
12
import java.util.List;
13

    
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;
18

    
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;
29

    
30
/**
31
 * @author k.luther
32
 * @since 05.10.2018
33
 *
34
 */
35
public class AvailableDistributionPerAreaStatusWizard extends Wizard {
36
    private final AvailableDistributionPerAreaStatusPage aPage;
37
    List<CdmPreference> prefs;
38
    private boolean isAdmin;
39

    
40

    
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
45
        if (isAdmin){
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);
52
            }
53
            if (prefs == null || prefs.isEmpty()) {
54
                prefs = new ArrayList();
55
                prefs.add(CdmPreference.NewTaxEditorInstance(PreferencePredicate.AvailableDistributionStatus, null));
56
            }
57
        }else{
58
            Preferences predicateNode = PreferencesUtil.getEditorPreferences().node(PreferencePredicate.AvailableDistributionStatus.getKey());
59
            try {
60
                if (prefs == null){
61
                    prefs = new ArrayList();
62
                }
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)));
66
                }
67
            } catch (BackingStoreException e) {
68
                // TODO Auto-generated catch block
69
                e.printStackTrace();
70
            }
71
        }
72
        aPage = new AvailableDistributionPerAreaStatusPage(Messages.AvailableDistributionStatusWizard_PAGE_TITLE, prefs, false);
73

    
74

    
75
    }
76

    
77
    public void setActualPref(CdmPreference pref){
78
        this.aPage.setActualPreference(pref);
79
    }
80

    
81
    public void setNamedArea(NamedArea namedArea){
82
        this.aPage.actualArea = namedArea;
83

    
84
    }
85

    
86
    @Override
87
    public void addPages() {
88
        addPage(aPage);
89
    }
90

    
91
    @Override
92
    public IWizardPage getPage(String pageName) {
93

    
94
        return aPage;
95
    }
96

    
97
    @Override
98
    public int getPageCount() {
99
       return 1;
100
    }
101

    
102
    @Override
103
    public IWizardPage[] getPages() {
104
        IWizardPage[] pages = new IWizardPage[1];
105
        pages [0] = aPage;
106
        return pages;
107
    }
108

    
109
    @Override
110
    public String getWindowTitle() {
111

    
112
        return Messages.AvailableDistributionStatusWizard_WINDOW_TITLE;
113
    }
114

    
115
    @Override
116
    public boolean performCancel() {
117
        // TODO Auto-generated method stub
118
        return true;
119
    }
120

    
121
    @Override
122
    public boolean performFinish() {
123
        aPage.refreshActualPrefernce();
124
        if (isAdmin){
125
            PreferencesUtil.setPreferencesToDB(aPage.perAreaPreferences);
126
            PreferencesUtil.setPreferenceToDB(aPage.pref);
127
        }else{
128

    
129
            //how to create a new preference(s) or save to a list????
130
//            PreferencesUtil.getEditorPreferences().put(PreferencesUtil.createSubjectStringForChildNodes("", aPage.pref), aPage.getPreference().getValue());
131
        }
132

    
133

    
134
       // PreferencesUtil.setBooleanValue(PreferencesUtil.createOverridePreferenceString(PreferencePredicate.AvailableDistributionStatus.getKey()), aPage.override);
135
        PreferencesUtil.firePreferencesChanged(this.getClass());
136

    
137
        return true;
138
    }
139

    
140
}
(7-7/19)