Fix deletion of single reads in Derivative Editor
authorPatrick Plitzner <p.plitzner@bgbm.org>
Wed, 1 Jul 2015 07:16:17 +0000 (09:16 +0200)
committerPatrick Plitzner <p.plitzner@bgbm.org>
Wed, 1 Jul 2015 07:44:06 +0000 (09:44 +0200)
eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/derivate/handler/DeleteDerivateHandler.java
eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/derivate/operation/DeleteDerivateOperation.java

index 70de10d2d8028ae54ca6bb3178e4265d39da7734..1f429451b3cd0f2842b1b4e4bc9f1f408f245f3d 100644 (file)
@@ -72,7 +72,7 @@ public class DeleteDerivateHandler extends AbstractHandler {
                         boolean deepDelete = event.getCommand().getId().equals("eu.etaxonomy.taxeditor.editor.derivate.deepDelete");
                         config.setDeleteChildren(deepDelete);
                         config.setDeleteMolecularData(deepDelete);
                         boolean deepDelete = event.getCommand().getId().equals("eu.etaxonomy.taxeditor.editor.derivate.deepDelete");
                         config.setDeleteChildren(deepDelete);
                         config.setDeleteMolecularData(deepDelete);
-                        DeleteDerivateOperation deleteDerivateOperation = new DeleteDerivateOperation(label, undoContext, (CdmBase) value, postOperationEnabled, config);
+                        DeleteDerivateOperation deleteDerivateOperation = new DeleteDerivateOperation(label, undoContext, (CdmBase) value, (TreeNode) object, postOperationEnabled, config);
                         AbstractUtility.executeOperation(deleteDerivateOperation);
                     }
                 }
                         AbstractUtility.executeOperation(deleteDerivateOperation);
                     }
                 }
index b13c0cf35fc8708fc4a88b6034de8f655fc5e363..c467a943e007f923330bb62fdee50b8681b1a0c4 100644 (file)
@@ -15,12 +15,15 @@ import org.eclipse.core.runtime.IAdaptable;
 import org.eclipse.core.runtime.IProgressMonitor;
 import org.eclipse.core.runtime.IStatus;
 import org.eclipse.core.runtime.Status;
 import org.eclipse.core.runtime.IProgressMonitor;
 import org.eclipse.core.runtime.IStatus;
 import org.eclipse.core.runtime.Status;
+import org.eclipse.jface.viewers.TreeNode;
 import org.eclipse.ui.ISaveablePart;
 
 import eu.etaxonomy.cdm.api.service.DeleteResult;
 import eu.etaxonomy.cdm.api.service.IOccurrenceService;
 import eu.etaxonomy.cdm.api.service.config.SpecimenDeleteConfigurator;
 import eu.etaxonomy.cdm.model.common.CdmBase;
 import org.eclipse.ui.ISaveablePart;
 
 import eu.etaxonomy.cdm.api.service.DeleteResult;
 import eu.etaxonomy.cdm.api.service.IOccurrenceService;
 import eu.etaxonomy.cdm.api.service.config.SpecimenDeleteConfigurator;
 import eu.etaxonomy.cdm.model.common.CdmBase;
+import eu.etaxonomy.cdm.model.molecular.Sequence;
+import eu.etaxonomy.cdm.model.molecular.SingleRead;
 import eu.etaxonomy.taxeditor.editor.view.derivate.DerivateView;
 import eu.etaxonomy.taxeditor.model.AbstractUtility;
 import eu.etaxonomy.taxeditor.model.MessagingUtils;
 import eu.etaxonomy.taxeditor.editor.view.derivate.DerivateView;
 import eu.etaxonomy.taxeditor.model.AbstractUtility;
 import eu.etaxonomy.taxeditor.model.MessagingUtils;
