Merge branch 'develop' into LibrAlign
[taxeditor.git] / eu.etaxonomy.taxeditor.editor / src / main / java / eu / etaxonomy / taxeditor / editor / key / polytomous / operation / DeleteNodeOperation.java
index f31a83125aa62cf9cf7d9846550908e69a0b318d..92803c8d4e533d83eb3857c14d5f6b8746fd6f86 100644 (file)
@@ -1,5 +1,5 @@
 /**
- * 
+ *
  */
 package eu.etaxonomy.taxeditor.editor.key.polytomous.operation;
 
@@ -9,38 +9,39 @@ import org.eclipse.core.runtime.IAdaptable;
 import org.eclipse.core.runtime.IProgressMonitor;
 import org.eclipse.core.runtime.IStatus;
 import org.eclipse.jface.dialogs.MessageDialog;
-import org.eclipse.ui.handlers.HandlerUtil;
 
 import eu.etaxonomy.cdm.api.application.ICdmApplicationConfiguration;
 import eu.etaxonomy.cdm.api.service.DeleteResult;
 import eu.etaxonomy.cdm.api.service.IPolytomousKeyNodeService;
-import eu.etaxonomy.cdm.api.service.ITaxonService;
+import eu.etaxonomy.cdm.hibernate.HibernateProxyHelper;
 import eu.etaxonomy.cdm.model.description.PolytomousKeyNode;
 import eu.etaxonomy.taxeditor.bulkeditor.internal.TaxeditorBulkeditorPlugin;
 import eu.etaxonomy.taxeditor.model.MessagingUtils;
-import eu.etaxonomy.taxeditor.operation.AbstractPostTaxonOperation;
+import eu.etaxonomy.taxeditor.operation.AbstractPostOperation;
 import eu.etaxonomy.taxeditor.operation.IPostOperationEnabled;
 import eu.etaxonomy.taxeditor.store.CdmStore;
 
 /**
  * @author n.hoffmann
- * 
+ *
  */
-public class DeleteNodeOperation extends AbstractPostTaxonOperation {
+public class DeleteNodeOperation extends AbstractPostOperation<PolytomousKeyNode> {
 
        private final PolytomousKeyNode parent;
        private final PolytomousKeyNode node;
 
+
        public DeleteNodeOperation(String label, IUndoContext undoContext,
                        PolytomousKeyNode node, IPostOperationEnabled postOperationEnabled) {
-               super(label, undoContext, postOperationEnabled);
+           super(label, undoContext, node, postOperationEnabled);
+           HibernateProxyHelper.deproxy(node, PolytomousKeyNode.class);
                this.node = node;
                this.parent = node.getParent();
        }
 
        /*
         * (non-Javadoc)
-        * 
+        *
         * @see
         * org.eclipse.core.commands.operations.AbstractOperation#execute(org.eclipse
         * .core.runtime.IProgressMonitor, org.eclipse.core.runtime.IAdaptable)
@@ -48,14 +49,15 @@ public class DeleteNodeOperation extends AbstractPostTaxonOperation {
        @Override
        public IStatus execute(IProgressMonitor monitor, IAdaptable info)
                        throws ExecutionException {
-               
+
                //parent.removeChild(node);
                ICdmApplicationConfiguration controller;
-               
-               controller = (ICdmApplicationConfiguration) CdmStore.getCurrentApplicationConfiguration();
-               
+
+               controller = CdmStore.getCurrentApplicationConfiguration();
+
                IPolytomousKeyNodeService service = controller.getPolytomousKeyNodeService();
                DeleteResult result;
+
                if (node.getChildren().size()>0){
                        if(! MessageDialog.openQuestion(null, "Confirm deletion of children", "The selected node has children, do you want to delete them, too?")) {
                                result = service.delete(node.getUuid(), false);
@@ -65,7 +67,7 @@ public class DeleteNodeOperation extends AbstractPostTaxonOperation {
                } else{
                        result = service.delete(node.getUuid(), true);
                }
-               
+
                if (!result.isOk() || result.getExceptions().size() > 0){
                        Exception t = new Exception();
                        if (result.getExceptions().size() >1){
@@ -82,7 +84,7 @@ public class DeleteNodeOperation extends AbstractPostTaxonOperation {
 
        /*
         * (non-Javadoc)
-        * 
+        *
         * @see
         * org.eclipse.core.commands.operations.AbstractOperation#redo(org.eclipse
         * .core.runtime.IProgressMonitor, org.eclipse.core.runtime.IAdaptable)
@@ -95,7 +97,7 @@ public class DeleteNodeOperation extends AbstractPostTaxonOperation {
 
        /*
         * (non-Javadoc)
-        * 
+        *
         * @see
         * org.eclipse.core.commands.operations.AbstractOperation#undo(org.eclipse
         * .core.runtime.IProgressMonitor, org.eclipse.core.runtime.IAdaptable)