Merge branch 'release/3.7.0'
[taxeditor.git] / eu.etaxonomy.taxeditor.editor / src / main / java / eu / etaxonomy / taxeditor / editor / name / operation / DeleteMisapplicationOperation.java
index 99aaf79c56b03f6cc75589ea823c931019b7d4a6..d32db52ea2a316343727fc4326136a255ed69064 100644 (file)
@@ -1,8 +1,8 @@
 /**
 * Copyright (C) 2007 EDIT
-* European Distributed Institute of Taxonomy 
+* 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.
 */
@@ -15,12 +15,17 @@ import org.eclipse.core.runtime.IAdaptable;
 import org.eclipse.core.runtime.IProgressMonitor;
 import org.eclipse.core.runtime.IStatus;
 
+import eu.etaxonomy.cdm.api.application.ICdmApplicationConfiguration;
+import eu.etaxonomy.cdm.api.service.ITaxonService;
+import eu.etaxonomy.cdm.api.service.config.NameDeletionConfigurator;
+import eu.etaxonomy.cdm.api.service.config.TaxonDeletionConfigurator;
 import eu.etaxonomy.cdm.model.reference.Reference;
 import eu.etaxonomy.cdm.model.taxon.Taxon;
 import eu.etaxonomy.cdm.model.taxon.TaxonRelationship;
 import eu.etaxonomy.cdm.model.taxon.TaxonRelationshipType;
-import eu.etaxonomy.taxeditor.operation.AbstractPostOperation;
+import eu.etaxonomy.taxeditor.operation.AbstractPostTaxonOperation;
 import eu.etaxonomy.taxeditor.operation.IPostOperationEnabled;
+import eu.etaxonomy.taxeditor.store.CdmStore;
 
 /**
  * <p>DeleteMisapplicationOperation class.</p>
@@ -29,9 +34,9 @@ import eu.etaxonomy.taxeditor.operation.IPostOperationEnabled;
  * @created 16.01.2009
  * @version 1.0
  */
-public class DeleteMisapplicationOperation extends AbstractPostOperation {
-       
-       private Taxon misapplication;
+public class DeleteMisapplicationOperation extends AbstractPostTaxonOperation {
+
+       private final Taxon misapplication;
 
        private Reference<?> citation;
 
@@ -49,7 +54,7 @@ public class DeleteMisapplicationOperation extends AbstractPostOperation {
        public DeleteMisapplicationOperation(String label, IUndoContext undoContext,
                        Taxon taxon, Taxon misapplication, IPostOperationEnabled postOperationEnabled) {
                super(label, undoContext, taxon, postOperationEnabled);
-               
+
                this.misapplication = misapplication;
        }
 
@@ -62,7 +67,8 @@ public class DeleteMisapplicationOperation extends AbstractPostOperation {
                        throws ExecutionException {
 
                // Find misapplication relation, save citation information
-               for (TaxonRelationship relationship : taxon.getTaxonRelations()) {
+
+               for (TaxonRelationship relationship : element.getTaxonRelations()) {
                        if (relationship.getType().equals(TaxonRelationshipType.MISAPPLIED_NAME_FOR())
                                        && relationship.getFromTaxon().equals(misapplication)) {
                                citation = relationship.getCitation();
@@ -70,9 +76,19 @@ public class DeleteMisapplicationOperation extends AbstractPostOperation {
                        }
                }
                monitor.worked(20);
-               
+
                // Remove misapplied name relation from taxon
-               taxon.removeTaxon(misapplication, TaxonRelationshipType.MISAPPLIED_NAME_FOR());
+               element.removeTaxon(misapplication, TaxonRelationshipType.MISAPPLIED_NAME_FOR());
+               ICdmApplicationConfiguration controller;
+
+               controller = (ICdmApplicationConfiguration) CdmStore.getCurrentApplicationConfiguration();
+
+               ITaxonService service = controller.getTaxonService();
+               TaxonDeletionConfigurator config = new TaxonDeletionConfigurator();
+               NameDeletionConfigurator nameConfig = new NameDeletionConfigurator();
+               nameConfig.setRemoveAllNameRelationships(true);
+               config.setNameDeletionConfig(nameConfig);
+               service.deleteTaxon(misapplication.getUuid(), config, null);
                monitor.worked(40);
 
                return postExecute(null);
@@ -95,9 +111,9 @@ public class DeleteMisapplicationOperation extends AbstractPostOperation {
        @Override
        public IStatus undo(IProgressMonitor monitor, IAdaptable info)
                        throws ExecutionException {
-               
-               taxon.addMisappliedName(misapplication, citation, microcitation);
-               
+
+               element.addMisappliedName(misapplication, citation, microcitation);
+
                return postExecute(misapplication);
        }
 }