@@ -38,26 +41,21 @@ import eu.etaxonomy.taxeditor.ui.dialog.deleteConfigurator.DeleteConfiguratorDia
 public class DeleteDerivateOperation extends AbstractPostOperation<CdmBase> {
 
     private final SpecimenDeleteConfigurator deleteConfigurator;
 public class DeleteDerivateOperation extends AbstractPostOperation<CdmBase> {
 
     private final SpecimenDeleteConfigurator deleteConfigurator;
+    private final TreeNode treeNode;
 
 
-    public DeleteDerivateOperation(String label, IUndoContext undoContext, CdmBase element,
+    public DeleteDerivateOperation(String label, IUndoContext undoContext, CdmBase element, TreeNode treeNode,
             IPostOperationEnabled postOperationEnabled) {
             IPostOperationEnabled postOperationEnabled) {
-        this(label, undoContext, element, postOperationEnabled, new SpecimenDeleteConfigurator());
+        this(label, undoContext, element, treeNode, postOperationEnabled, new SpecimenDeleteConfigurator());
     }
 
     }
 
-    public DeleteDerivateOperation(String label, IUndoContext undoContext, CdmBase element,
+    public DeleteDerivateOperation(String label, IUndoContext undoContext, CdmBase element, TreeNode treeNode,
             IPostOperationEnabled postOperationEnabled, SpecimenDeleteConfigurator config) {
         super(label, undoContext, element, postOperationEnabled);
         this.deleteConfigurator = config;
             IPostOperationEnabled postOperationEnabled, SpecimenDeleteConfigurator config) {
         super(label, undoContext, element, postOperationEnabled);
         this.deleteConfigurator = config;
+        this.treeNode = treeNode;
     }
 
 
     }
 
 
-    /*
-     * (non-Javadoc)
-     *
-     * @see
-     * org.eclipse.core.commands.operations.AbstractOperation#execute(org.eclipse
-     * .core.runtime.IProgressMonitor, org.eclipse.core.runtime.IAdaptable)
-     */
     /** {@inheritDoc} */
     @Override
     public IStatus execute(IProgressMonitor monitor, IAdaptable info) throws ExecutionException {
     /** {@inheritDoc} */
     @Override
     public IStatus execute(IProgressMonitor monitor, IAdaptable info) throws ExecutionException {
@@ -75,7 +73,16 @@ public class DeleteDerivateOperation extends AbstractPostOperation<CdmBase> {
                 return Status.CANCEL_STATUS;
             }
         }
                 return Status.CANCEL_STATUS;
             }
         }
-        DeleteResult deleteResult = CdmStore.getService(IOccurrenceService.class).deleteDerivateHierarchy(element, deleteConfigurator);
+        DeleteResult deleteResult;
+        if(element instanceof SingleRead && treeNode!=null
+                && treeNode.getValue().equals(element)
+                && treeNode.getParent()!=null
+                && treeNode.getParent().getValue() instanceof Sequence){
+            deleteResult = CdmStore.getService(IOccurrenceService.class).deleteSingleRead((SingleRead)element, (Sequence) treeNode.getParent().getValue());
+        }
+        else{
+            deleteResult = CdmStore.getService(IOccurrenceService.class).deleteDerivateHierarchy(element, deleteConfigurator);
+        }
         if(deleteResult.isOk()){
             if(getPostOperationEnabled() instanceof DerivateView){
                 DerivateView derivateView = (DerivateView) getPostOperationEnabled();
         if(deleteResult.isOk()){
             if(getPostOperationEnabled() instanceof DerivateView){
                 DerivateView derivateView = (DerivateView) getPostOperationEnabled();
@@ -96,13 +103,6 @@ public class DeleteDerivateOperation extends AbstractPostOperation<CdmBase> {
         return Status.OK_STATUS;
     }
 
         return Status.OK_STATUS;
     }
 
-    /*
-     * (non-Javadoc)
-     *
-     * @see
-     * org.eclipse.core.commands.operations.AbstractOperation#redo(org.eclipse
-     * .core.runtime.IProgressMonitor, org.eclipse.core.runtime.IAdaptable)
-     */
     /** {@inheritDoc} */
     @Override
     public IStatus redo(IProgressMonitor monitor, IAdaptable info) throws ExecutionException {
     /** {@inheritDoc} */
     @Override
     public IStatus redo(IProgressMonitor monitor, IAdaptable info) throws ExecutionException {
@@ -110,13 +110,6 @@ public class DeleteDerivateOperation extends AbstractPostOperation<CdmBase> {
         return Status.CANCEL_STATUS ;
     }
 
         return Status.CANCEL_STATUS ;
     }
 
-    /*
-     * (non-Javadoc)
-     *
-     * @see
-     * org.eclipse.core.commands.operations.AbstractOperation#undo(org.eclipse
-     * .core.runtime.IProgressMonitor, org.eclipse.core.runtime.IAdaptable)
-     */
     /** {@inheritDoc} */
     @Override
     public IStatus undo(IProgressMonitor monitor, IAdaptable info) throws ExecutionException {
     /** {@inheritDoc} */
     @Override
     public IStatus undo(IProgressMonitor monitor, IAdaptable info) throws ExecutionException {