d65ad420e94c6cb1c34220b7246246ccedccc893
[taxeditor.git] / eu.etaxonomy.taxeditor.store / src / main / java / eu / etaxonomy / taxeditor / featuretree / FeatureTreeEditorWizard.java
1 // $Id$
2 /**
3 * Copyright (C) 2007 EDIT
4 * European Distributed Institute of Taxonomy
5 * http://www.e-taxonomy.eu
6 *
7 * The contents of this file are subject to the Mozilla Public License Version 1.1
8 * See LICENSE.TXT at the top of this package for the full license terms.
9 */
10
11 package eu.etaxonomy.taxeditor.featuretree;
12
13 import java.util.Arrays;
14 import java.util.List;
15 import java.util.Map;
16
17 import org.eclipse.jface.wizard.Wizard;
18
19 import eu.etaxonomy.cdm.api.conversation.ConversationHolder;
20 import eu.etaxonomy.cdm.api.service.IFeatureTreeService;
21 import eu.etaxonomy.cdm.model.description.FeatureTree;
22 import eu.etaxonomy.taxeditor.session.ICdmEntitySession;
23 import eu.etaxonomy.taxeditor.session.ICdmEntitySessionEnabled;
24 import eu.etaxonomy.taxeditor.store.CdmStore;
25
26 /**
27 * <p>FeatureTreeEditorWizard class.</p>
28 *
29 * @author n.hoffmann
30 * @created Aug 5, 2010
31 * @version 1.0
32 */
33 public class FeatureTreeEditorWizard extends Wizard implements ICdmEntitySessionEnabled {
34
35 private SelectFeatureTreeWizardPage selectFeatureTreePage;
36 private EditFeatureTreeWizardPage editFeatureTreePage;
37
38 private FeatureTree selectedFeatureTree;
39
40 private ConversationHolder conversation;
41 private ICdmEntitySession cdmEntitySession;
42 private ICdmEntitySession previousCdmEntitySession;
43
44 /**
45 * <p>Constructor for FeatureTreeEditorWizard.</p>
46 */
47 public FeatureTreeEditorWizard(){
48 conversation = CdmStore.createConversation();
49 previousCdmEntitySession = CdmStore.getCurrentSessionManager().getActiveSession();
50 cdmEntitySession = CdmStore.getCurrentSessionManager().newSession(this, true);
51 setWindowTitle("Feature Tree Editor");
52 }
53
54 /**
55 * <p>addPages</p>
56 */
57 @Override
58 public void addPages() {
59 selectFeatureTreePage = new SelectFeatureTreeWizardPage("SELECT");
60 addPage(selectFeatureTreePage);
61
62 editFeatureTreePage = new EditFeatureTreeWizardPage("EDIT");
63 addPage(editFeatureTreePage);
64 }
65
66
67
68 /** {@inheritDoc} */
69 @Override
70 public boolean performFinish() {
71 try{
72 if (selectedFeatureTree != null){
73 if(CdmStore.getCurrentSessionManager().isRemoting()) {
74 CdmStore.getService(IFeatureTreeService.class).merge(selectedFeatureTree, true);
75 } else {
76 CdmStore.getService(IFeatureTreeService.class).saveOrUpdate(selectedFeatureTree);
77 }
78 }
79 conversation.commit();
80 }finally{
81 conversation.close();
82 cdmEntitySession.dispose();
83 if(previousCdmEntitySession != null) {
84 previousCdmEntitySession.bind();
85 }
86 }
87
88 return true;
89 }
90
91 /** {@inheritDoc} */
92 @Override
93 public boolean performCancel() {
94 cdmEntitySession.dispose();
95 if(previousCdmEntitySession != null) {
96 previousCdmEntitySession.bind();
97 }
98 return true;
99 }
100
101 /**
102 * <p>Setter for the field <code>selectedFeatureTree</code>.</p>
103 *
104 * @param selectedFeatureTree the selectedFeatureTree to set
105 */
106 public void setSelectedFeatureTree(FeatureTree selectedFeatureTree) {
107 this.selectedFeatureTree = selectedFeatureTree;
108 editFeatureTreePage.setSelectedTree(selectedFeatureTree);
109 }
110
111 /**
112 * <p>Getter for the field <code>selectedFeatureTree</code>.</p>
113 *
114 * @return the selectedFeatureTree
115 */
116 public FeatureTree getSelectedFeatureTree() {
117 return selectedFeatureTree;
118 }
119
120 /* (non-Javadoc)
121 * @see eu.etaxonomy.taxeditor.session.ICdmEntitySessionEnabled#getCdmEntitySession()
122 */
123 @Override
124 public ICdmEntitySession getCdmEntitySession() {
125 // TODO Auto-generated method stub
126 return null;
127 }
128
129 /* (non-Javadoc)
130 * @see eu.etaxonomy.taxeditor.session.ICdmEntitySessionEnabled#getRootEntities()
131 */
132 @Override
133 public List<FeatureTree> getRootEntities() {
134 return Arrays.asList(selectedFeatureTree);
135 }
136
137 /* (non-Javadoc)
138 * @see eu.etaxonomy.taxeditor.session.ICdmEntitySessionEnabled#getPropertyPathsMap()
139 */
140 @Override
141 public Map<Object, List<String>> getPropertyPathsMap() {
142 // TODO Auto-generated method stub
143 return null;
144 }
145
146 }