ref #8124: add deleteTaxonNameDescription operation
authorKatja Luther <k.luther@bgbm.org>
Mon, 4 Mar 2019 09:10:04 +0000 (10:10 +0100)
committerKatja Luther <k.luther@bgbm.org>
Mon, 4 Mar 2019 09:12:56 +0000 (10:12 +0100)
eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/descriptive/e4/handler/DeleteHandlerE4.java
eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/descriptive/operation/DeleteTaxonNameDescriptionOperation.java [new file with mode: 0755]

index 7543cd6dfd55541dceea70207b41afc90b8b5835..9e63e54e7f524b6123fce5ccab3d8f102e50c278 100644 (file)
@@ -43,6 +43,7 @@ import eu.etaxonomy.taxeditor.editor.view.descriptive.e4.FactualDataPartE4;
 import eu.etaxonomy.taxeditor.editor.view.descriptive.operation.DeleteDescriptionElementOperation;
 import eu.etaxonomy.taxeditor.editor.view.descriptive.operation.DeleteSpecimenDescriptionOperation;
 import eu.etaxonomy.taxeditor.editor.view.descriptive.operation.DeleteTaxonDescriptionOperation;
+import eu.etaxonomy.taxeditor.editor.view.descriptive.operation.DeleteTaxonNameDescriptionOperation;
 import eu.etaxonomy.taxeditor.editor.view.media.operation.DeleteMediaOperation;
 import eu.etaxonomy.taxeditor.editor.view.media.operation.RemoveImageFromDescriptionElementOperation;
 import eu.etaxonomy.taxeditor.model.AbstractUtility;
@@ -84,9 +85,12 @@ public class DeleteHandlerE4 {
             Object object = iter.next();
 
             // TaxonDescription
-            if(object instanceof TaxonDescription){
+            if(object instanceof TaxonDescription ){
                 operations.add(new DeleteTaxonDescriptionOperation(label, undoContext, (TaxonDescription) object, factualDataPart, cdmEntitySessionEnabled));
             }
+            if(object instanceof TaxonNameDescription ){
+                operations.add(new DeleteTaxonNameDescriptionOperation(label, undoContext, (TaxonNameDescription) object, factualDataPart, cdmEntitySessionEnabled));
+            }
             else if(object instanceof SpecimenDescription){
                 operations.add(new DeleteSpecimenDescriptionOperation(label, undoContext, (SpecimenDescription) object, factualDataPart, cdmEntitySessionEnabled)) ;
             }
diff --git a/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/descriptive/operation/DeleteTaxonNameDescriptionOperation.java b/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/descriptive/operation/DeleteTaxonNameDescriptionOperation.java
new file mode 100755 (executable)
index 0000000..035f741
--- /dev/null
@@ -0,0 +1,84 @@
+/**
+* Copyright (C) 2019 EDIT
+* European Distributed Institute of Taxonomy
+* http://www.e-taxonomy.eu
+*
+* The contents of this file are subject to the Mozilla Public License Version 1.1
+* See LICENSE.TXT at the top of this package for the full license terms.
+*/
+package eu.etaxonomy.taxeditor.editor.view.descriptive.operation;
+
+import org.eclipse.core.commands.ExecutionException;
+import org.eclipse.core.commands.operations.IUndoContext;
+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 eu.etaxonomy.cdm.api.service.IDescriptionService;
+import eu.etaxonomy.cdm.model.description.TaxonNameDescription;
+import eu.etaxonomy.cdm.model.name.TaxonName;
+import eu.etaxonomy.taxeditor.operation.AbstractPostOperation;
+import eu.etaxonomy.taxeditor.operation.IPostOperationEnabled;
+import eu.etaxonomy.taxeditor.session.ICdmEntitySessionEnabled;
+import eu.etaxonomy.taxeditor.store.CdmStore;
+
+/**
+ * @author k.luther
+ * @since 4 Mar 2019
+ *
+ */
+public class DeleteTaxonNameDescriptionOperation extends AbstractPostOperation<TaxonName> {
+    private final TaxonNameDescription description;
+    /**
+     * @param label
+     * @param undoContext
+     * @param element
+     * @param postOperationEnabled
+     * @param cdmEntitySessionEnabled
+     */
+    public DeleteTaxonNameDescriptionOperation(String label, IUndoContext undoContext, TaxonNameDescription description,
+            IPostOperationEnabled postOperationEnabled, ICdmEntitySessionEnabled cdmEntitySessionEnabled) {
+        super(label, undoContext, description.getTaxonName(), postOperationEnabled, cdmEntitySessionEnabled);
+        this.description = description;
+
+    }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Override
+    public IStatus execute(IProgressMonitor monitor, IAdaptable info) throws ExecutionException {
+
+        monitor.worked(20);
+        if (description != null && description.isPersited()){
+//          element.removeDescription(description);
+            CdmStore.getService(IDescriptionService.class).deleteDescription(description.getUuid());
+            element.removeDescription(description);
+            return postExecute(element);
+        }else if (description != null && !description.isPersited()){
+            element.removeDescription(description);
+            return Status.OK_STATUS;
+        }
+        return null;
+    }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Override
+    public IStatus redo(IProgressMonitor monitor, IAdaptable info) throws ExecutionException {
+        return execute(monitor, info);
+    }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Override
+    public IStatus undo(IProgressMonitor monitor, IAdaptable info) throws ExecutionException {
+        element.addDescription(description);
+
+        return postExecute(null);
+    }
+
+}