save status for distribution editor locally the same as in db
[taxeditor.git] / eu.etaxonomy.taxeditor.store / src / main / java / eu / etaxonomy / taxeditor / preference / wizard / AvailableDistributionStatusAdminWizard.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 19.11.2018
34 *
35 */
36 public class AvailableDistributionStatusAdminWizard extends Wizard implements IConversationEnabled{
37 private ConversationHolder conversation;
38 private final AvailableDistributionStatusPage aPage;
39 CdmPreference pref;
40
41 public AvailableDistributionStatusAdminWizard() {
42 setWindowTitle(Messages.AvailableDistributionStatusWizard_WIZARD_TITLE);
43 // TODO if preferenceStore has elements checked load elements in wizard
44 pref = PreferencesUtil.getPreferenceFromDB(PreferencePredicate.AvailableDistributionStatus);
45
46 if (pref == null){
47 pref = CdmPreference.NewTaxEditorInstance(PreferencePredicate.AvailableDistributionStatus, null);
48 }
49 aPage = new AvailableDistributionStatusPage(Messages.AvailableDistributionStatusWizard_PAGE_TITLE, pref, false);
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 pref = aPage.getPreference();
91
92 List<UUID> listUIIDChecked = new ArrayList<>();
93 List<DefinedTermBase> preferredTerms = new ArrayList<>();
94 for (Object o : checkedElements) {
95 if(o instanceof TermDto){
96 TermDto termDto = (TermDto) o;
97 listUIIDChecked.add(termDto.getUuid());
98 preferredTerms.add(CdmStore.getService(ITermService.class).load(termDto.getUuid()));
99 }
100 }
101 String saveCheckedElements = StringUtils.join(listUIIDChecked, ";"); //$NON-NLS-1$
102 CdmPreference savePref = CdmPreference.NewTaxEditorInstance(PreferencePredicate.AvailableDistributionStatus, saveCheckedElements);
103 savePref.setAllowOverride(pref.isAllowOverride());
104 PreferencesUtil.setPreferenceToDB(savePref);
105
106
107 // aPage.getVocabularies().get(0).getTerms()
108 // .forEach(dto -> terms.add(CdmStore.getService(ITermService.class).load(dto.getUuid())));
109
110 PreferencesUtil.firePreferencesChanged(this.getClass());
111 return true;
112 }
113
114 @Override
115 public void update(CdmDataChangeMap changeEvents) {
116
117 }
118
119 @Override
120 public ConversationHolder getConversationHolder() {
121 if (conversation == null) {
122 conversation = CdmStore.createConversation();
123 }
124 return conversation;
125 }
126
127 }