Merge branch 'release/4.6.0'
[taxeditor.git] / eu.etaxonomy.taxeditor.editor / src / main / java / eu / etaxonomy / taxeditor / editor / name / operation / MoveSynonymToAnotherAcceptedTaxonOperation.java
1 package eu.etaxonomy.taxeditor.editor.name.operation;
2
3 import java.util.ArrayList;
4 import java.util.List;
5 import java.util.UUID;
6
7 import org.eclipse.core.commands.ExecutionException;
8 import org.eclipse.core.commands.operations.IUndoContext;
9 import org.eclipse.core.runtime.IAdaptable;
10 import org.eclipse.core.runtime.IProgressMonitor;
11 import org.eclipse.core.runtime.IStatus;
12
13 import eu.etaxonomy.cdm.api.service.ITaxonService;
14 import eu.etaxonomy.cdm.api.service.UpdateResult;
15 import eu.etaxonomy.cdm.api.service.exception.HomotypicalGroupChangeException;
16 import eu.etaxonomy.cdm.model.name.TaxonNameBase;
17 import eu.etaxonomy.cdm.model.taxon.Synonym;
18 import eu.etaxonomy.cdm.model.taxon.Taxon;
19 import eu.etaxonomy.taxeditor.editor.EditorUtil;
20 import eu.etaxonomy.taxeditor.editor.name.TaxonNameEditor;
21 import eu.etaxonomy.taxeditor.operation.AbstractPostTaxonOperation;
22 import eu.etaxonomy.taxeditor.operation.IPostOperationEnabled;
23 import eu.etaxonomy.taxeditor.store.CdmStore;
24
25 public class MoveSynonymToAnotherAcceptedTaxonOperation extends
26 AbstractPostTaxonOperation {
27
28 /**
29 * The synonym to be moved.
30 */
31 private final Synonym synonym;
32
33 private final Taxon oldTaxon;
34
35
36 /**
37 * <p>Constructor for MoveSynonymToAnotherAcceptedTaxon.</p>
38 *
39 * @param label a {@link java.lang.String} object.
40 * @param undoContext a {@link org.eclipse.core.commands.operations.IUndoContext} object.
41 * @param taxon a {@link eu.etaxonomy.cdm.model.taxon.Taxon} object.
42 * @param synonym a {@link eu.etaxonomy.cdm.model.taxon.Synonym} object.
43
44 * @param postOperationEnabled a {@link eu.etaxonomy.taxeditor.operation.IPostOperationEnabled} object.
45 */
46 public MoveSynonymToAnotherAcceptedTaxonOperation(String label, IUndoContext undoContext,
47 UUID oldTaxonUUID, UUID synonymUUID, Taxon taxon, IPostOperationEnabled postOperationEnabled) {
48
49 super(label, undoContext, taxon, postOperationEnabled);
50 List<String> propertyPaths = new ArrayList<String>();
51 propertyPaths.add("synonymRelations"); //$NON-NLS-1$
52 this.element = (Taxon) CdmStore.getService(ITaxonService.class).load(taxon.getUuid(),propertyPaths);
53 this.oldTaxon = (Taxon) CdmStore.getService(ITaxonService.class).load(oldTaxonUUID);
54 this.synonym = (Synonym) CdmStore.getService(ITaxonService.class).load(synonymUUID);
55 if(synonym == null){
56 throw new IllegalArgumentException(
57 "A null synonym was provided."); //$NON-NLS-1$
58 }
59 }
60
61 @Override
62 public IStatus execute(IProgressMonitor monitor, IAdaptable info)
63 throws ExecutionException {
64
65 // Get synonym name
66 TaxonNameBase<?, ?> synonymName = synonym.getName();
67 monitor.worked(20);
68
69 // Switch groups
70
71 monitor.worked(40);
72
73 ((TaxonNameEditor)EditorUtil.getActiveMultiPageTaxonEditor().getActiveEditor()).getConversationHolder().commit();
74 UpdateResult result;
75
76 try {
77 result = CdmStore.getService(ITaxonService.class).moveSynonymToAnotherTaxon(synonym,
78 this.element.getUuid(),
79 true,
80 synonym.getType(),
81 null,
82 null,
83 true);
84 } catch (HomotypicalGroupChangeException e) {
85 // TODO Auto-generated catch block
86 e.printStackTrace();
87 }
88 ((TaxonNameEditor)EditorUtil.getActiveMultiPageTaxonEditor().getActiveEditor()).getConversationHolder().commit();
89
90 // Redraw editor if it exists
91 return postExecute(synonym);
92 }
93
94 @Override
95 public IStatus redo(IProgressMonitor monitor, IAdaptable info)
96 throws ExecutionException {
97 // TODO Auto-generated method stub
98 return null;
99 }
100
101 @Override
102 public IStatus undo(IProgressMonitor monitor, IAdaptable info)
103 throws ExecutionException {
104 // TODO Auto-generated method stub
105 return null;
106 }
107
108 }