Project

General

Profile

« Previous | Next » 

Revision c295928b

Added by Katja Luther over 4 years ago

ref #8568: performance issues for term and voc preference pages

View differences:

eu.etaxonomy.taxeditor.store/fragment.e4xmi
332 332
  </fragments>
333 333
  <fragments xsi:type="fragment:StringModelFragment" xmi:id="_pVVyEJFJEeeDJpjGQES7gw" featurename="addons" parentElementId="xpath:/">
334 334
    <elements xsi:type="application:Addon" xmi:id="_q4JBkJFJEeeDJpjGQES7gw" elementId="eu.etaxonomy.taxeditor.event.EventUtility" contributionURI="bundleclass://eu.etaxonomy.taxeditor.store/eu.etaxonomy.taxeditor.event.EventUtility"/>
335
    <elements xsi:type="application:Addon" xmi:id="_g-rRcNhtEemVwJVh6CEdBA" elementId="eu.etaxonomy.taxeditor.store.addon.0" contributionURI="bundleclass://eu.etaxonomy.taxeditor.store/eu.etaxonomy.taxeditor.preference.DistributionStatusPreferencePage"/>
335 336
  </fragments>
336 337
  <fragments xsi:type="fragment:StringModelFragment" xmi:id="_ITE10KkVEeejedk4mZQIGw" featurename="children" parentElementId="eu.etaxonomy.taxeditor.workbench.menu.file" positionInList="before:eu.etaxonomy.taxeditor.application.filemenu.io">
337 338
    <elements xsi:type="menu:Menu" xmi:id="_z6EugKqXEeeXcJGhyhlrKA" elementId="eu.etaxonomy.taxeditor.store.menu.export" label="%menu.label.2">
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/handler/e4/OpenCommonNameAreaWizardAdminHandler.java
35 35
        if (pref == null){
36 36
            pref = CdmPreference.NewTaxEditorInstance(PreferencePredicate.CommonNameAreaVocabularies, null);
37 37
        }
38
        AvailableVocabularyWizard wizard = new AvailableVocabularyWizard(false, pref, Messages.OpenCommonNameAreaWizardAdminHandler_COMMON_NAMES, false);
38
        AvailableVocabularyWizard wizard = new AvailableVocabularyWizard(false, pref, Messages.OpenCommonNameAreaWizardAdminHandler_COMMON_NAMES);
39 39

  
40 40
        WizardDialog dialog = new WizardDialog(shell,
41 41
                wizard);
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/preference/AbstractGeneralTermPreference.java
1
/**
2
* Copyright (C) 2019 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;
10

  
11
import java.util.ArrayList;
12
import java.util.Arrays;
13
import java.util.Collection;
14
import java.util.List;
15
import java.util.UUID;
16

  
17
import org.apache.commons.lang.StringUtils;
18
import org.eclipse.jface.viewers.ISelectionChangedListener;
19
import org.eclipse.jface.viewers.SelectionChangedEvent;
20
import org.eclipse.swt.SWT;
21
import org.eclipse.swt.custom.CLabel;
22
import org.eclipse.swt.events.SelectionEvent;
23
import org.eclipse.swt.events.SelectionListener;
24
import org.eclipse.swt.layout.GridData;
25
import org.eclipse.swt.layout.GridLayout;
26
import org.eclipse.swt.widgets.Combo;
27
import org.eclipse.swt.widgets.Composite;
28
import org.eclipse.swt.widgets.Control;
29

  
30
import eu.etaxonomy.cdm.api.service.ITermService;
31
import eu.etaxonomy.cdm.api.service.IVocabularyService;
32
import eu.etaxonomy.cdm.model.metadata.CdmPreference;
33
import eu.etaxonomy.cdm.model.metadata.IPreferencePredicate;
34
import eu.etaxonomy.cdm.model.metadata.PreferencePredicate;
35
import eu.etaxonomy.cdm.model.term.DefinedTermBase;
36
import eu.etaxonomy.cdm.model.term.TermType;
37
import eu.etaxonomy.cdm.persistence.dto.AbstractTermDto;
38
import eu.etaxonomy.cdm.persistence.dto.TermDto;
39
import eu.etaxonomy.cdm.persistence.dto.TermVocabularyDto;
40
import eu.etaxonomy.taxeditor.editor.definedterm.DefinedTermSorter;
41
import eu.etaxonomy.taxeditor.editor.definedterm.TermDtoContentProvider;
42
import eu.etaxonomy.taxeditor.editor.definedterm.TermDtoLabelProvider;
43
import eu.etaxonomy.taxeditor.l10n.Messages;
44
import eu.etaxonomy.taxeditor.preference.menu.CdmPreferencePage;
45
import eu.etaxonomy.taxeditor.preference.wizard.CheckBoxTreeComposite;
46
import eu.etaxonomy.taxeditor.store.CdmStore;
47

  
48
/**
49
 * @author k.luther
50
 * @since 05.06.2019
51
 *
52
 */
