Project

General

Profile

Download (3.81 KB) Statistics
| Branch: | Tag: | Revision:
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.SynonymRelationship;
19
import eu.etaxonomy.cdm.model.taxon.Taxon;
20
import eu.etaxonomy.taxeditor.editor.EditorUtil;
21
import eu.etaxonomy.taxeditor.editor.name.TaxonNameEditor;
22
import eu.etaxonomy.taxeditor.operation.AbstractPostTaxonOperation;
23
import eu.etaxonomy.taxeditor.operation.IPostOperationEnabled;
24
import eu.etaxonomy.taxeditor.store.CdmStore;
25

    
26
public class MoveSynonymToAnotherAcceptedTaxonOperation extends
27
		AbstractPostTaxonOperation {
28

    
29
	/**
30
	 * The synonym to be moved.
31
	 */
32
	private final Synonym synonym;
33

    
34
	private final Taxon oldTaxon;
35

    
36

    
37
	/**
38
	 * <p>Constructor for MoveSynonymToAnotherAcceptedTaxon.</p>
39
	 *
40
	 * @param label a {@link java.lang.String} object.
41
	 * @param undoContext a {@link org.eclipse.core.commands.operations.IUndoContext} object.
42
	 * @param taxon a {@link eu.etaxonomy.cdm.model.taxon.Taxon} object.
43
	 * @param synonym a {@link eu.etaxonomy.cdm.model.taxon.Synonym} object.
44

    
45
	 * @param postOperationEnabled a {@link eu.etaxonomy.taxeditor.operation.IPostOperationEnabled} object.
46
	 */
47
	public MoveSynonymToAnotherAcceptedTaxonOperation(String label, IUndoContext undoContext,
48
			UUID oldTaxonUUID, UUID synonymUUID, Taxon taxon, IPostOperationEnabled postOperationEnabled) {
49

    
50
		super(label, undoContext, taxon, postOperationEnabled);
51
		List<String> propertyPaths =  new ArrayList<String>();
52
		propertyPaths.add("synonymRelations");
53
		this.element = (Taxon) CdmStore.getService(ITaxonService.class).load(taxon.getUuid(),propertyPaths);
54
		this.oldTaxon = (Taxon) CdmStore.getService(ITaxonService.class).load(oldTaxonUUID);
55
		this.synonym = (Synonym) CdmStore.getService(ITaxonService.class).load(synonymUUID);
56
		if(synonym == null){
57
			throw new IllegalArgumentException(
58
					"A null synonym was provided.");
59
		}
60
	}
61

    
62
	@Override
63
	public IStatus execute(IProgressMonitor monitor, IAdaptable info)
64
			throws ExecutionException {
65

    
66
    	// Get synonym name
67
		TaxonNameBase<?, ?> synonymName = synonym.getName();
68
		monitor.worked(20);
69

    
70

    
71

    
72
		// Switch groups
73

    
74
		monitor.worked(40);
75
		SynonymRelationship synRel = synonym.getSynonymRelations().iterator().next();
76

    
77

    
78

    
79
		((TaxonNameEditor)EditorUtil.getActiveMultiPageTaxonEditor().getActiveEditor()).getConversationHolder().commit();
80
		UpdateResult result;
81

    
82

    
83
		try {
84
			result = CdmStore.getService(ITaxonService.class).moveSynonymToAnotherTaxon(synRel,
85
			        this.element.getUuid(),
86
			        true,
87
			        synRel.getType(),
88
			        null,
89
			        null,
90
			        true);
91
		} catch (HomotypicalGroupChangeException e) {
92
			// TODO Auto-generated catch block
93
			e.printStackTrace();
94
		}
95
		((TaxonNameEditor)EditorUtil.getActiveMultiPageTaxonEditor().getActiveEditor()).getConversationHolder().commit();
96

    
97

    
98

    
99
		// Redraw editor if it exists
100
		return postExecute(synRel.getSynonym());
101
	}
102

    
103
	@Override
104
	public IStatus redo(IProgressMonitor monitor, IAdaptable info)
105
			throws ExecutionException {
106
		// TODO Auto-generated method stub
107
		return null;
108
	}
109

    
110
	@Override
111
	public IStatus undo(IProgressMonitor monitor, IAdaptable info)
112
			throws ExecutionException {
113
		// TODO Auto-generated method stub
114
		return null;
115
	}
116

    
117
}
(17-17/19)