Merge branch 'release/5.18.0'
[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.lang3.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.term.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
91 pref = aPage.getPreference();
92
93 List<UUID> listUIIDChecked = new ArrayList<>();
94 List<DefinedTermBase> preferredTerms = new ArrayList<>();
95 for (Object o : checkedElements) {
96 if(o instanceof TermDto){
97 TermDto termDto = (TermDto) o;
98 listUIIDChecked.add(termDto.getUuid());
99 preferredTerms.add(CdmStore.getService(ITermService.class).load(termDto.getUuid()));
100 }
101 }
102 String saveCheckedElements = StringUtils.join(listUIIDChecked, ";"); //$NON-NLS-1$
103 if (StringUtils.isBlank(saveCheckedElements)){
104 saveCheckedElements = null;
105 }
106 CdmPreference savePref = CdmPreference.NewTaxEditorInstance(PreferencePredicate.AvailableDistributionStatus, saveCheckedElements);
107 savePref.setAllowOverride(pref.isAllowOverride());
108 PreferencesUtil.setPreferenceToDB(savePref);
109 PreferencesUtil.firePreferencesChanged(this.getClass());
110 return true;
111 }
112
113 @Override
114 public void update(CdmDataChangeMap changeEvents) {
115
116 }
117
118 @Override
119 public ConversationHolder getConversationHolder() {
120 if (conversation == null) {
121 conversation = CdmStore.createConversation();
122 }
123 return conversation;
124 }
125
126 }