/**
* 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.
*/
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>
* @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;
public DeleteMisapplicationOperation(String label, IUndoContext undoContext,
Taxon taxon, Taxon misapplication, IPostOperationEnabled postOperationEnabled) {
super(label, undoContext, taxon, postOperationEnabled);
-
+
this.misapplication = misapplication;
}
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();
}
}
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);
@Override
public IStatus undo(IProgressMonitor monitor, IAdaptable info)
throws ExecutionException {
-
- taxon.addMisappliedName(misapplication, citation, microcitation);
-
+
+ element.addMisappliedName(misapplication, citation, microcitation);
+
return postExecute(misapplication);
}
}