53
abstract public class AbstractGeneralTermPreference<T extends AbstractTermDto> extends CdmPreferencePage implements ISelectionChangedListener, SelectionListener{
54
    protected CheckBoxTreeComposite treeComposite;
55
    protected List<TermVocabularyDto> vocabularies = new ArrayList<>();
56
    protected Combo useLocalOrAdmin ;
57

  
58
    protected boolean isOverride;
59
    protected boolean allowOverride;
60
    protected CdmPreference pref;
61
    protected IPreferencePredicate predicate;
62

  
63

  
64
    public AbstractGeneralTermPreference(){
65
        super();
66

  
67
    }
68

  
69
    public boolean isLocalPref() {
70
        return !isAdminPreference;
71
    }
72

  
73

  
74
    protected TermType type;
75

  
76
    public List<TermVocabularyDto> getVocabularies() {
77
        return vocabularies;
78
    }
79

  
80
    public void setVocabularies(List<TermVocabularyDto> vocabularies) {
81
        this.vocabularies = vocabularies;
82
    }
83

  
84
    public IPreferencePredicate getPredicate() {
85
        return predicate;
86
    }
87

  
88
    public void setPredicate(PreferencePredicate predicate) {
89
        this.predicate = predicate;
90
    }
91

  
92
    /**
93
     * {@inheritDoc}
94
     */
95
    @Override
96
    protected Control createContents(Composite parent) {
97
        Composite container = new Composite(parent, SWT.NULL);
98
        getPreferenceValues();
99
        if (isLocalPref() && !allowOverride){
100
            final CLabel description = new CLabel(parent, SWT.NULL);
101
            description.setText(Messages.NameDetailsViewConfiguration_description_not_available);
102
            this.setDefaultButtonActivated(false);
103
            return parent;
104

  
105
        }
106
        final GridLayout gridLayout = new GridLayout();
107
        gridLayout.numColumns = 2;
108
        container.setLayout(gridLayout);
109
        parent.setLayout(new GridLayout());
110
        useLocalOrAdmin = new Combo(parent, SWT.BORDER | SWT.READ_ONLY);
111
        if (!isAdminPreference){
112
            useLocalOrAdmin.add(LocalOrDefaultEnum.Default.getLabel(), 0);
113
            useLocalOrAdmin.add(LocalOrDefaultEnum.Local.getLabel(), 1);
114

  
115
        }else{
116
            useLocalOrAdmin.add(LocalOrDefaultEnum.AllowOverride.getLabel(), 0);
117
            useLocalOrAdmin.add(LocalOrDefaultEnum.Database.getLabel(), 1);
118
        }
119

  
120

  
121
        treeComposite = new CheckBoxTreeComposite(container, new TermDtoContentProvider(), new TermDtoLabelProvider(), SWT.SCROLL_PAGE);
122
        treeComposite.getViewer().setComparator(new DefinedTermSorter());
123
        rememberCheckedValues(getCheckedValuesFromPreferences());
124

  
125
        if (isLocalPref()){
126
            if (isOverride){
127
                useLocalOrAdmin.select(1);
128
            }else{
129
                useLocalOrAdmin.select(0);
130
                treeComposite.getViewer().getTree().setSelection(treeComposite.getViewer().getTree().getTopItem());
131
                treeComposite.setEnabled(false);
132

  
133
                //treeComposite.getViewer().getTree().getVerticalBar().setEnabled(true);
134
            }
135
        }else{
136
            if (allowOverride){
137
                useLocalOrAdmin.select(0);
138
            }else{
139
                useLocalOrAdmin.select(1);
140
            }
141
        }
142
        useLocalOrAdmin.addSelectionListener(this);
143

  
144
        GridData data = new GridData(SWT.FILL, SWT.FILL, true, true, 1, 1);
145
        data.heightHint = 300;
146
        treeComposite.setLayoutData(data);
147
        treeComposite.getViewer().addSelectionChangedListener(this);
148

  
149
        return container;
150

  
151
    }
152

  
153
    public String getCheckedValuesFromPreferences(){
154
        String values;
155
        if (!isAdminPreference && isOverride){
156
            values = PreferencesUtil.getStringValue(predicate.getKey(), true);
157
        }else{
158
            values = pref != null ?pref.getValue(): null;
159
        }
160
        return values;
161
    }
162

  
163
    protected void rememberCheckedValues(String checkedValues) {
164
        initialiseVocabularies();
165
        treeComposite.getViewer().getTree().deselectAll();
166
        treeComposite.getViewer().refresh();
167
        treeComposite.getViewer().setInput(getVocabularies());
168

  
169
        if (checkedValues != null && checkedValues != "") { //$NON-NLS-1$
170
            String[] listChecked = checkedValues.split(";"); //$NON-NLS-1$
171
            String[] listCheckedComma = checkedValues.split(","); //$NON-NLS-1$
172
            List<String> checked = new ArrayList<>();
173
            if (listChecked != null ){
174
                checked = Arrays.asList(listChecked);
175
            }
176
            if (listCheckedComma != null && checkedValues.contains(",")){ //$NON-NLS-1$
177
                checked = Arrays.asList(listCheckedComma);
178
            }
179
            List<T> termsFromStringValues = getTermsFromStringValues(checked);
180
            treeComposite.setCheckedElements(termsFromStringValues.toArray());
181

  
182
        }else{
183
            List<T> termsFromStringValues = getTermsFromStringValues(new ArrayList<String>());
184
            treeComposite.setCheckedElements(termsFromStringValues.toArray());
185
            treeComposite.getViewer().refresh();
186
            treeComposite.redraw();
187

  
188
        }
189
    }
190

  
191
    protected abstract List<T> getTermsFromStringValues(List<String> listValue);
192

  
193
    protected void initialiseVocabularies() {
194
        if (getVocabularies() != null) {
195
            getVocabularies().clear();
196
        }
197
        List<TermVocabularyDto> vocs = new ArrayList<>();
198
        vocs = CdmStore.getService(IVocabularyService.class).findVocabularyDtoByTermType(type);
199

  
200
        setVocabularies(vocs);
201
    }
202

  
203
    protected void getPreferenceValues(){
204
        pref = PreferencesUtil.getPreferenceFromDB(predicate);
205
        this.allowOverride = pref!= null?pref.isAllowOverride():true;
206
        this.isOverride = PreferencesUtil.getBooleanValue(PreferencesUtil.createOverridePreferenceString(predicate.getKey()));
207
        if (pref == null){
208
            pref = CdmPreference.NewTaxEditorInstance(predicate, null);
209
        }
210
    }
211

  
212
    /**
213
     * {@inheritDoc}
214
     */
215
    @Override
216
    public void selectionChanged(SelectionChangedEvent event) {
217
        this.setApply(true);
218
    }
219

  
220
    /**
221
     * {@inheritDoc}
222
     */
223
    @Override
224
    public void widgetSelected(SelectionEvent e) {
225
        if (e.getSource().equals(useLocalOrAdmin)){
226
            if (useLocalOrAdmin.getText().equals(LocalOrDefaultEnum.Default.getLabel())){
227
                rememberCheckedValues(getCheckedValuesFromPreferences());
228
                treeComposite.setEnabled(false);
229
            }else{
230
                treeComposite.setEnabled(true);
231
            }
232
        }
233
        this.setApply(true);
234
    }
235

  
236
    /**
237
     * {@inheritDoc}
238
     */
239
    @Override
240
    public void widgetDefaultSelected(SelectionEvent e) {
241
        // TODO Auto-generated method stub
242

  
243
    }
244

  
245
    @Override
246
    protected void performDefaults(){
247
        if (!isLocalPref()){
248
            rememberCheckedValues("");
249
            treeComposite.setEnabled(true);
250
        }else{
251
            isOverride = false;
252
            rememberCheckedValues(getCheckedValuesFromPreferences());
253
            treeComposite.setEnabled(false);
254
        }
255
       pref = null;
256
       useLocalOrAdmin.select(0);
257

  
258
       setApply(true);
259
       super.performDefaults();
260

  
261
    }
262

  
263
    @Override
264
    public boolean performOk() {
265
        if (!isApply()){
266
            return true;
267
        }
268
        Object[] checkedElements = treeComposite.getViewer().getCheckedElements();
269
        List<UUID> listUIIDChecked = new ArrayList<>();
270
        Collection<TermDto> preferredTermDtos = new ArrayList<>();
271
        List<DefinedTermBase> preferredTerms = new ArrayList<>();
272
        for (Object o : checkedElements) {
273
            if(o instanceof TermDto){
274
                TermDto termDto = (TermDto) o;
275
                listUIIDChecked.add(termDto.getUuid());
276
                preferredTermDtos.add(termDto);
277
                if (vocabularies.size() > 1){
278
                    preferredTerms.add(CdmStore.getService(ITermService.class).load(termDto.getUuid()));
279
                }
280

  
281
            }
282
        }
283
        String saveCheckedElements = StringUtils.join(listUIIDChecked, ";"); //$NON-NLS-1$
284

  
285
        PreferencesUtil.setStringValue(predicate.getKey(), saveCheckedElements);
286
        String text = this.useLocalOrAdmin.getText();
287
        if (text.equals(LocalOrDefaultEnum.Database.getLabel()) || text.equals(LocalOrDefaultEnum.Default.getLabel())){
288
            PreferencesUtil.setBooleanValue(PreferencesUtil.createOverridePreferenceString(predicate.getKey()), false);
289
        }else if (text.equals(LocalOrDefaultEnum.Local.getLabel())){
290
            PreferencesUtil.setBooleanValue(PreferencesUtil.createOverridePreferenceString(predicate.getKey()), true);
291
        }
292
        if (type == null){
293
            CdmStore.getTermManager().setPreferredTermsByDto(preferredTermDtos, vocabularies.get(0));
294
        }else{
295
            CdmStore.getTermManager().setPreferredTermsByType(preferredTermDtos, type);
296
        }
297
        PreferencesUtil.firePreferencesChanged(this.getClass());
298
        return true;
299
    }
300

  
301
    protected boolean performOkAdmin() {
302
        Object[] checkedElements = treeComposite.getViewer().getCheckedElements();
303
        List<UUID> listUIIDChecked = new ArrayList<>();
304
        List<DefinedTermBase> preferredTerms = new ArrayList<>();
305
        for (Object o : checkedElements) {
306
            if(o instanceof TermDto){
307
                TermDto termDto = (TermDto) o;
308
                listUIIDChecked.add(termDto.getUuid());
309
                preferredTerms.add(CdmStore.getService(ITermService.class).load(termDto.getUuid()));
310
            }
311
        }
312
        String saveCheckedElements = StringUtils.join(listUIIDChecked, ";"); //$NON-NLS-1$
313
        if (StringUtils.isBlank(saveCheckedElements)){
314
            saveCheckedElements = null;
315
        }
316
        CdmPreference savePref = CdmPreference.NewTaxEditorInstance(predicate, saveCheckedElements);
317
        String text = this.useLocalOrAdmin.getText();
318
        if (text.equals(LocalOrDefaultEnum.Database.getLabel()) ){
319
            savePref.setAllowOverride(false);
320
        }else if (text.equals(LocalOrDefaultEnum.AllowOverride.getLabel())){
321
            savePref.setAllowOverride(true);
322
        }
323

  
324
        PreferencesUtil.setPreferenceToDB(savePref);
325
        PreferencesUtil.updateDBPreferences();
326
        PreferencesUtil.firePreferencesChanged(this.getClass());
327
        return true;
328
    }
329

  
330
}
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/preference/GeneralTermPreference.java
1
/**
2
* Copyright (C) 2019 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;
10

  
11
import java.util.ArrayList;
12
import java.util.Arrays;
13
import java.util.Collection;
14
import java.util.List;
15
import java.util.UUID;
16

  
17
import org.apache.commons.lang.StringUtils;
18
import org.eclipse.jface.viewers.ISelectionChangedListener;
19
import org.eclipse.jface.viewers.SelectionChangedEvent;
20
import org.eclipse.swt.SWT;
21
import org.eclipse.swt.custom.CLabel;
22
import org.eclipse.swt.events.SelectionEvent;
23
import org.eclipse.swt.events.SelectionListener;
24
import org.eclipse.swt.layout.GridData;
25
import org.eclipse.swt.layout.GridLayout;
26
import org.eclipse.swt.widgets.Combo;
27
import org.eclipse.swt.widgets.Composite;
28
import org.eclipse.swt.widgets.Control;
29

  
30
import eu.etaxonomy.cdm.api.service.ITermService;
31
import eu.etaxonomy.cdm.api.service.IVocabularyService;
32
import eu.etaxonomy.cdm.model.metadata.CdmPreference;
33
import eu.etaxonomy.cdm.model.metadata.IPreferencePredicate;
34
import eu.etaxonomy.cdm.model.metadata.PreferencePredicate;
35
import eu.etaxonomy.cdm.model.term.DefinedTermBase;
36
import eu.etaxonomy.cdm.model.term.TermType;
37
import eu.etaxonomy.cdm.model.term.TermVocabulary;
38
import eu.etaxonomy.cdm.persistence.dto.AbstractTermDto;
39
import eu.etaxonomy.cdm.persistence.dto.TermDto;
40
import eu.etaxonomy.cdm.persistence.dto.TermVocabularyDto;
41
import eu.etaxonomy.taxeditor.editor.definedterm.DefinedTermSorter;
42
import eu.etaxonomy.taxeditor.editor.definedterm.TermDtoContentProvider;
43
import eu.etaxonomy.taxeditor.editor.definedterm.TermDtoLabelProvider;
44
import eu.etaxonomy.taxeditor.l10n.Messages;
45
import eu.etaxonomy.taxeditor.preference.menu.CdmPreferencePage;
46
import eu.etaxonomy.taxeditor.preference.wizard.CheckBoxTreeComposite;
47
import eu.etaxonomy.taxeditor.store.CdmStore;
48

  
49
/**
50
 * @author k.luther
51
 * @since 05.06.2019
52
 *
53
 */
