package eu.etaxonomy.taxeditor.navigation.navigator.operation;
+import java.util.List;
import java.util.Set;
+import java.util.UUID;
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.jface.dialogs.MessageDialog;
-import eu.etaxonomy.cdm.api.application.CdmApplicationController;
import eu.etaxonomy.cdm.api.application.ICdmApplicationConfiguration;
import eu.etaxonomy.cdm.api.conversation.IConversationEnabled;
+import eu.etaxonomy.cdm.api.service.DeleteResult;
import eu.etaxonomy.cdm.api.service.IClassificationService;
import eu.etaxonomy.cdm.api.service.ITaxonNodeService;
-import eu.etaxonomy.cdm.api.service.ITaxonService;
import eu.etaxonomy.cdm.api.service.config.TaxonDeletionConfigurator;
import eu.etaxonomy.cdm.api.service.exception.DataChangeNoRollbackException;
import eu.etaxonomy.cdm.api.service.exception.ReferencedObjectUndeletableException;
import eu.etaxonomy.cdm.model.common.CdmBase;
-import eu.etaxonomy.cdm.model.common.ITreeNode;
import eu.etaxonomy.cdm.model.taxon.Classification;
import eu.etaxonomy.cdm.model.taxon.ITaxonTreeNode;
import eu.etaxonomy.cdm.model.taxon.TaxonNode;
import eu.etaxonomy.taxeditor.operation.AbstractPersistentPostOperation;
import eu.etaxonomy.taxeditor.operation.IPostOperationEnabled;
import eu.etaxonomy.taxeditor.store.CdmStore;
-import eu.etaxonomy.taxeditor.store.StoreUtil;
/**
* <p>DeleteTreeNodeOperation class.</p>
public class DeleteOperation extends AbstractPersistentPostOperation{
private Set<ITaxonTreeNode> treeNodes;
- private TaxonDeletionConfigurator config;
+ protected final TaxonDeletionConfigurator config;
/**
this.treeNodes = treeNodes;
this.config = config;
}
-
+
/* (non-Javadoc)
* @see org.eclipse.core.commands.operations.AbstractOperation#execute(org.eclipse.core.runtime.IProgressMonitor, org.eclipse.core.runtime.IAdaptable)
if(taxonNode != null && taxonNode instanceof TaxonNode){
//((TaxonNode) treeNode).delete();
- taxon = ((TaxonNode)taxonNode).getTaxon();
- try {
- service.deleteTaxonNode((TaxonNode)taxonNode, config);
- } catch (DataChangeNoRollbackException e) {
-
- throw new ExecutionException(e.getMessage());
-
- }
+ element = ((TaxonNode)taxonNode).getTaxon();
+ DeleteResult result = service.deleteTaxonNode((TaxonNode)taxonNode, config);
+ if (result.isError()){
+ //TODO:Error message!
+ MessageDialog.openError(null, "Delete failed", result.getExceptions().get(0).getMessage());
+ }
+
+
}else if(taxonNode != null && taxonNode instanceof Classification){
Classification taxonomicTree = (Classification) taxonNode;
- if(taxonomicTree.hasChildNodes()){
- StoreUtil.warningDialog("Tree is not empty", this, "It is not possible to delete a Taxonomic Tree that " +
- "is not empty. Please delete included taxa first");
- }else{
+ /*if(taxonomicTree.hasChildNodes()){
+ if(! MessageDialog.openConfirm(null, "Confirm Deletion", "The selected tree has children, do yu realy want to delete the whole tree with its children?")){
+ return null;
+ }
+ }*/
+
+ DeleteResult result = CdmStore.getService(IClassificationService.class).delete(taxonomicTree);
+ if (result.isError()){
+ //TODO:Error message!
+ MessageDialog.openError(null, "Delete failed", result.getExceptions().get(0).getMessage());
+ }
+
+ /*}else{
try{
CdmStore.getService(IClassificationService.class).delete(taxonomicTree);
}catch(ReferencedObjectUndeletableException e){
throw new ExecutionException(e.getMessage());
}
- }
+ }*/
} else {
- try {
- service.deleteTaxonNodes(treeNodes, config);
- } catch (DataChangeNoRollbackException e) {
- throw new ExecutionException(e.getMessage());
- }
+
+ List<UUID> result =service.deleteTaxonNodes(treeNodes, config);
+
}
-
+
monitor.worked(40);
return postExecute(null);
}