Project

General

Profile

Download (4.03 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

    
49
    @Override
50
    public void addPages() {
51
        addPage(aPage);
52
    }
53

    
54
    @Override
55
    public IWizardPage getPage(String pageName) {
56

    
57
        return aPage;
58
    }
59

    
60
    @Override
61
    public int getPageCount() {
62
       return 1;
63
    }
64

    
65
    @Override
66
    public IWizardPage[] getPages() {
67
        IWizardPage[] pages = new IWizardPage[1];
68
        pages [0] = aPage;
69
        return pages;
70
    }
71

    
72
    @Override
73
    public String getWindowTitle() {
74
        return Messages.AvailableVocabularyWizard_WINDOW_TITLE;
75
    }
76

    
77
    @Override
78
    public boolean performCancel() {
79
        return true;
80
    }
81

    
82
    @Override
83
    public boolean performFinish() {
84
        Object[] checkedElements = aPage.getViewer().getCheckedElements();
85

    
86
        ArrayList<UUID> listUIIDChecked = new ArrayList<UUID>();
87
        for (Object o : checkedElements) {
88
            if(o instanceof TermVocabularyDto){
89
                TermVocabularyDto vocDto = (TermVocabularyDto) o;
90
                listUIIDChecked.add(vocDto.getUuid());
91
            }
92
        }
93
        String saveCheckedElements = StringUtils.join(listUIIDChecked, ";"); //$NON-NLS-1$
94

    
95
        String predicate = null;
96
        pref = aPage.getPreferences();
97
        if (pref != null){
98
            predicate = pref.getPredicate();
99
        }
100

    
101
        if (!localPref){
102
            if (StringUtils.isBlank(saveCheckedElements)){
103
                saveCheckedElements = null;
104
            }
105
            CdmPreference savePref = CdmPreference.NewInstance(PreferenceSubject.NewTaxEditorInstance(), PreferencePredicate.getByKey(predicate), saveCheckedElements);
106
            savePref.setAllowOverride(pref.isAllowOverride());
107
            PreferencesUtil.setPreferenceToDB(savePref);
108

    
109
            PreferencesUtil.updateDBPreferences();
110
        }else{
111
            PreferencesUtil.setStringValue(predicate, saveCheckedElements);
112
            PreferencesUtil.setBooleanValue(PreferencesUtil.createOverridePreferenceString(predicate), this.aPage.override);
113
        }
114
        return true;
115
    }
116

    
117
    @Override
118
    public void update(CdmDataChangeMap changeEvents) {
119
    }
120

    
121
    @Override
122
    public ConversationHolder getConversationHolder() {
123
        if (conversation == null) {
124
            conversation = CdmStore.createConversation();
125
        }
126
        return conversation;
127
    }
128

    
129
}
(10-10/14)