54
abstract public class GeneralTermPreference extends CdmPreferencePage implements ISelectionChangedListener, SelectionListener{
55
    protected CheckBoxTreeComposite treeComposite;
56
    protected List<TermVocabularyDto> vocabularies = new ArrayList<>();
57
    protected Combo useLocalOrAdmin ;
58

  
59
    protected boolean isOverride;
60
    protected boolean allowOverride;
61
    protected CdmPreference pref;
62
    protected IPreferencePredicate predicate;
63

  
64

  
65
    public GeneralTermPreference(){
66
        super();
67

  
68
    }
69

  
70
    public boolean isLocalPref() {
71
        return !isAdminPreference;
72
    }
73

  
74

  
75
    protected TermType type;
76

  
77
    public List<TermVocabularyDto> getVocabularies() {
78
        return vocabularies;
79
    }
80

  
81
    public void setVocabularies(List<TermVocabularyDto> vocabularies) {
82
        this.vocabularies = vocabularies;
83
    }
84

  
85
    public IPreferencePredicate getPredicate() {
86
        return predicate;
87
    }
88

  
89
    public void setPredicate(PreferencePredicate predicate) {
90
        this.predicate = predicate;
91
    }
92

  
93
    /**
94
     * {@inheritDoc}
95
     */
96
    @Override
97
    protected Control createContents(Composite parent) {
98
        Composite container = new Composite(parent, SWT.NULL);
99
        getPreferenceValues();
100
        if (isLocalPref() && !allowOverride){
101
            final CLabel description = new CLabel(parent, SWT.NULL);
102
            description.setText(Messages.NameDetailsViewConfiguration_description_not_available);
103
            this.setDefaultButtonActivated(false);
104
            return parent;
105

  
106
        }
107
        final GridLayout gridLayout = new GridLayout();
108
        gridLayout.numColumns = 2;
109
        container.setLayout(gridLayout);
110
        parent.setLayout(new GridLayout());
111
        useLocalOrAdmin = new Combo(parent, SWT.BORDER | SWT.READ_ONLY);
112
        if (!isAdminPreference){
113
            useLocalOrAdmin.add(LocalOrDefaultEnum.Default.getLabel(), 0);
114
            useLocalOrAdmin.add(LocalOrDefaultEnum.Local.getLabel(), 1);
115

  
116
        }else{
117
            useLocalOrAdmin.add(LocalOrDefaultEnum.AllowOverride.getLabel(), 0);
118
            useLocalOrAdmin.add(LocalOrDefaultEnum.Database.getLabel(), 1);
119
        }
120

  
121

  
122
        treeComposite = new CheckBoxTreeComposite(container, new TermDtoContentProvider(), new TermDtoLabelProvider(), SWT.NONE);
123
        treeComposite.getViewer().setComparator(new DefinedTermSorter());
124
        rememberCheckedValues(getCheckedValuesFromPreferences());
125

  
126
        if (isLocalPref()){
127
            if (isOverride){
128
                useLocalOrAdmin.select(1);
129
            }else{
130
                useLocalOrAdmin.select(0);
131
                treeComposite.setEnabled(false);
132
            }
133
        }else{
134
            if (allowOverride){
135
                useLocalOrAdmin.select(0);
136
            }else{
137
                useLocalOrAdmin.select(1);
138
            }
139
        }
140
        useLocalOrAdmin.addSelectionListener(this);
141

  
142
        GridData data = new GridData(SWT.FILL, SWT.FILL, true, true, 1, 1);
143
        data.heightHint = 300;
144
        treeComposite.setLayoutData(data);
145
        treeComposite.getViewer().addSelectionChangedListener(this);
146

  
147
        return container;
148

  
149
    }
150

  
151
    public String getCheckedValuesFromPreferences(){
152
        String values;
153
        if (!isAdminPreference && isOverride){
154
            values = PreferencesUtil.getStringValue(predicate.getKey(), true);
155
        }else{
156
            values = pref != null ?pref.getValue(): null;
157
        }
158
        return values;
159
    }
160

  
161
    protected void rememberCheckedValues(String checkedValues) {
162
        initialiseVocabularies();
163
        treeComposite.getViewer().getTree().deselectAll();
164
        treeComposite.getViewer().refresh();
165
        treeComposite.getViewer().setInput(getVocabularies());
166

  
167
        if (checkedValues != null && checkedValues != "") { //$NON-NLS-1$
168
            String[] listChecked = checkedValues.split(";"); //$NON-NLS-1$
169
            String[] listCheckedComma = checkedValues.split(","); //$NON-NLS-1$
170
            List<String> checked = new ArrayList<>();
171
            if (listChecked != null ){
172
                checked = Arrays.asList(listChecked);
173
            }
174
            if (listCheckedComma != null && checkedValues.contains(",")){ //$NON-NLS-1$
175
                checked = Arrays.asList(listCheckedComma);
176
            }
177
            List<AbstractTermDto> termsFromStringValues = getTermsFromStringValues(checked);
178
            treeComposite.setCheckedElements(termsFromStringValues.toArray());
179

  
180
        }else{
181
            List<AbstractTermDto> termsFromStringValues = getTermsFromStringValues(new ArrayList<String>());
182
            treeComposite.setCheckedElements(termsFromStringValues.toArray());
183
            treeComposite.getViewer().refresh();
184
            treeComposite.redraw();
185

  
186
        }
187
    }
188

  
189
    protected List<AbstractTermDto> getTermsFromStringValues(List<String> listValue) {
190
        List<AbstractTermDto> termlist = new ArrayList<>();
191
        ITermService termService = CdmStore.getService(ITermService.class);
192
        for (String s : listValue) {
193
            if (!StringUtils.isBlank(s)){
194
                UUID uuid = UUID.fromString(s);
195

  
196
                DefinedTermBase definedTermBase = termService.load(uuid);
197
                if(definedTermBase != null){
198
                    termlist.add(TermDto.fromTerm(definedTermBase, true));
199
                }else{
200
                    IVocabularyService vocabularyService = CdmStore.getService(IVocabularyService.class);
201
                    TermVocabulary termVocabulary = vocabularyService.load(uuid);
202
                    if (termVocabulary != null){
203
                        termlist.add(new TermVocabularyDto(uuid, termVocabulary.getRepresentations(), termVocabulary.getTermType()));
204
                    }
205
                }
206
            }
207
        }
208
        if (listValue.isEmpty()){
209
            List<DefinedTermBase> terms = CdmStore.getTermManager().getAllTerms(type, null);
210
            for (DefinedTermBase term: terms){
211
                if (!(term instanceof eu.etaxonomy.cdm.model.description.Character) && term != null){
212
                    termlist.add(TermDto.fromTerm(term, true));
213
                }
214
            }
215
        }
216

  
217
        return termlist;
218
    }
219

  
220
    protected void initialiseVocabularies() {
221
        if (getVocabularies() != null) {
222
            getVocabularies().clear();
223
        }
224
        List<TermVocabularyDto> vocs = new ArrayList<>();
225
        vocs = CdmStore.getService(IVocabularyService.class).findVocabularyDtoByTermType(type);
226

  
227
        setVocabularies(vocs);
228
    }
229

  
230
    protected void getPreferenceValues(){
231
        pref = PreferencesUtil.getPreferenceFromDB(predicate);
232
        this.allowOverride = pref!= null?pref.isAllowOverride():true;
233
        this.isOverride = PreferencesUtil.getBooleanValue(PreferencesUtil.createOverridePreferenceString(predicate.getKey()));
234
        if (pref == null){
235
            pref = CdmPreference.NewTaxEditorInstance(predicate, null);
236
        }
237
    }
238

  
239
    /**
240
     * {@inheritDoc}
241
     */
242
    @Override
243
    public void selectionChanged(SelectionChangedEvent event) {
244
        this.setApply(true);
245
    }
246

  
247
    /**
248
     * {@inheritDoc}
249
     */
250
    @Override
251
    public void widgetSelected(SelectionEvent e) {
252
        if (e.getSource().equals(useLocalOrAdmin)){
253
            if (useLocalOrAdmin.getText().equals(LocalOrDefaultEnum.Default.getLabel())){
254
                rememberCheckedValues(getCheckedValuesFromPreferences());
255
                treeComposite.setEnabled(false);
256
            }else{
257
                treeComposite.setEnabled(true);
258
            }
259
        }
260
        this.setApply(true);
261
    }
262

  
263
    /**
264
     * {@inheritDoc}
265
     */
266
    @Override
267
    public void widgetDefaultSelected(SelectionEvent e) {
268
        // TODO Auto-generated method stub
269

  
270
    }
271

  
272
    @Override
273
    protected void performDefaults(){
274
        if (!isLocalPref()){
275
            rememberCheckedValues("");
276
            treeComposite.setEnabled(true);
277
        }else{
278
            isOverride = false;
279
            rememberCheckedValues(getCheckedValuesFromPreferences());
280
            treeComposite.setEnabled(false);
281
        }
282
       pref = null;
283
       useLocalOrAdmin.select(0);
284

  
285
       setApply(true);
286
       super.performDefaults();
287

  
288
    }
289

  
290
    @Override
291
    public boolean performOk() {
292
        if (!isApply()){
293
            return true;
294
        }
295
        Object[] checkedElements = treeComposite.getViewer().getCheckedElements();
296
        List<UUID> listUIIDChecked = new ArrayList<>();
297
        Collection<TermDto> preferredTermDtos = new ArrayList<>();
298
        List<DefinedTermBase> preferredTerms = new ArrayList<>();
299
        for (Object o : checkedElements) {
300
            if(o instanceof TermDto){
301
                TermDto termDto = (TermDto) o;
302
                listUIIDChecked.add(termDto.getUuid());
303
                preferredTermDtos.add(termDto);
304
                if (vocabularies.size() > 1){
305
                    preferredTerms.add(CdmStore.getService(ITermService.class).load(termDto.getUuid()));
306
                }
307

  
308
            }
309
        }
310
        String saveCheckedElements = StringUtils.join(listUIIDChecked, ";"); //$NON-NLS-1$
311

  
312
        PreferencesUtil.setStringValue(predicate.getKey(), saveCheckedElements);
313
        String text = this.useLocalOrAdmin.getText();
314
        if (text.equals(LocalOrDefaultEnum.Database.getLabel()) || text.equals(LocalOrDefaultEnum.Default.getLabel())){
315
            PreferencesUtil.setBooleanValue(PreferencesUtil.createOverridePreferenceString(predicate.getKey()), false);
316
        }else if (text.equals(LocalOrDefaultEnum.Local.getLabel())){
317
            PreferencesUtil.setBooleanValue(PreferencesUtil.createOverridePreferenceString(predicate.getKey()), true);
318
        }
319
        if (type == null){
320
            CdmStore.getTermManager().setPreferredTermsByDto(preferredTermDtos, vocabularies.get(0));
321
        }else{
322
            CdmStore.getTermManager().setPreferredTermsByType(preferredTermDtos, type);
323
        }
324
        PreferencesUtil.firePreferencesChanged(this.getClass());
325
        return true;
326
    }
327

  
328
    protected boolean performOkAdmin() {
329
        Object[] checkedElements = treeComposite.getViewer().getCheckedElements();
330
        List<UUID> listUIIDChecked = new ArrayList<>();
331
        List<DefinedTermBase> preferredTerms = new ArrayList<>();
332
        for (Object o : checkedElements) {
333
            if(o instanceof TermDto){
334
                TermDto termDto = (TermDto) o;
335
                listUIIDChecked.add(termDto.getUuid());
336
                preferredTerms.add(CdmStore.getService(ITermService.class).load(termDto.getUuid()));
337
            }
338
        }
339
        String saveCheckedElements = StringUtils.join(listUIIDChecked, ";"); //$NON-NLS-1$
340
        if (StringUtils.isBlank(saveCheckedElements)){
341
            saveCheckedElements = null;
342
        }
343
        CdmPreference savePref = CdmPreference.NewTaxEditorInstance(predicate, saveCheckedElements);
344
        String text = this.useLocalOrAdmin.getText();
345
        if (text.equals(LocalOrDefaultEnum.Database.getLabel()) ){
346
            savePref.setAllowOverride(false);
347
        }else if (text.equals(LocalOrDefaultEnum.AllowOverride.getLabel())){
348
            savePref.setAllowOverride(true);
349
        }
350

  
351
        PreferencesUtil.setPreferenceToDB(savePref);
352
        PreferencesUtil.updateDBPreferences();
353
        PreferencesUtil.firePreferencesChanged(this.getClass());
354
        return true;
355
    }
356

  
357
}
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/preference/GeneralTermPreferencePage.java
1
/**
2
* Copyright (C) 2019 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;
10

  
11
import java.util.ArrayList;
12
import java.util.Collection;
13
import java.util.List;
14
import java.util.UUID;
15

  
16
import org.apache.commons.lang.StringUtils;
17

  
18
import eu.etaxonomy.cdm.api.service.ITermService;
19
import eu.etaxonomy.cdm.model.term.DefinedTermBase;
20
import eu.etaxonomy.cdm.persistence.dto.TermDto;
21
import eu.etaxonomy.taxeditor.store.CdmStore;
22

  
23
/**
24
 * @author k.luther
25
 * @since 26.09.2019
26
 */
