ad4000a54c82bb1fe03fa8d79f7be48f44e94855
[taxeditor.git] / eu.etaxonomy.taxeditor.store / src / main / java / eu / etaxonomy / taxeditor / ui / section / classification / EditTaxonNodeWizard.java
1 /**
2 * Copyright (C) 2016 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.ui.section.classification;
10
11 import java.util.Collection;
12 import java.util.Collections;
13 import java.util.List;
14 import java.util.Map;
15
16 import org.eclipse.jface.viewers.IStructuredSelection;
17 import org.eclipse.swt.widgets.Shell;
18 import org.eclipse.ui.IWorkbench;
19
20 import eu.etaxonomy.cdm.api.service.ITaxonNodeService;
21 import eu.etaxonomy.cdm.model.taxon.TaxonNode;
22 import eu.etaxonomy.cdm.persistence.dto.MergeResult;
23 import eu.etaxonomy.taxeditor.event.EventUtility;
24 import eu.etaxonomy.taxeditor.event.WorkbenchEventConstants;
25 import eu.etaxonomy.taxeditor.newWizard.IWizardPageListener;
26 import eu.etaxonomy.taxeditor.session.ICdmEntitySession;
27 import eu.etaxonomy.taxeditor.session.ICdmEntitySessionEnabled;
28 import eu.etaxonomy.taxeditor.store.CdmStore;
29 import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
30
31 /**
32 * @author k.luther
33 * @date 23.03.2016
34 *
35 */
36 public class EditTaxonNodeWizard extends AbstractEditWizard<TaxonNode> implements ICdmEntitySessionEnabled{
37
38 private TaxonNodeWizardPage taxonNodePage;
39 private IWizardPageListener wizardPageListener;
40 private ICdmEntitySession cdmEntitySession;
41
42
43 @Override
44 public void init(IWorkbench workbench, IStructuredSelection selection) {
45 formFactory = new CdmFormFactory(getContext().get(Shell.class).getDisplay());
46 conversation = CdmStore.createConversation();
47 }
48
49 /* (non-Javadoc)
50 * @see eu.etaxonomy.taxeditor.ui.section.classification.AbstractEditWizard#getEntityName()
51 */
52 @Override
53 protected String getEntityName() {
54 return "taxon node";
55 }
56
57 /* (non-Javadoc)
58 * @see eu.etaxonomy.taxeditor.ui.section.classification.AbstractEditWizard#saveEntity()
59 */
60 @Override
61 protected void saveEntity() {
62 getConversationHolder().bind();
63 TaxonNode node = getEntity();
64
65 MergeResult result = CdmStore.getService(ITaxonNodeService.class).merge(node, true);
66 EventUtility.postEvent(WorkbenchEventConstants.REFRESH_NAME_EDITOR, node.getTaxon().getUuid());
67
68 }
69 @Override
70 public void addPages() {
71 taxonNodePage = new TaxonNodeWizardPage(formFactory, getConversationHolder(), getEntity(), wizardPageListener, false);
72
73 addPage(taxonNodePage);
74 }
75
76 public void addWizardPageListener(IWizardPageListener wizardPageListener){
77 this.wizardPageListener = wizardPageListener;
78 }
79
80 /* (non-Javadoc)
81 * @see eu.etaxonomy.taxeditor.newWizard.AbstractNewEntityWizard#setEntity(java.lang.Object)
82 */
83 @Override
84 public void setEntity(TaxonNode entity) {
85 setWindowTitle(String.format("Edit %s", getEntityName()));
86 if (CdmStore.isActive() && cdmEntitySession == null) {
87
88 cdmEntitySession = CdmStore.getCurrentSessionManager().newSession(this, true);
89 cdmEntitySession.bind();
90 }
91 entity = CdmStore.getService(ITaxonNodeService.class).load(entity.getUuid());
92 super.setEntity(entity);
93 }
94
95 /**
96 * {@inheritDoc}
97 */
98 @Override
99 public ICdmEntitySession getCdmEntitySession() {
100
101 return cdmEntitySession;
102 }
103
104 /**
105 * {@inheritDoc}
106 */
107 @Override
108 public Collection<TaxonNode> getRootEntities() {
109 return Collections.singleton(this.getEntity());
110 }
111
112 /**
113 * {@inheritDoc}
114 */
115 @Override
116 public Map<Object, List<String>> getPropertyPathsMap() {
117 // TODO Auto-generated method stub
118 return null;
119 }
120
121 @Override
122 public void dispose() {
123 cdmEntitySession.dispose();
124 super.dispose();
125 }
126
127
128
129 }