ref #7849: default values in local preferences
[taxeditor.git] / eu.etaxonomy.taxeditor.store / src / main / java / eu / etaxonomy / taxeditor / preference / wizard / AvailableDistributionStatusWizard.java
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 import java.util.UUID;
14
15 import org.apache.commons.lang.StringUtils;
16 import org.eclipse.jface.wizard.IWizardPage;
17 import org.eclipse.jface.wizard.Wizard;
18
19 import eu.etaxonomy.cdm.api.conversation.ConversationHolder;
20 import eu.etaxonomy.cdm.api.conversation.IConversationEnabled;
21 import eu.etaxonomy.cdm.api.service.ITermService;
22 import eu.etaxonomy.cdm.model.common.DefinedTermBase;
23 import eu.etaxonomy.cdm.model.metadata.CdmPreference;
24 import eu.etaxonomy.cdm.model.metadata.PreferencePredicate;
25 import eu.etaxonomy.cdm.persistence.dto.TermDto;
26 import eu.etaxonomy.cdm.persistence.hibernate.CdmDataChangeMap;
27 import eu.etaxonomy.taxeditor.l10n.Messages;
28 import eu.etaxonomy.taxeditor.preference.PreferencesUtil;
29 import eu.etaxonomy.taxeditor.store.CdmStore;
30
31 /**
32 * @author k.luther
33 * @since 05.10.2018
34 *
35 */
36 public class AvailableDistributionStatusWizard extends Wizard implements IConversationEnabled{
37 private ConversationHolder conversation;
38 private final AvailableDistributionStatusPage aPage;
39 CdmPreference pref;
40
41 public AvailableDistributionStatusWizard() {
42 setWindowTitle(Messages.AvailableDistributionStatusWizard_WIZARD_TITLE);
43 // TODO if preferenceStore has elements checked load elements in wizard
44 pref = PreferencesUtil.getPreferenceFromDB(PreferencePredicate.AvailableDistributionStatus);
45 if (pref == null) {
46 pref = CdmPreference.NewTaxEditorInstance(PreferencePredicate.AvailableDistributionStatus, null);
47 }
48 aPage = new AvailableDistributionStatusPage(Messages.AvailableDistributionStatusWizard_PAGE_TITLE, pref, true);
49
50 }
51
52 @Override
53 public void addPages() {
54 addPage(aPage);
55 }
56
57 @Override
58 public IWizardPage getPage(String pageName) {
59
60 return aPage;
61 }
62
63 @Override
64 public int getPageCount() {
65 return 1;
66 }
67
68 @Override
69 public IWizardPage[] getPages() {
70 IWizardPage[] pages = new IWizardPage[1];
71 pages [0] = aPage;
72 return pages;
73 }
74
75 @Override
76 public String getWindowTitle() {
77
78 return Messages.AvailableDistributionStatusWizard_WINDOW_TITLE;
79 }
80
81 @Override
82 public boolean performCancel() {
83 // TODO Auto-generated method stub
84 return true;
85 }
86
87 @Override
88 public boolean performFinish() {
89 Object[] checkedElements = aPage.getViewer().getCheckedElements();
90
91 List<UUID> listUIIDChecked = new ArrayList<>();
92 List<DefinedTermBase> preferredTerms = new ArrayList<>();
93 for (Object o : checkedElements) {
94 if(o instanceof TermDto){
95 TermDto termDto = (TermDto) o;
96 listUIIDChecked.add(termDto.getUuid());
97 preferredTerms.add(CdmStore.getService(ITermService.class).load(termDto.getUuid()));
98 }
99 }
100 String saveCheckedElements = StringUtils.join(listUIIDChecked, ";"); //$NON-NLS-1$
101
102 PreferencesUtil.setStringValue(PreferencePredicate.AvailableDistributionStatus.getKey(), saveCheckedElements);
103 PreferencesUtil.setBooleanValue(PreferencesUtil.createOverridePreferenceString(PreferencePredicate.AvailableDistributionStatus.getKey()), aPage.override);
104 PreferencesUtil.firePreferencesChanged(this.getClass());
105 return true;
106 }
107
108 @Override
109 public void update(CdmDataChangeMap changeEvents) {
110
111 }
112
113 @Override
114 public ConversationHolder getConversationHolder() {
115 if (conversation == null) {
116 conversation = CdmStore.createConversation();
117 }
118 return conversation;
119 }
120
121 }