27
public class GeneralTermPreferencePage extends AbstractGeneralTermPreference<TermDto> {
28

  
29
    @Override
30
    protected List<TermDto> getTermsFromStringValues(List<String> listValue) {
31
        Collection<TermDto> termlist = new ArrayList<>();
32
        ITermService termService = CdmStore.getService(ITermService.class);
33
        List<UUID> uuidList = new ArrayList();
34
        for (String s : listValue) {
35
            if (!StringUtils.isBlank(s)){
36
                UUID uuid = UUID.fromString(s);
37
                uuidList.add(uuid);
38
            }
39
        }
40
        if (!uuidList.isEmpty()){
41
            termlist = termService.findByUUIDsAsDto(uuidList);
42
        }
43

  
44
        if (listValue.isEmpty()){
45
            List<DefinedTermBase> terms = CdmStore.getTermManager().getAllTerms(type, null);
46
            for (DefinedTermBase term: terms){
47
                if (!(term instanceof eu.etaxonomy.cdm.model.description.Character) && term != null){
48
                    termlist.add(TermDto.fromTerm(term, true));
49
                }
50
            }
51
        }
52

  
53
        return new ArrayList(termlist);
54
    }
55
}
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/preference/NomenclaturalStatusTypePreferences.java
20 20
 * @version 1.0
