Project

General

Profile

Download (3.67 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.TaxonName;
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
		TaxonName 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
}
(17-17/19)