X-Git-Url: https://dev.e-taxonomy.eu/gitweb/taxeditor.git/blobdiff_plain/b04ed1c348548b60ece8c5b597fbf2b770a3f964..e77e7f4058fe09f3207ad8c1fed7c04eea3051cd:/eu.etaxonomy.taxeditor.navigation/src/main/java/eu/etaxonomy/taxeditor/navigation/navigator/operation/MoveTaxonOperation.java diff --git a/eu.etaxonomy.taxeditor.navigation/src/main/java/eu/etaxonomy/taxeditor/navigation/navigator/operation/MoveTaxonOperation.java b/eu.etaxonomy.taxeditor.navigation/src/main/java/eu/etaxonomy/taxeditor/navigation/navigator/operation/MoveTaxonOperation.java index 87df0560e..ecd062b5c 100644 --- a/eu.etaxonomy.taxeditor.navigation/src/main/java/eu/etaxonomy/taxeditor/navigation/navigator/operation/MoveTaxonOperation.java +++ b/eu.etaxonomy.taxeditor.navigation/src/main/java/eu/etaxonomy/taxeditor/navigation/navigator/operation/MoveTaxonOperation.java @@ -9,9 +9,8 @@ package eu.etaxonomy.taxeditor.navigation.navigator.operation; -import java.util.HashMap; -import java.util.Map; import java.util.Set; +import java.util.UUID; import org.eclipse.core.commands.ExecutionException; import org.eclipse.core.commands.operations.IUndoContext; @@ -21,12 +20,14 @@ import org.eclipse.core.runtime.IStatus; import org.eclipse.core.runtime.Status; import eu.etaxonomy.cdm.api.conversation.IConversationEnabled; +import eu.etaxonomy.cdm.api.service.ITaxonNodeService; +import eu.etaxonomy.cdm.api.service.UpdateResult; import eu.etaxonomy.cdm.model.taxon.ITaxonTreeNode; -import eu.etaxonomy.cdm.model.taxon.IllegalAncestryException; -import eu.etaxonomy.cdm.model.taxon.TaxonNode; +import eu.etaxonomy.taxeditor.model.MessagingUtils; +import eu.etaxonomy.taxeditor.navigation.navigator.TreeNodeDropAdapter.MovingType; import eu.etaxonomy.taxeditor.operation.AbstractPersistentPostOperation; import eu.etaxonomy.taxeditor.operation.IPostOperationEnabled; -import eu.etaxonomy.taxeditor.store.StoreUtil; +import eu.etaxonomy.taxeditor.store.CdmStore; /** * Change the taxonomic parent of a given taxon. @@ -40,14 +41,14 @@ public class MoveTaxonOperation extends AbstractPersistentPostOperation { /** * A reference to the new taxonomical parent. */ - private ITaxonTreeNode newParentTreeNode; + private final ITaxonTreeNode newParentTreeNode; /** * A reference to the former taxonomical parents */ - private Map oldParentTreeNodes; - - private Set taxonNodes; + //private Map oldParentTreeNodes; + private final Set taxonNodesUuid; + private final MovingType moveToParentNode; /** *

Constructor for MoveTaxonOperation.

* @@ -59,18 +60,19 @@ public class MoveTaxonOperation extends AbstractPersistentPostOperation { * @param conversationEnabled a {@link eu.etaxonomy.cdm.api.conversation.IConversationEnabled} object. */ public MoveTaxonOperation(String label, IUndoContext undoContext, - Set taxonNodes, ITaxonTreeNode newParentTreeNode, IPostOperationEnabled postOperationEnabled, IConversationEnabled conversationEnabled) { + Set taxonNodesUUIDToMove, ITaxonTreeNode newParentTreeNode, IPostOperationEnabled postOperationEnabled, IConversationEnabled conversationEnabled, MovingType moveToParentNode) { super(label, undoContext, postOperationEnabled, conversationEnabled); - this.taxonNodes = taxonNodes; + this.taxonNodesUuid = taxonNodesUUIDToMove; + /*for (TaxonNode node:taxonNodes){ + this.taxonNodes.add(service.load(node.getUuid())); + }*/ this.newParentTreeNode = newParentTreeNode; - + this.moveToParentNode = moveToParentNode; // Save old parent ITaxonTreeNodes for undo - oldParentTreeNodes = new HashMap(); - for(TaxonNode taxonNode : taxonNodes){ - this.oldParentTreeNodes.put(taxonNode, taxonNode.getParent()); - } + + //this.parentNode = taxonNode.getParent(); } /* (non-Javadoc) @@ -82,17 +84,27 @@ public class MoveTaxonOperation extends AbstractPersistentPostOperation { throws ExecutionException { bind(); monitor.worked(20); - - try { - for (TaxonNode taxonNode : taxonNodes){ - TaxonNode newTaxonNode = newParentTreeNode.addChildNode(taxonNode, - newParentTreeNode.getReference(), newParentTreeNode.getMicroReference()); - taxonNodes.add(newTaxonNode); - monitor.worked(2); - } - } catch(IllegalAncestryException e) { - StoreUtil.warningDialog("Illegal ancestry", this, e.getMessage()); + UpdateResult result; + switch(this.moveToParentNode){ + case CHILD: + result = CdmStore.getService(ITaxonNodeService.class).moveTaxonNodes(this.taxonNodesUuid,newParentTreeNode.getUuid(), 0); + case PREVIOUS: + result = CdmStore.getService(ITaxonNodeService.class).moveTaxonNodes(this.taxonNodesUuid,newParentTreeNode.getUuid(), 1); + case BEHIND: + result = CdmStore.getService(ITaxonNodeService.class).moveTaxonNodes(this.taxonNodesUuid,newParentTreeNode.getUuid(), 2); } + +// try { +// for (TaxonNode taxonNode : taxonNodes){ +// TaxonNode newTaxonNode = newParentTreeNode.addChildNode(taxonNode, +// newParentTreeNode.getReference(), newParentTreeNode.getMicroReference()); +// //taxonNodes.add(newTaxonNode); +// +// monitor.worked(2); +// } +// } catch(IllegalAncestryException e) { +// MessagingUtils.warningDialog("Illegal ancestry", this, e.getMessage()); +// } monitor.worked(40); return postExecute(null); @@ -115,7 +127,7 @@ public class MoveTaxonOperation extends AbstractPersistentPostOperation { @Override public IStatus undo(IProgressMonitor monitor, IAdaptable info) throws ExecutionException { - StoreUtil.warn(this.getClass(), "Not implemented yet."); + MessagingUtils.warn(this.getClass(), "Not implemented yet."); // iterate over oldParentTreeNodes, delete each TaxonNode from its actual parent and add to its former parent