21 21
 */
22 22
public class NomenclaturalStatusTypePreferences extends
23
		GeneralTermPreference {
23
		GeneralTermPreferencePage {
24 24

  
25 25
	/**
26 26
	 * <p>Constructor for NomenclaturalStatusTypeMenuPreferences.</p>
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/preference/PreferencesUtil.java
1579 1579
    }
1580 1580
    public static Abcd206ImportConfigurator getLocalAbcdImportConfigurator(boolean skipCheckOverride){
1581 1581
       Abcd206ImportConfigurator config = Abcd206ImportConfigurator.NewInstance(null,null);
1582
       CdmPreference pref = CdmPreferenceCache.instance().get(PreferencePredicate.AbcdImportConfig.getKey());
1583
       if (pref.isAllowOverride()){
1582 1584
       String configString = PreferencesUtil.getStringValue(IPreferenceKeys.LAST_USED_ABCD_CONFIG);
1583
       if (StringUtils.isBlank(configString)){
1584
           configString = getStringValue(PreferencePredicate.AbcdImportConfig.getKey(), skipCheckOverride);
1585
           extractAbcdConfiguratorFromPreferenceString(config, configString);
1586
           if (config.getNomenclaturalCode() == null){
1587
               config.setNomenclaturalCode(getPreferredNomenclaturalCode());
1585
           if (StringUtils.isBlank(configString)){
1586
               configString = getStringValue(PreferencePredicate.AbcdImportConfig.getKey(), skipCheckOverride);
1587
               extractAbcdConfiguratorFromPreferenceString(config, configString);
1588
               if (config.getNomenclaturalCode() == null){
1589
                   config.setNomenclaturalCode(getPreferredNomenclaturalCode());
1590
               }
1591
           }else{
1592
               config = Abcd206ImportConfigurator.NewInstance(null, null);
1593
               PreferencesUtil.extractAbcdConfiguratorFromPreferenceString(config, configString);
1588 1594
           }
1589 1595
       }else{
1590
           config = Abcd206ImportConfigurator.NewInstance(null, null);
1591
           PreferencesUtil.extractAbcdConfiguratorFromPreferenceString(config, configString);
1596
           extractAbcdConfiguratorFromPreferenceString(config, pref.getValue());
1592 1597
       }
1593 1598

  
1594 1599
       return config;
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/preference/RankPreference.java
26 26
 * @since 05.06.2019
27 27
 *
28 28
 */
29
public class RankPreference extends GeneralTermPreference {
29
public class RankPreference extends GeneralTermPreferencePage {
30 30

  
31 31
    public RankPreference(){
32 32
        super();
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/preference/menu/CommonNameLanguagePreferences.java
11 11

  
12 12
import eu.etaxonomy.cdm.model.metadata.PreferencePredicate;
13 13
import eu.etaxonomy.cdm.model.term.TermType;
14
import eu.etaxonomy.taxeditor.preference.GeneralTermPreference;
14
import eu.etaxonomy.taxeditor.preference.GeneralTermPreferencePage;
15 15

  
16 16
/**
17 17
 * <p>LanguageMenuPreferences class.</p>
......
20 20
 * @created 24.08.2009
21 21
 * @version 1.0
22 22
 */
23
public class CommonNameLanguagePreferences extends GeneralTermPreference {
23
public class CommonNameLanguagePreferences extends GeneralTermPreferencePage {
24 24

  
25 25
	/** Constant <code>ID="eu.etaxonomy.taxeditor.preferences.lang"{trunked}</code> */
26 26
	public final static String ID = "eu.etaxonomy.taxeditor.preferences.languages"; //$NON-NLS-1$
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/preference/menu/FeatureMenuPreferences.java
17 17
import eu.etaxonomy.cdm.model.term.VocabularyEnum;
18 18
import eu.etaxonomy.cdm.persistence.dto.TermVocabularyDto;
19 19
import eu.etaxonomy.taxeditor.editor.definedterm.input.TermEditorInput;
20
import eu.etaxonomy.taxeditor.preference.GeneralTermPreference;
20
import eu.etaxonomy.taxeditor.preference.GeneralTermPreferencePage;
21 21
import eu.etaxonomy.taxeditor.store.CdmStore;
22 22

  
23 23
/**
......
28 28
 * @created 17.09.2008
29 29
 * @version 1.0
30 30
 */
31
public class FeatureMenuPreferences extends GeneralTermPreference{
31
public class FeatureMenuPreferences extends GeneralTermPreferencePage{
32 32

  
33 33
    /** Constant <code>PLUGIN_ID="eu.etaxonomy.taxeditor.preferences.feat"{trunked}</code> */
34 34
    public static final String PLUGIN_ID = "eu.etaxonomy.taxeditor.preferences.nameFeature"; //$NON-NLS-1$
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/preference/menu/LanguageMenuPreferences.java
11 11

  
12 12
import eu.etaxonomy.cdm.model.metadata.PreferencePredicate;
13 13
import eu.etaxonomy.cdm.model.term.TermType;
14
import eu.etaxonomy.taxeditor.preference.GeneralTermPreference;
14
import eu.etaxonomy.taxeditor.preference.GeneralTermPreferencePage;
15 15

  
16 16
/**
17 17
 * <p>LanguageMenuPreferences class.</p>
......
20 20
 * @created 24.08.2009
21 21
 * @version 1.0
22 22
 */
23
public class LanguageMenuPreferences extends GeneralTermPreference {
23
public class LanguageMenuPreferences extends GeneralTermPreferencePage {
24 24

  
25 25
	/** Constant <code>ID="eu.etaxonomy.taxeditor.preferences.lang"{trunked}</code> */
26 26
	public final static String ID = "eu.etaxonomy.taxeditor.preferences.languages"; //$NON-NLS-1$
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/preference/menu/MarkerTypeMenuPreferences.java
11 11

  
12 12
import eu.etaxonomy.cdm.model.metadata.PreferencePredicate;
13 13
import eu.etaxonomy.cdm.model.term.TermType;
14
import eu.etaxonomy.taxeditor.preference.GeneralTermPreference;
14
import eu.etaxonomy.taxeditor.preference.GeneralTermPreferencePage;
15 15

  
16 16
/**
17 17
 * <p>MarkerTypeMenuPreferences class.</p>
......
20 20
 * @created Aug 28, 2009
21 21
 * @version 1.0
22 22
 */
23
public class MarkerTypeMenuPreferences extends GeneralTermPreference{
23
public class MarkerTypeMenuPreferences extends GeneralTermPreferencePage{
24 24

  
25 25
	/**
26 26
	 * <p>Constructor for MarkerTypeMenuPreferences.</p>
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/preference/menu/MeasurementUnitMenuPreferences.java
5 5

  
6 6
import eu.etaxonomy.cdm.model.metadata.PreferencePredicate;
7 7
import eu.etaxonomy.cdm.model.term.TermType;
8
import eu.etaxonomy.taxeditor.preference.GeneralTermPreference;
8
import eu.etaxonomy.taxeditor.preference.GeneralTermPreferencePage;
9 9

  
10 10
/**
11 11
 * <p>MeasurementUnitMenuPreferences class.</p>
......
13 13
 * @author n.hoffmann
14 14
 * @version $Id: $
15 15
 */
16
public class MeasurementUnitMenuPreferences extends GeneralTermPreference {
16
public class MeasurementUnitMenuPreferences extends GeneralTermPreferencePage {
17 17

  
18 18
	/**
19 19
	 * <p>Constructor for MeasurementUnitMenuPreferences.</p>
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/preference/menu/NameFeatureMenuPreference.java
16 16
import eu.etaxonomy.cdm.model.term.TermType;
17 17
import eu.etaxonomy.cdm.model.term.VocabularyEnum;
18 18
import eu.etaxonomy.cdm.persistence.dto.TermVocabularyDto;
19
import eu.etaxonomy.taxeditor.preference.GeneralTermPreference;
19
import eu.etaxonomy.taxeditor.preference.GeneralTermPreferencePage;
20 20
import eu.etaxonomy.taxeditor.preference.PreferencesUtil;
21 21
import eu.etaxonomy.taxeditor.store.CdmStore;
22 22

  
......
25 25
 * @since 14.05.2019
26 26
 *
27 27
 */
28
public class NameFeatureMenuPreference extends GeneralTermPreference {
28
public class NameFeatureMenuPreference extends GeneralTermPreferencePage {
29 29
    /** Constant <code>PLUGIN_ID="eu.etaxonomy.taxeditor.preferences.feat"{trunked}</code> */
30 30
    public static final String PLUGIN_ID = "eu.etaxonomy.taxeditor.preferences.nameFeature"; //$NON-NLS-1$
31 31

  
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/preference/menu/NameRelationshipTypeMenuPreferences.java
11 11

  
12 12
import eu.etaxonomy.cdm.model.metadata.PreferencePredicate;
13 13
import eu.etaxonomy.cdm.model.term.TermType;
14
import eu.etaxonomy.taxeditor.preference.GeneralTermPreference;
14
import eu.etaxonomy.taxeditor.preference.GeneralTermPreferencePage;
15 15

  
16 16
/**
17 17
 * <p>NameRelationshipTypeMenuPreferences class.</p>
......
21 21
 * @version 1.0
22 22
 */
23 23
public class NameRelationshipTypeMenuPreferences extends
24
		GeneralTermPreference {
24
		GeneralTermPreferencePage {
25 25

  
26 26

  
27 27
	/**
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/preference/menu/NameTypeDesignationStatusMenuPreferences.java
18 18
import eu.etaxonomy.cdm.model.metadata.PreferencePredicate;
19 19
import eu.etaxonomy.cdm.model.term.TermType;
20 20
import eu.etaxonomy.cdm.persistence.dto.TermDto;
21
import eu.etaxonomy.taxeditor.preference.GeneralTermPreference;
21
import eu.etaxonomy.taxeditor.preference.GeneralTermPreferencePage;
22 22
import eu.etaxonomy.taxeditor.preference.LocalOrDefaultEnum;
23 23
import eu.etaxonomy.taxeditor.preference.PreferencesUtil;
24 24
import eu.etaxonomy.taxeditor.store.CdmStore;
......
31 31
 * @version 1.0
32 32
 */
33 33
public class NameTypeDesignationStatusMenuPreferences extends
34
		GeneralTermPreference {
34
		GeneralTermPreferencePage {
35 35
    /**
36 36
     * <p>Constructor for NameTypeDesignationStatusMenuPreferences.</p>
37 37
     */
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/preference/menu/NamedAreaTypeMenuPreferences.java
11 11

  
12 12
import eu.etaxonomy.cdm.model.metadata.PreferencePredicate;
13 13
import eu.etaxonomy.cdm.model.term.TermType;
14
import eu.etaxonomy.taxeditor.preference.GeneralTermPreference;
14
import eu.etaxonomy.taxeditor.preference.GeneralTermPreferencePage;
15 15

  
16 16
/**
17 17
 * <p>NamedAreaTypeMenuPreferences class.</p>
......
20 20
 * @created May 11, 2010
21 21
 * @version 1.0
22 22
 */
23
public class NamedAreaTypeMenuPreferences extends GeneralTermPreference{
23
public class NamedAreaTypeMenuPreferences extends GeneralTermPreferencePage{
24 24

  
25 25
	/**
26 26
	 * <p>Constructor for NamedAreaTypeMenuPreferences.</p>
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/preference/menu/SpecimenTypeDesignationStatusMenuPreferences.java
18 18
import eu.etaxonomy.cdm.model.metadata.PreferencePredicate;
19 19
import eu.etaxonomy.cdm.model.term.TermType;
20 20
import eu.etaxonomy.cdm.persistence.dto.TermDto;
21
import eu.etaxonomy.taxeditor.preference.GeneralTermPreference;
21
import eu.etaxonomy.taxeditor.preference.GeneralTermPreferencePage;
22 22
import eu.etaxonomy.taxeditor.preference.LocalOrDefaultEnum;
23 23
import eu.etaxonomy.taxeditor.preference.PreferencesUtil;
24 24
import eu.etaxonomy.taxeditor.store.CdmStore;
......
31 31
 * @version 1.0
32 32
 */
33 33
public class SpecimenTypeDesignationStatusMenuPreferences extends
34
		GeneralTermPreference {
34
		GeneralTermPreferencePage {
35 35
    /**
36 36
    * <p>Constructor for SpecimenTypeDesignationStatusMenuPreferences.</p>
37 37
    */
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/preference/menu/StageMenuPreferences.java
11 11

  
12 12
import eu.etaxonomy.cdm.model.metadata.PreferencePredicate;
13 13
import eu.etaxonomy.cdm.model.term.TermType;
14
import eu.etaxonomy.taxeditor.preference.GeneralTermPreference;
14
import eu.etaxonomy.taxeditor.preference.GeneralTermPreferencePage;
15 15

  
16 16

  
17 17
/**
......
21 21
 * @created Jun 25, 2010
22 22
 * @version 1.0
23 23
 */
24
public class StageMenuPreferences extends GeneralTermPreference {
24
public class StageMenuPreferences extends GeneralTermPreferencePage {
25 25

  
26 26
	/**
27 27
	 * <p>Constructor for StageMenuPreferences.</p>
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/preference/menu/TaxonRelationshipTypeMenuPreferences.java
11 11

  
12 12
import eu.etaxonomy.cdm.model.metadata.PreferencePredicate;
13 13
import eu.etaxonomy.cdm.model.term.TermType;
14
import eu.etaxonomy.taxeditor.preference.GeneralTermPreference;
14
import eu.etaxonomy.taxeditor.preference.GeneralTermPreferencePage;
15 15

  
16 16
/**
17 17
 * <p>TaxonRelationshipTypeMenuPreferences class.</p>
......
21 21
 * @version 1.0
22 22
 */
23 23
public class TaxonRelationshipTypeMenuPreferences extends
24
		GeneralTermPreference {
24
		GeneralTermPreferencePage {
25 25

  
26 26
	/**
27 27
	 * <p>Constructor for TaxonRelationshipTypeMenuPreferences.</p>
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/preference/wizard/AbstractAdminTermSelectionWizardPage.java
16 16

  
17 17
import eu.etaxonomy.cdm.model.metadata.CdmPreference;
18 18
import eu.etaxonomy.cdm.model.term.TermType;
19
import eu.etaxonomy.cdm.persistence.dto.AbstractTermDto;
19 20
import eu.etaxonomy.taxeditor.preference.PreferencesUtil;
20 21

  
21 22

  
......
24 25
 * @since 22.11.2018
25 26
 *
26 27
 */
27
public abstract class AbstractAdminTermSelectionWizardPage extends AbstractTermSelectionWizardPage
28
        {
29
    private boolean localPrefExist = true;
28
public abstract class AbstractAdminTermSelectionWizardPage<T extends AbstractTermDto> extends AbstractTermSelectionWizardPage{
29
    //private boolean localPrefExist = true;
30 30

  
31 31
    /**
32 32
     * @param pageName
......
72 72
            });
73 73
    }
74 74

  
75
    public boolean isLocalPrefExist() {
76
        return localPrefExist;
77
    }
78

  
79
    public void setLocalPrefExist(boolean localPrefExist) {
80
        this.localPrefExist = localPrefExist;
81
    }
75
//    public boolean isLocalPrefExist() {
76
//        return localPrefExist;
77
//    }
78
//
79
//    public void setLocalPrefExist(boolean localPrefExist) {
80
//        this.localPrefExist = localPrefExist;
81
//    }
82 82

  
83 83
    public CdmPreference getPreference(){
84 84
        return pref;
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/preference/wizard/AbstractTermSelectionWizardPage.java
12 12
import java.util.ArrayList;
13 13
import java.util.Arrays;
14 14
import java.util.List;
15
import java.util.UUID;
16 15

  
17
import org.apache.commons.lang.StringUtils;
18 16
import org.eclipse.jface.viewers.CheckboxTreeViewer;
19 17
import org.eclipse.jface.wizard.WizardPage;
20 18
import org.eclipse.swt.SWT;
19
import org.eclipse.swt.events.SelectionAdapter;
20
import org.eclipse.swt.events.SelectionEvent;
21 21
import org.eclipse.swt.layout.GridData;
22 22
import org.eclipse.swt.layout.GridLayout;
23
import org.eclipse.swt.widgets.Button;
23 24
import org.eclipse.swt.widgets.Composite;
24 25

  
25
import eu.etaxonomy.cdm.api.service.ITermService;
26 26
import eu.etaxonomy.cdm.api.service.IVocabularyService;
27
import eu.etaxonomy.cdm.model.term.DefinedTermBase;
27
import eu.etaxonomy.cdm.model.metadata.CdmPreference;
28 28
import eu.etaxonomy.cdm.model.term.TermType;
29
import eu.etaxonomy.cdm.model.term.TermVocabulary;
30 29
import eu.etaxonomy.cdm.persistence.dto.AbstractTermDto;
31
import eu.etaxonomy.cdm.persistence.dto.TermDto;
32 30
import eu.etaxonomy.cdm.persistence.dto.TermVocabularyDto;
33 31
import eu.etaxonomy.taxeditor.editor.definedterm.DefinedTermSorter;
34 32
import eu.etaxonomy.taxeditor.editor.definedterm.TermDtoContentProvider;
......
40 38
 * @since 04.06.2018
41 39
 *
42 40
 */
43
public abstract class AbstractTermSelectionWizardPage extends WizardPage {
41
public abstract class AbstractTermSelectionWizardPage<T extends AbstractTermDto> extends WizardPage {
44 42

  
45 43
    protected CheckBoxTreeComposite treeComposite;
46 44
    private List<TermVocabularyDto> vocabularies = new ArrayList<>();
47 45
    boolean localPref;
46
    protected CdmPreference pref;
47
    protected boolean override;
48 48

  
49 49
    protected TermType type;
50 50

  
51 51
    protected AbstractTermSelectionWizardPage(String pageName, TermType type) {
52 52
        super(pageName);
53
        // TODO check if configuration exists
54
       // CdmStore.getCurrentSessionManager().bindNullSession();
55 53
        this.type = type;
56 54

  
57 55
    }
......
84 82
        vocabularies = vocs;
85 83
    }
86 84

  
85
    public CdmPreference getPreference() {
86
        return pref;
87
    }
88

  
87 89
    protected void rememberCheckedValues(String checkedValues) {
88 90
        initialiseVocabularies();
89 91

  
......
99 101
            if (listCheckedComma != null && checkedValues.contains(",")){ //$NON-NLS-1$
100 102
                checked = Arrays.asList(listCheckedComma);
101 103
            }
102
            List<AbstractTermDto> termsFromStringValues = getTermsFromStringValues(checked);
104
            List<T> termsFromStringValues = getTermsFromStringValues(checked);
103 105
            treeComposite.setCheckedElements(termsFromStringValues.toArray());
104 106

  
105 107
        }else{
106
            List<AbstractTermDto> termsFromStringValues = getTermsFromStringValues(new ArrayList<String>());
108
            List<T> termsFromStringValues = getTermsFromStringValues(new ArrayList<String>());
107 109
            treeComposite.setCheckedElements(termsFromStringValues.toArray());
108 110
        }
109 111
    }
110 112

  
111
    protected List<AbstractTermDto> getTermsFromStringValues(List<String> listValue) {
112
        List<AbstractTermDto> termlist = new ArrayList<>();
113
        ITermService termService = CdmStore.getService(ITermService.class);
114
        for (String s : listValue) {
115
            if (!StringUtils.isBlank(s)){
116
                UUID uuid = UUID.fromString(s);
117

  
118
                DefinedTermBase definedTermBase = termService.load(uuid);
119
                if(definedTermBase != null){
120
                    termlist.add(TermDto.fromTerm(definedTermBase, true));
121
                }else{
122
                    IVocabularyService vocabularyService = CdmStore.getService(IVocabularyService.class);
123
                    TermVocabulary termVocabulary = vocabularyService.load(uuid);
124
                    if (termVocabulary != null){
125
                        termlist.add(new TermVocabularyDto(uuid, termVocabulary.getRepresentations(), termVocabulary.getTermType()));
126
                    }
127
                }
128
            }
129
        }
130
        if (listValue.isEmpty()){
131
            List<DefinedTermBase> terms = CdmStore.getTermManager().getAllTerms(type, null);
132
            for (DefinedTermBase term: terms){
133
                termlist.add(TermDto.fromTerm(term, true));
134
            }
135
        }
136 113

  
137
        return termlist;
138
    }
139 114

  
140 115
    protected void initialiseVocabularies() {
141 116
        if (getVocabularies() != null) {
......
149 124

  
150 125
    protected abstract List<TermVocabularyDto> getVocabulariesFromPreference();
151 126

  
127
    /**
128
     * @param listValue
129
     * @return
130
     */
131
    protected abstract List<T> getTermsFromStringValues(List<String> listValue);
132

  
133
    protected void createAllowOverrideButton(Composite parent) {
134
        final Button activateCheckButton = new Button(parent, SWT.CHECK);
135
       if (localPref){
136
           activateCheckButton.setText("Override");
137
           activateCheckButton.setSelection(override);
138
       }else{
139
           activateCheckButton.setText("Allow Override");
140
           activateCheckButton.setSelection(pref.isAllowOverride());
141
       }
142

  
143

  
144

  
145
        activateCheckButton.addSelectionListener(new SelectionAdapter(){
146
                @Override
147
                public void widgetSelected(SelectionEvent e) {
148
                    pref.setAllowOverride(activateCheckButton.getSelection());
149
                    override = activateCheckButton.getSelection();
150

  
151
                }
152
            });
153
    }
152 154

  
153 155
}
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/preference/wizard/AvailableAreaVocabulariesPage.java
11 11
import java.util.ArrayList;
12 12
import java.util.Arrays;
13 13
import java.util.List;
14
import java.util.UUID;
14 15

  
15 16
import org.apache.commons.lang.StringUtils;
16 17
import org.eclipse.swt.widgets.Composite;
17 18

  
19
import eu.etaxonomy.cdm.api.service.IVocabularyService;
18 20
import eu.etaxonomy.cdm.model.metadata.CdmPreference;
19 21
import eu.etaxonomy.cdm.model.term.TermType;
20
import eu.etaxonomy.cdm.persistence.dto.AbstractTermDto;
21 22
import eu.etaxonomy.cdm.persistence.dto.TermVocabularyDto;
22 23
import eu.etaxonomy.taxeditor.editor.definedterm.RootElementsOnlyTreeContentProvider;
23 24
import eu.etaxonomy.taxeditor.l10n.Messages;
24 25
import eu.etaxonomy.taxeditor.preference.PreferencesUtil;
26
import eu.etaxonomy.taxeditor.store.CdmStore;
25 27

  
26 28

  
27 29
/**
......
29 31
 * @since 04.06.2018
30 32
 *
31 33
 */
32
public class AvailableAreaVocabulariesPage  extends AbstractAdminTermSelectionWizardPage{
34
public class AvailableAreaVocabulariesPage extends AbstractTermSelectionWizardPage<TermVocabularyDto>{
33 35

  
34 36
    String featureTitle;
35 37

  
36 38
    public AvailableAreaVocabulariesPage(String pageName, boolean localPref, CdmPreference pref, String featureTitle) {
37
        super(pageName, TermType.NamedArea, pref );
39
        super(pageName, TermType.NamedArea);
38 40
        this.localPref = localPref;
39 41
        this.featureTitle = featureTitle;
42
        this.pref = pref;
40 43

  
41 44

  
42 45
    }
43 46

  
44
    public AvailableAreaVocabulariesPage(String pageName, boolean localPref, CdmPreference pref, String featureTitle, boolean localPrefExist) {
45
        this(pageName, localPref, pref, featureTitle);
46
        setLocalPrefExist(localPrefExist);
47
    }
47
//    public AvailableAreaVocabulariesPage(String pageName, boolean localPref, CdmPreference pref, String featureTitle) {
48
//        this(pageName, localPref, pref, featureTitle);
49
//
50
//    }
48 51

  
49 52
    @Override
50 53
    public void createControl(Composite parent) {
......
106 109
            if (listCheckedComma != null && checkedValues.contains(",")){ //$NON-NLS-1$
107 110
                checked = Arrays.asList(listCheckedComma);
108 111
            }
109
            List<AbstractTermDto> termsFromStringValues = getTermsFromStringValues(checked);
112
            List<TermVocabularyDto> termsFromStringValues = getTermsFromStringValues(checked);
110 113
            treeComposite.setCheckedElements(termsFromStringValues.toArray());
111 114

  
112 115
        }else{
......
115 118
        }
116 119
    }
117 120

  
121
    @Override
122
    protected List<TermVocabularyDto> getTermsFromStringValues(List<String> listValue) {
123
        List<TermVocabularyDto> termlist = new ArrayList<>();
124
        List<UUID> uuidList = new ArrayList<>();
125
        for (String s : listValue) {
126
            if (!StringUtils.isBlank(s)){
127
                UUID uuid = UUID.fromString(s);
128
                uuidList.add(uuid);
129
            }
130
        }
131
        IVocabularyService vocabularyService = CdmStore.getService(IVocabularyService.class);
132

  
133
        termlist = vocabularyService.findVocabularyDtoByVocabularyUuids(uuidList);
134

  
135

  
136

  
137
        return termlist;
138

  
139
    }
140

  
141

  
118 142

  
119 143

  
120 144
}
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/preference/wizard/AvailableDistributionPage.java
20 20
import org.apache.commons.lang.StringUtils;
21 21
import org.eclipse.swt.widgets.Composite;
22 22

  
23
import eu.etaxonomy.cdm.api.service.ITermService;
23 24
import eu.etaxonomy.cdm.api.service.IVocabularyService;
24 25
import eu.etaxonomy.cdm.model.metadata.PreferencePredicate;
26
import eu.etaxonomy.cdm.model.term.DefinedTermBase;
25 27
import eu.etaxonomy.cdm.model.term.TermType;
26 28
import eu.etaxonomy.cdm.model.term.TermVocabulary;
27
import eu.etaxonomy.cdm.persistence.dto.AbstractTermDto;
29
import eu.etaxonomy.cdm.persistence.dto.TermDto;
28 30
import eu.etaxonomy.cdm.persistence.dto.TermVocabularyDto;
29 31
import eu.etaxonomy.taxeditor.l10n.Messages;
30 32
import eu.etaxonomy.taxeditor.preference.PreferencesUtil;
......
35 37
 * @date 21.07.2014
36 38
 *
37 39
 */
38
public class AvailableDistributionPage extends AbstractTermSelectionWizardPage {
40
public class AvailableDistributionPage extends AbstractTermSelectionWizardPage<TermDto> {
39 41

  
40 42
    protected AvailableDistributionPage(String pageName) {
41 43
        super(pageName, TermType.NamedArea);
......
75 77
            if (listCheckedComma != null && checkedValues.contains(",")){ //$NON-NLS-1$
76 78
                checked = Arrays.asList(listCheckedComma);
77 79
            }
78
            List<AbstractTermDto> termsFromStringValues = getTermsFromStringValues(checked);
80
            List<TermDto> termsFromStringValues = getTermsFromStringValues(checked);
79 81
            treeComposite.setCheckedElements(termsFromStringValues.toArray());
80 82
        }
81 83

  
......
147 149
        setVocabularies(vocs);
148 150
    }
149 151

  
152
    @Override
153
    protected List<TermDto> getTermsFromStringValues(List<String> listValue) {
154

  
155
            List<TermDto> termlist = new ArrayList<>();
156
            ITermService termService = CdmStore.getService(ITermService.class);
157
            List<UUID> uuidList = new ArrayList();
158
            for (String s : listValue) {
159
                if (!StringUtils.isBlank(s)){
160
                    UUID uuid = UUID.fromString(s);
161
                    uuidList.add(uuid);
162
                }
163
            }
164
            termlist = new ArrayList(termService.findByUUIDsAsDto(uuidList));
165

  
166

  
167
            if (listValue.isEmpty()){
168
                List<DefinedTermBase> terms = CdmStore.getTermManager().getAllTerms(type, null);
169
                for (DefinedTermBase term: terms){
170
                    termlist.add(TermDto.fromTerm(term, true));
171
                }
172
            }
173

  
174
            return termlist;
175

  
176

  
177
    }
178

  
150 179
}
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/preference/wizard/AvailableDistributionStatusPage.java
15 15
import eu.etaxonomy.cdm.model.metadata.CdmPreference;
16 16
import eu.etaxonomy.cdm.model.metadata.PreferencePredicate;
17 17
import eu.etaxonomy.cdm.model.term.TermType;
18
import eu.etaxonomy.cdm.persistence.dto.TermDto;
18 19
import eu.etaxonomy.cdm.persistence.dto.TermVocabularyDto;
19 20
import eu.etaxonomy.taxeditor.l10n.Messages;
20 21
import eu.etaxonomy.taxeditor.preference.PreferencesUtil;
......
26 27
 * @since 05.10.2018
27 28
 *
28 29
 */
29
public class AvailableDistributionStatusPage extends AbstractAdminTermSelectionWizardPage {
30
public class AvailableDistributionStatusPage extends AbstractTermSelectionWizardPage<TermDto> {
30 31

  
31 32

  
32 33

  
33 34
    public AvailableDistributionStatusPage(String pageName, CdmPreference pref, boolean localPref) {
34
        super(pageName, TermType.PresenceAbsenceTerm, pref);
35
        super(pageName, TermType.PresenceAbsenceTerm);
36
        this.pref = pref;
35 37
        this.localPref = localPref;
36 38
    }
37 39

  
......
69 71
        return null;
70 72
    }
71 73

  
74
    @Override
75
    protected List<TermDto> getTermsFromStringValues(List<String> listValue) {
76
        // TODO Auto-generated method stub
77
        return null;
78
    }
... This diff was truncated because it exceeds the maximum size that can be displayed.

Also available in: Unified diff