Project

General

Profile

Download (3.92 KB) Statistics
| Branch: | Tag: | Revision:
1
/**
2
* Copyright (C) 2007 EDIT
3
* European Distributed Institute of Taxonomy
4
* http://www.e-taxonomy.eu
5
*
6
* The contents of this file are subject to the Mozilla Public License Version 1.1
7
* See LICENSE.TXT at the top of this package for the full license terms.
8
*/
9

    
10
package eu.etaxonomy.taxeditor.navigation.navigator.operation;
11

    
12
import java.util.Set;
13
import java.util.UUID;
14

    
15
import org.eclipse.core.commands.ExecutionException;
16
import org.eclipse.core.commands.operations.IUndoContext;
17
import org.eclipse.core.runtime.IAdaptable;
18
import org.eclipse.core.runtime.IProgressMonitor;
19
import org.eclipse.core.runtime.IStatus;
20
import org.eclipse.core.runtime.Status;
21

    
22
import eu.etaxonomy.cdm.api.conversation.IConversationEnabled;
23
import eu.etaxonomy.cdm.api.service.ITaxonNodeService;
24
import eu.etaxonomy.cdm.model.taxon.ITaxonTreeNode;
25
import eu.etaxonomy.taxeditor.model.MessagingUtils;
26
import eu.etaxonomy.taxeditor.navigation.l10n.Messages;
27
import eu.etaxonomy.taxeditor.navigation.navigator.e4.TreeNodeDropAdapterE4.MovingType;
28
import eu.etaxonomy.taxeditor.operation.AbstractPersistentPostOperation;
29
import eu.etaxonomy.taxeditor.operation.IPostOperationEnabled;
30
import eu.etaxonomy.taxeditor.store.CdmStore;
31

    
32
/**
33
 * Change the taxonomic parent of a given taxon.
34
 *
35
 * @author n.hoffmann
36
 * @created 16.01.2009
37
 * @version 1.0
38
 */
39
public class MoveTaxonOperation extends AbstractPersistentPostOperation {
40

    
41
	/**
42
	 * A reference to the new taxonomical parent.
43
	 */
44
	private final ITaxonTreeNode newParentTreeNode;
45
	/**
46
	 * A reference to the former taxonomical parents
47
	 */
48
	//private Map<TaxonNode, ITaxonTreeNode> oldParentTreeNodes;
49

    
50
	private final Set<UUID> taxonNodesUuid;
51
	private final MovingType moveToParentNode;
52
	public MoveTaxonOperation(String label, IUndoContext undoContext,
53
			Set<UUID> taxonNodesUUIDToMove, ITaxonTreeNode newParentTreeNode,
54
			IPostOperationEnabled postOperationEnabled,
55
			IConversationEnabled conversationEnabled, MovingType moveToParentNode) {
56
		super(label, undoContext, postOperationEnabled, conversationEnabled);
57

    
58
		this.taxonNodesUuid = taxonNodesUUIDToMove;
59
		/*for (TaxonNode node:taxonNodes){
60
			this.taxonNodes.add(service.load(node.getUuid()));
61
		}*/
62

    
63
		this.newParentTreeNode = newParentTreeNode;
64
		this.moveToParentNode = moveToParentNode;
65
		// Save old parent ITaxonTreeNodes for undo
66

    
67
		//this.parentNode = taxonNode.getParent();
68
	}
69

    
70
	/** {@inheritDoc} */
71
	@Override
72
	public IStatus execute(IProgressMonitor monitor, IAdaptable info)
73
			throws ExecutionException {
74
		bind();
75
		monitor.worked(20);
76
		switch(this.moveToParentNode){
77
		case CHILD:
78
		    CdmStore.getService(ITaxonNodeService.class).moveTaxonNodes(this.taxonNodesUuid,newParentTreeNode.getUuid(), 0);
79
		    break;
80
		case PREVIOUS:
81
		    CdmStore.getService(ITaxonNodeService.class).moveTaxonNodes(this.taxonNodesUuid,newParentTreeNode.getUuid(), 1);
82
		    break;
83
		case BEHIND:
84
		    CdmStore.getService(ITaxonNodeService.class).moveTaxonNodes(this.taxonNodesUuid,newParentTreeNode.getUuid(), 2);
85
		    break;
86
		}
87

    
88
//		try {
89
//			for (TaxonNode taxonNode : taxonNodes){
90
//				TaxonNode newTaxonNode = newParentTreeNode.addChildNode(taxonNode,
91
//						newParentTreeNode.getReference(), newParentTreeNode.getMicroReference());
92
//				//taxonNodes.add(newTaxonNode);
93
//
94
//				monitor.worked(2);
95
//			}
96
//		} catch(IllegalAncestryException e) {
97
//			MessagingUtils.warningDialog("Illegal ancestry", this, e.getMessage());
98
//		}
99
		monitor.worked(40);
100

    
101
		return postExecute(null);
102
	}
103

    
104
	/** {@inheritDoc} */
105
	@Override
106
	public IStatus redo(IProgressMonitor monitor, IAdaptable info)
107
			throws ExecutionException {
108
		return execute(monitor, info);
109
	}
110

    
111
	/** {@inheritDoc} */
112
	@Override
113
	public IStatus undo(IProgressMonitor monitor, IAdaptable info)
114
			throws ExecutionException {
115
		MessagingUtils.warn(this.getClass(), Messages.MoveTaxonOperation_NOT_IMPLEMENTED);
116

    
117
		// iterate over oldParentTreeNodes, delete each TaxonNode from its actual parent and add to its former parent
118

    
119
		return Status.OK_STATUS;
120
	}
121
}
(4-4/10)