Project

General

Profile

Download (4.64 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.UUID;
13

    
14
import org.apache.commons.lang.StringUtils;
15
import org.eclipse.jface.wizard.IWizardPage;
16
import org.eclipse.jface.wizard.Wizard;
17

    
18
import eu.etaxonomy.cdm.api.conversation.ConversationHolder;
19
import eu.etaxonomy.cdm.api.conversation.IConversationEnabled;
20
import eu.etaxonomy.cdm.model.metadata.CdmPreference;
21
import eu.etaxonomy.cdm.model.metadata.PreferencePredicate;
22
import eu.etaxonomy.cdm.model.metadata.PreferenceSubject;
23
import eu.etaxonomy.cdm.persistence.dto.TermVocabularyDto;
24
import eu.etaxonomy.cdm.persistence.hibernate.CdmDataChangeMap;
25
import eu.etaxonomy.taxeditor.l10n.Messages;
26
import eu.etaxonomy.taxeditor.preference.PreferencesUtil;
27
import eu.etaxonomy.taxeditor.store.CdmStore;
28

    
29
/**
30
 * @author k.luther
31
 * @since 04.06.2018
32
 *
33
 */
34
public class AvailableVocabularyWizard extends Wizard implements IConversationEnabled {
35

    
36
    private ConversationHolder conversation;
37
    private final AvailableAreaVocabulariesPage aPage;
38
    private boolean localPref = true;
39
    private CdmPreference pref;
40

    
41
    public AvailableVocabularyWizard(boolean localPref, CdmPreference pref, String featureTitle) {
42
        setWindowTitle(Messages.AvailableVocabularyWizard_WIZARD_TITLE);
43
        // TODO if preferenceStore has elements checked load elements in wizard
44
        this.localPref = localPref;
45
        this.pref = pref;
46
        aPage = new AvailableAreaVocabulariesPage(Messages.AvailableVocabularyWizard_PAGE_TITLE, localPref, pref, featureTitle);
47
    }
48
    public AvailableVocabularyWizard(boolean localPref, CdmPreference pref, String featureTitle, boolean localPrefExist) {
49
        setWindowTitle(Messages.AvailableVocabularyWizard_WIZARD_TITLE);
50
        // TODO if preferenceStore has elements checked load elements in wizard
51
        this.localPref = localPref;
52
        this.pref = pref;
53
        aPage = new AvailableAreaVocabulariesPage(Messages.AvailableVocabularyWizard_PAGE_TITLE, localPref, pref, featureTitle, localPrefExist);
54
    }
55

    
56
    @Override
57
    public void addPages() {
58
        addPage(aPage);
59
    }
60

    
61
    @Override
62
    public IWizardPage getPage(String pageName) {
63

    
64
        return aPage;
65
    }
66

    
67
    @Override
68
    public int getPageCount() {
69
       return 1;
70
    }
71

    
72
    @Override
73
    public IWizardPage[] getPages() {
74
        IWizardPage[] pages = new IWizardPage[1];
75
        pages [0] = aPage;
76
        return pages;
77
    }
78

    
79
    @Override
80
    public String getWindowTitle() {
81
        return Messages.AvailableVocabularyWizard_WINDOW_TITLE;
82
    }
83

    
84
    @Override
85
    public boolean performCancel() {
86
        return true;
87
    }
88

    
89
    @Override
90
    public boolean performFinish() {
91
        Object[] checkedElements = aPage.getViewer().getCheckedElements();
92

    
93
        ArrayList<UUID> listUIIDChecked = new ArrayList<UUID>();
94
        int countChecked = 0;
95
        for (Object o : checkedElements) {
96
            if(o instanceof TermVocabularyDto){
97
                TermVocabularyDto vocDto = (TermVocabularyDto) o;
98
                listUIIDChecked.add(vocDto.getUuid());
99
                countChecked++;
100
            }
101
        }
102
        String saveCheckedElements = StringUtils.join(listUIIDChecked, ";"); //$NON-NLS-1$
103
        int countVoc = aPage.getVocabularies().size();
104
        String predicate = null;
105
        pref = aPage.getPreference();
106
        if (pref != null){
107
            predicate = pref.getPredicate();
108
        }
109

    
110
        if (!localPref){
111
            if (StringUtils.isBlank(saveCheckedElements) || countChecked == countVoc){
112
                saveCheckedElements = null;
113
            }
114
            CdmPreference savePref = CdmPreference.NewInstance(PreferenceSubject.NewTaxEditorInstance(), PreferencePredicate.getByKey(predicate), saveCheckedElements);
115
            savePref.setAllowOverride(pref.isAllowOverride());
116
            PreferencesUtil.setPreferenceToDB(savePref);
117

    
118
            PreferencesUtil.updateDBPreferences();
119
        }else{
120
            PreferencesUtil.setStringValue(predicate, saveCheckedElements);
121
            PreferencesUtil.setBooleanValue(PreferencesUtil.createOverridePreferenceString(predicate), this.aPage.override);
122
        }
123
        return true;
124
    }
125

    
126
    @Override
127
    public void update(CdmDataChangeMap changeEvents) {
128
    }
129

    
130
    @Override
131
    public ConversationHolder getConversationHolder() {
132
        if (conversation == null) {
133
            conversation = CdmStore.createConversation();
134
        }
135
        return conversation;
136
    }
137

    
138
}
(12-12/16)