Did some code cleanup. Removed obsolete and deprecated classes.
[taxeditor.git] / taxeditor-store / src / main / java / eu / etaxonomy / taxeditor / operations / CreateTaxonomicTreeOperation.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.operations;
12
13 import java.util.UUID;
14
15 import org.apache.log4j.Logger;
16 import org.eclipse.core.commands.ExecutionException;
17 import org.eclipse.core.commands.operations.IUndoContext;
18 import org.eclipse.core.runtime.IAdaptable;
19 import org.eclipse.core.runtime.IProgressMonitor;
20 import org.eclipse.core.runtime.IStatus;
21 import org.eclipse.core.runtime.Status;
22
23 import eu.etaxonomy.cdm.api.conversation.ConversationHolder;
24 import eu.etaxonomy.cdm.api.conversation.IConversationEnabled;
25 import eu.etaxonomy.cdm.model.reference.Generic;
26 import eu.etaxonomy.cdm.model.reference.ReferenceBase;
27 import eu.etaxonomy.cdm.model.taxon.TaxonomicTree;
28 import eu.etaxonomy.taxeditor.store.CdmStore;
29 import eu.etaxonomy.taxeditor.store.StoreUtil;
30
31 /**
32 * @author n.hoffmann
33 * @created 23.06.2009
34 * @version 1.0
35 */
36 public class CreateTaxonomicTreeOperation extends AbstractPersistentPostOperation {
37
38 private static final Logger logger = Logger
39 .getLogger(CreateTaxonomicTreeOperation.class);
40 private String treeLabel;
41 private UUID referenceUuid;
42 private String microReference;
43
44 /**
45 * @param label
46 * @param undoContext
47 */
48 public CreateTaxonomicTreeOperation(String label, IUndoContext undoContext, String treeLabel,
49 UUID referenceUuid, String microReference,
50 IPostOperationEnabled postOperationEnabled,
51 IConversationEnabled conversationEnabled) {
52 super(label, undoContext, postOperationEnabled, conversationEnabled);
53
54 this.treeLabel = treeLabel;
55 this.referenceUuid = referenceUuid;
56 this.microReference = microReference;
57
58 }
59
60 /* (non-Javadoc)
61 * @see org.eclipse.core.commands.operations.AbstractOperation#execute(org.eclipse.core.runtime.IProgressMonitor, org.eclipse.core.runtime.IAdaptable)
62 */
63 @Override
64 public IStatus execute(IProgressMonitor monitor, IAdaptable info)
65 throws ExecutionException {
66 bind();
67 TaxonomicTree tree;
68
69 // Start the main progress monitor.
70 IProgressMonitor newMonitor = StoreUtil.startMainMonitor(monitor,"Creating Taxonomic Tree", 4);
71
72 // Do one step
73 newMonitor.worked(1);
74
75 try {
76 // Operation steps
77
78 if(treeLabel.trim().length() == 0){
79 return Status.CANCEL_STATUS;
80 }
81
82 tree = TaxonomicTree.NewInstance(treeLabel);
83 ReferenceBase reference;
84 if(referenceUuid == null){
85 reference = Generic.NewInstance();
86 reference.setTitleCache(treeLabel);
87 }else{
88 reference = CdmStore.getReferenceService().load(referenceUuid);
89 }
90 StoreUtil.isCanceled(newMonitor, 1);
91
92 tree.setReference(reference);
93 tree.setMicroReference(microReference);
94 StoreUtil.isCanceled(newMonitor, 1);
95
96 CdmStore.getTaxonTreeService().save(tree);
97 StoreUtil.isCanceled(newMonitor, 1);
98
99 // conversation.commit(true);
100 }
101 finally {
102
103 // Stop the progress monitor.
104 newMonitor.done();
105 }
106
107
108 return postExecute(tree);
109 }
110
111 /* (non-Javadoc)
112 * @see org.eclipse.core.commands.operations.AbstractOperation#redo(org.eclipse.core.runtime.IProgressMonitor, org.eclipse.core.runtime.IAdaptable)
113 */
114 @Override
115 public IStatus redo(IProgressMonitor monitor, IAdaptable info)
116 throws ExecutionException {
117 // TODO Auto-generated method stub
118 return null;
119 }
120
121 /* (non-Javadoc)
122 * @see org.eclipse.core.commands.operations.AbstractOperation#undo(org.eclipse.core.runtime.IProgressMonitor, org.eclipse.core.runtime.IAdaptable)
123 */
124 @Override
125 public IStatus undo(IProgressMonitor monitor, IAdaptable info)
126 throws ExecutionException {
127 // TODO Auto-generated method stub
128 return null;
129 }
130
131 private TaxonomicTree createTaxonomicTreeIsolated(){
132 // get a new conversation
133 ConversationHolder conversation = CdmStore.NewTransactionalConversation();
134 try{
135 TaxonomicTree tree = TaxonomicTree.NewInstance(treeLabel);
136 ReferenceBase reference;
137 if(referenceUuid == null){
138 reference = Generic.NewInstance();
139 reference.setTitleCache(treeLabel);
140 }else{
141 reference = CdmStore.getReferenceService().load(referenceUuid);
142 }
143
144 tree.setReference(reference);
145 tree.setMicroReference(microReference);
146
147 CdmStore.getTaxonTreeService().save(tree);
148
149 conversation.commit(true);
150
151 return tree;
152 }finally{
153 conversation.close();
154 }
155 }
156 }