+package eu.etaxonomy.taxeditor.editor.name.operation;\r
+\r
+import java.util.Iterator;\r
+import java.util.Set;\r
+\r
+import org.eclipse.core.commands.ExecutionEvent;\r
+import org.eclipse.core.commands.ExecutionException;\r
+import org.eclipse.core.commands.operations.IUndoContext;\r
+import org.eclipse.core.runtime.IAdaptable;\r
+import org.eclipse.core.runtime.IProgressMonitor;\r
+import org.eclipse.core.runtime.IStatus;\r
+import org.eclipse.core.runtime.Status;\r
+import org.eclipse.ui.IEditorInput;\r
+import org.eclipse.ui.IEditorReference;\r
+import org.eclipse.ui.IPerspectiveDescriptor;\r
+import org.eclipse.ui.IViewPart;\r
+import org.eclipse.ui.IViewReference;\r
+import org.eclipse.ui.IWorkbenchPage;\r
+import org.eclipse.ui.PartInitException;\r
+import org.eclipse.ui.handlers.HandlerUtil;\r
+\r
+import eu.etaxonomy.cdm.api.application.CdmApplicationController;\r
+import eu.etaxonomy.cdm.api.conversation.IConversationEnabled;\r
+import eu.etaxonomy.cdm.api.service.ITaxonService;\r
+import eu.etaxonomy.cdm.api.service.config.TaxonDeletionConfigurator;\r
+import eu.etaxonomy.cdm.api.service.exception.DataChangeNoRollbackException;\r
+import eu.etaxonomy.cdm.model.taxon.Classification;\r
+import eu.etaxonomy.cdm.model.taxon.Synonym;\r
+import eu.etaxonomy.cdm.model.taxon.Taxon;\r
+import eu.etaxonomy.cdm.model.taxon.TaxonNode;\r
+import eu.etaxonomy.taxeditor.editor.TaxonEditorInput;\r
+import eu.etaxonomy.taxeditor.operation.AbstractPostOperation;\r
+import eu.etaxonomy.taxeditor.operation.IPostOperationEnabled;\r
+import eu.etaxonomy.taxeditor.store.CdmStore;\r
+\r
+public class DeleteTaxonOperation extends DeleteTaxonBaseOperation{\r
+ //private Taxon taxon;\r
+ private Classification classification;\r
+ \r
+ \r
+ \r
+ \r
+ public DeleteTaxonOperation(String label, IUndoContext undoContext,\r
+ Taxon taxon, Classification classification, IWorkbenchPage activePage, IPostOperationEnabled postOperationEnabled, IConversationEnabled conversationEnabled) {\r
+ super(label, undoContext, taxon, activePage, postOperationEnabled, conversationEnabled);\r
+ this.taxon = taxon;\r
+ \r
+ Set<TaxonNode> nodes = taxon.getTaxonNodes();\r
+ if (nodes.size() == 1 && classification == null){\r
+ this.taxonNode = nodes.iterator().next();\r
+ } else if (classification != null){\r
+ Iterator<TaxonNode> iterator = nodes.iterator();\r
+ while (iterator.hasNext()){\r
+ TaxonNode node = iterator.next();\r
+ if (node.getClassification().equals(classification)){\r
+ this.taxonNode = node;\r
+ }\r
+ }\r
+ } else{\r
+ //TODO\r
+ }\r
+ this.classification = classification;\r
+ \r
+ }\r
+\r
+ \r
+\r
+ @Override\r
+ public IStatus execute(IProgressMonitor monitor, IAdaptable info)\r
+ throws ExecutionException {\r
+ \r
+ monitor.worked(20);\r
+ bind();\r
+ \r
+ \r
+ CdmApplicationController controller;\r
+ \r
+ controller = (CdmApplicationController) CdmStore.getCurrentApplicationConfiguration();\r
+ \r
+ ITaxonService service = controller.getTaxonService();\r
+ try {\r
+ \r
+ service.deleteTaxon(taxon, new TaxonDeletionConfigurator(), classification);\r
+ \r
+ } catch (DataChangeNoRollbackException e) {\r
+ // TODO Auto-generated catch block\r
+ e.printStackTrace();\r
+ \r
+ }\r
+ \r
+ //closeObsoleteEditor(taxon);\r
+ monitor.worked(40);\r
+ \r
+ \r
+ return postExecute(null);\r
+ }\r
+\r
+ @Override\r
+ public IStatus redo(IProgressMonitor monitor, IAdaptable info)\r
+ throws ExecutionException {\r
+ // TODO Auto-generated method stub\r
+ return null;\r
+ }\r
+\r
+ @Override\r
+ public IStatus undo(IProgressMonitor monitor, IAdaptable info)\r
+ throws ExecutionException {\r
+ // TODO Auto-generated method stub\r
+ return null;\r
+ }\r
+ \r
+ \r
+}\r