From: Katja Luther Date: Wed, 23 Oct 2013 08:32:07 +0000 (+0000) Subject: (no commit message) X-Git-Tag: 3.6.0~932 X-Git-Url: https://dev.e-taxonomy.eu/gitweb/taxeditor.git/commitdiff_plain/d43de9c0b22237da83fc19701f75be2b9fc5c8f7 --- diff --git a/.gitattributes b/.gitattributes index 6aa7c7b29..d7e6941d9 100644 --- a/.gitattributes +++ b/.gitattributes @@ -431,6 +431,8 @@ eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/name/o eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/name/operation/DeleteMisapplicationOperation.java -text eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/name/operation/DeleteNameRelationOperation.java -text eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/name/operation/DeleteSynonymOperation.java -text +eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/name/operation/DeleteTaxonBaseOperation.java -text +eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/name/operation/DeleteTaxonOperation.java -text eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/name/operation/RemoveHomotypicalGroupBasionymOperation.java -text eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/name/operation/SwapSynonymAndAcceptedOperation.java -text eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/concept/ConceptContentProvider.java -text diff --git a/eu.etaxonomy.taxeditor.editor/plugin.xml b/eu.etaxonomy.taxeditor.editor/plugin.xml index 815b412d8..bf89a6a62 100644 --- a/eu.etaxonomy.taxeditor.editor/plugin.xml +++ b/eu.etaxonomy.taxeditor.editor/plugin.xml @@ -335,6 +335,9 @@ + @@ -742,11 +745,11 @@ - + diff --git a/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/name/handler/DeleteTaxonBaseHandler.java b/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/name/handler/DeleteTaxonBaseHandler.java index 1d3678ee3..dab4585d4 100644 --- a/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/name/handler/DeleteTaxonBaseHandler.java +++ b/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/name/handler/DeleteTaxonBaseHandler.java @@ -13,15 +13,24 @@ import org.eclipse.core.commands.ExecutionEvent; import org.eclipse.core.commands.ExecutionException; import org.eclipse.core.commands.IHandler; import org.eclipse.core.commands.common.NotDefinedException; +import org.eclipse.jface.dialogs.MessageDialog; +import org.eclipse.swt.widgets.Display; +import org.eclipse.ui.IWorkbenchPage; +import org.eclipse.ui.PartInitException; +import org.eclipse.ui.handlers.HandlerUtil; +import eu.etaxonomy.cdm.model.common.CdmBase; import eu.etaxonomy.cdm.model.taxon.Synonym; import eu.etaxonomy.cdm.model.taxon.Taxon; import eu.etaxonomy.taxeditor.editor.EditorUtil; +import eu.etaxonomy.taxeditor.editor.MultiPageTaxonEditor; import eu.etaxonomy.taxeditor.editor.Page; import eu.etaxonomy.taxeditor.editor.name.TaxonNameEditor; import eu.etaxonomy.taxeditor.editor.name.operation.DeleteMisapplicationOperation; import eu.etaxonomy.taxeditor.editor.name.operation.DeleteSynonymOperation; +import eu.etaxonomy.taxeditor.editor.name.operation.DeleteTaxonOperation; import eu.etaxonomy.taxeditor.operation.AbstractPostOperation; +import eu.etaxonomy.taxeditor.operation.IPostOperationEnabled; /** *

DeleteTaxonBaseHandler class.

@@ -30,14 +39,15 @@ import eu.etaxonomy.taxeditor.operation.AbstractPostOperation; * @created 21.04.2009 * @version 1.0 */ -public class DeleteTaxonBaseHandler extends AbstractHandler implements IHandler { +public class DeleteTaxonBaseHandler extends AbstractHandler implements IHandler, IPostOperationEnabled { + TaxonNameEditor editor; /* (non-Javadoc) * @see org.eclipse.core.commands.IHandler#execute(org.eclipse.core.commands.ExecutionEvent) */ /** {@inheritDoc} */ public Object execute(ExecutionEvent event) throws ExecutionException { - TaxonNameEditor editor = (TaxonNameEditor) EditorUtil.getActiveEditorPage(Page.NAME); + editor = (TaxonNameEditor) EditorUtil.getActiveEditorPage(Page.NAME); Object selectedElement = EditorUtil.getSelection(event).getFirstElement(); @@ -71,11 +81,47 @@ public class DeleteTaxonBaseHandler extends AbstractHandler implements IHandler operation = new DeleteMisapplicationOperation(commandName, editor.getUndoContext(), editor .getTaxon(), (Taxon) selectedElement, editor); } + else if (selectedElement instanceof Taxon){ + //TODO: how to get the actual classification + if(! MessageDialog.openConfirm(HandlerUtil.getActiveShell(event), "Confirm Deletion", "Are you sure you want to delete the selected taxon?")){ + return ; + } + IWorkbenchPage activePage = HandlerUtil.getActiveWorkbenchWindow(event).getActivePage(); + operation = new DeleteTaxonOperation(commandName, editor.getUndoContext(),(Taxon) selectedElement, null, activePage, this, editor); + //editor.dispose(); + + } else { throw new IllegalArgumentException("Element has to be Synonym, Misapplication or Concept"); } EditorUtil.executeOperation(operation); + + + + } + @Override + public boolean postOperation(CdmBase objectAffectedByOperation) { + Display.getDefault().asyncExec(new Runnable(){ + + public void run() { + EditorUtil.close(editor.getMultiPageTaxonEditor()); + + } + + }); + + + return true; + } + + @Override + public boolean onComplete() { + // TODO Auto-generated method stub + return false; + } + + } diff --git a/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/name/operation/DeleteSynonymOperation.java b/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/name/operation/DeleteSynonymOperation.java index fc5dc5217..a5ff8285c 100644 --- a/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/name/operation/DeleteSynonymOperation.java +++ b/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/name/operation/DeleteSynonymOperation.java @@ -17,11 +17,14 @@ import org.eclipse.core.runtime.IAdaptable; import org.eclipse.core.runtime.IProgressMonitor; import org.eclipse.core.runtime.IStatus; +import eu.etaxonomy.cdm.api.application.CdmApplicationController; +import eu.etaxonomy.cdm.api.service.ITaxonService; import eu.etaxonomy.cdm.model.taxon.Synonym; import eu.etaxonomy.cdm.model.taxon.SynonymRelationshipType; import eu.etaxonomy.cdm.model.taxon.Taxon; import eu.etaxonomy.taxeditor.operation.AbstractPostOperation; import eu.etaxonomy.taxeditor.operation.IPostOperationEnabled; +import eu.etaxonomy.taxeditor.store.CdmStore; /** *

DeleteSynonymOperation class.

@@ -59,19 +62,27 @@ public class DeleteSynonymOperation extends AbstractPostOperation { throws ExecutionException { // Store synonymRelationshipType for later undo operations - synonymTypes = synonym.getRelationType(taxon); - monitor.worked(20); - - // Remove synonym from taxon - - taxon.removeSynonym(synonym); -// CdmStore.getTaxonService().deleteSynonymRelationships(synonym); -// CdmStore.getTaxonService().delete(synonym); - - monitor.worked(40); + synonymTypes = synonym.getRelationType(taxon); + monitor.worked(20); + + // Remove synonym from taxon + + CdmApplicationController controller; + + controller = (CdmApplicationController) CdmStore.getCurrentApplicationConfiguration(); + + ITaxonService service = controller.getTaxonService(); + service.deleteSynonym(synonym, null); + + // taxon.removeSynonym(synonym); +// CdmStore.getTaxonService().deleteSynonymRelationships(synonym); +// CdmStore.getTaxonService().delete(synonym); + + monitor.worked(40); - // Redraw editor if exists - return postExecute(null); + // Redraw editor if exists + + return postExecute(null); } /* (non-Javadoc) diff --git a/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/name/operation/DeleteTaxonBaseOperation.java b/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/name/operation/DeleteTaxonBaseOperation.java new file mode 100644 index 000000000..4f8472074 --- /dev/null +++ b/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/name/operation/DeleteTaxonBaseOperation.java @@ -0,0 +1,76 @@ +package eu.etaxonomy.taxeditor.editor.name.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.ui.IEditorInput; +import org.eclipse.ui.IEditorReference; +import org.eclipse.ui.IPerspectiveDescriptor; +import org.eclipse.ui.IViewPart; +import org.eclipse.ui.IWorkbenchPage; +import org.eclipse.ui.PartInitException; + +import eu.etaxonomy.cdm.api.conversation.IConversationEnabled; +import eu.etaxonomy.cdm.model.taxon.Taxon; +import eu.etaxonomy.cdm.model.taxon.TaxonNode; +import eu.etaxonomy.taxeditor.editor.EditorUtil; +import eu.etaxonomy.taxeditor.editor.TaxonEditorInput; +import eu.etaxonomy.taxeditor.operation.AbstractPersistentPostOperation; +import eu.etaxonomy.taxeditor.operation.IPostOperationEnabled; + +public class DeleteTaxonBaseOperation extends AbstractPersistentPostOperation { + + private IWorkbenchPage activePage; + + public DeleteTaxonBaseOperation(String label, IUndoContext undoContext, + Taxon taxon, IWorkbenchPage activePage, IPostOperationEnabled postOperationEnabled, IConversationEnabled conversationEnabled) { + super(label, undoContext, postOperationEnabled, + conversationEnabled); + this.activePage = activePage; + + } + + @Override + public IStatus execute(IProgressMonitor monitor, IAdaptable info) + throws ExecutionException { + // TODO Auto-generated method stub + return null; + } + + @Override + public IStatus redo(IProgressMonitor monitor, IAdaptable info) + throws ExecutionException { + // TODO Auto-generated method stub + return null; + } + + @Override + public IStatus undo(IProgressMonitor monitor, IAdaptable info) + throws ExecutionException { + // TODO Auto-generated method stub + return null; + } + + protected void closeObsoleteEditor(Taxon taxon){ + for (IEditorReference ref : activePage.getEditorReferences()) { + + IViewPart view = activePage.findView("eu.etaxonomy.taxeditor.navigation.navigator"); + + try { + IEditorInput input = ref.getEditorInput(); + if (input instanceof TaxonEditorInput) { + TaxonNode node = ((TaxonEditorInput) input).getTaxonNode(); + if (taxonNode.equals(node)) { + activePage.closeEditor(ref.getEditor(false), false); + } + } + } catch (PartInitException e) { + continue; + } + } + } +} + + diff --git a/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/name/operation/DeleteTaxonOperation.java b/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/name/operation/DeleteTaxonOperation.java new file mode 100644 index 000000000..b1a365900 --- /dev/null +++ b/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/name/operation/DeleteTaxonOperation.java @@ -0,0 +1,113 @@ +package eu.etaxonomy.taxeditor.editor.name.operation; + +import java.util.Iterator; +import java.util.Set; + +import org.eclipse.core.commands.ExecutionEvent; +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 org.eclipse.ui.IEditorInput; +import org.eclipse.ui.IEditorReference; +import org.eclipse.ui.IPerspectiveDescriptor; +import org.eclipse.ui.IViewPart; +import org.eclipse.ui.IViewReference; +import org.eclipse.ui.IWorkbenchPage; +import org.eclipse.ui.PartInitException; +import org.eclipse.ui.handlers.HandlerUtil; + +import eu.etaxonomy.cdm.api.application.CdmApplicationController; +import eu.etaxonomy.cdm.api.conversation.IConversationEnabled; +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.model.taxon.Classification; +import eu.etaxonomy.cdm.model.taxon.Synonym; +import eu.etaxonomy.cdm.model.taxon.Taxon; +import eu.etaxonomy.cdm.model.taxon.TaxonNode; +import eu.etaxonomy.taxeditor.editor.TaxonEditorInput; +import eu.etaxonomy.taxeditor.operation.AbstractPostOperation; +import eu.etaxonomy.taxeditor.operation.IPostOperationEnabled; +import eu.etaxonomy.taxeditor.store.CdmStore; + +public class DeleteTaxonOperation extends DeleteTaxonBaseOperation{ + //private Taxon taxon; + private Classification classification; + + + + + public DeleteTaxonOperation(String label, IUndoContext undoContext, + Taxon taxon, Classification classification, IWorkbenchPage activePage, IPostOperationEnabled postOperationEnabled, IConversationEnabled conversationEnabled) { + super(label, undoContext, taxon, activePage, postOperationEnabled, conversationEnabled); + this.taxon = taxon; + + Set nodes = taxon.getTaxonNodes(); + if (nodes.size() == 1 && classification == null){ + this.taxonNode = nodes.iterator().next(); + } else if (classification != null){ + Iterator iterator = nodes.iterator(); + while (iterator.hasNext()){ + TaxonNode node = iterator.next(); + if (node.getClassification().equals(classification)){ + this.taxonNode = node; + } + } + } else{ + //TODO + } + this.classification = classification; + + } + + + + @Override + public IStatus execute(IProgressMonitor monitor, IAdaptable info) + throws ExecutionException { + + monitor.worked(20); + bind(); + + + CdmApplicationController controller; + + controller = (CdmApplicationController) CdmStore.getCurrentApplicationConfiguration(); + + ITaxonService service = controller.getTaxonService(); + try { + + service.deleteTaxon(taxon, new TaxonDeletionConfigurator(), classification); + + } catch (DataChangeNoRollbackException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + + } + + //closeObsoleteEditor(taxon); + monitor.worked(40); + + + return postExecute(null); + } + + @Override + public IStatus redo(IProgressMonitor monitor, IAdaptable info) + throws ExecutionException { + // TODO Auto-generated method stub + return null; + } + + @Override + public IStatus undo(IProgressMonitor monitor, IAdaptable info) + throws ExecutionException { + // TODO Auto-generated method stub + return null; + } + + +} diff --git a/eu.etaxonomy.taxeditor.navigation/src/main/java/eu/etaxonomy/taxeditor/navigation/navigator/TaxonNavigatorDataChangeBehavior.java b/eu.etaxonomy.taxeditor.navigation/src/main/java/eu/etaxonomy/taxeditor/navigation/navigator/TaxonNavigatorDataChangeBehavior.java index 9816d777b..2fd950b20 100644 --- a/eu.etaxonomy.taxeditor.navigation/src/main/java/eu/etaxonomy/taxeditor/navigation/navigator/TaxonNavigatorDataChangeBehavior.java +++ b/eu.etaxonomy.taxeditor.navigation/src/main/java/eu/etaxonomy/taxeditor/navigation/navigator/TaxonNavigatorDataChangeBehavior.java @@ -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. */ @@ -38,13 +38,13 @@ import eu.etaxonomy.taxeditor.navigation.NavigationUtil; * @created 01.04.2009 * @version 1.0 */ -public class TaxonNavigatorDataChangeBehavior extends AbstractDataChangeBehaviour implements +public class TaxonNavigatorDataChangeBehavior extends AbstractDataChangeBehaviour implements IDataChangeBehavior { private TaxonNavigator source; private Set staleObjects; - + /** *

Constructor for TaxonNavigatorDataChangeBehavior.

* @@ -53,7 +53,7 @@ public class TaxonNavigatorDataChangeBehavior extends AbstractDataChangeBehaviou public TaxonNavigatorDataChangeBehavior(TaxonNavigator taxonNavigator) { source = taxonNavigator; } - + /* (non-Javadoc) * @see eu.etaxonomy.taxeditor.store.model.IDataChangeBehavior#isRelevant(java.lang.Object, eu.etaxonomy.cdm.persistence.hibernate.CdmCrudEvent) */ @@ -64,24 +64,24 @@ public class TaxonNavigatorDataChangeBehavior extends AbstractDataChangeBehaviou * @return a boolean. */ public boolean isRelevant(CdmDataChangeMap events) { - + // TODO react only on insert/update/delete of taxon and synonym objects // and on update of name objects boolean relevant = false; staleObjects = new HashSet(); - + for(CdmDataChangeEvent event : events.getAllEvents()){ EventType eventType = event.getEventType(); CdmBase eventEntity = event.getEntity(); - + // all tree node changes are relevant - if((eventType == EventType.INSERT || eventType == EventType.DELETE || eventType == EventType.UPDATE) + if((eventType == EventType.INSERT || eventType == EventType.DELETE || eventType == EventType.UPDATE) && event.getEntity() instanceof ITaxonTreeNode){ return true; } - + // name updates of the accepted taxon of open editors are relevant - if(eventType == EventType.UPDATE){ + if(eventType == EventType.UPDATE && event.getEntity() instanceof TaxonNameBase){ TaxonNameBase name = null; if(eventEntity instanceof TaxonNameBase){ name = (TaxonNameBase) eventEntity; @@ -90,17 +90,36 @@ public class TaxonNavigatorDataChangeBehavior extends AbstractDataChangeBehaviou }else{ continue; } - + Set openEditors = NavigationUtil.getOpenEditors(); - for(IEditorPart editor : openEditors){ - + /*for(IEditorPart editor : openEditors){ + if(name.equals(((TaxonEditorInput) editor.getEditorInput()).getTaxon().getName())){ return true; } + }*/ + } + if (eventType == EventType.DELETE){ + return true; + } + + if(eventType == EventType.UPDATE && event.getEntity() instanceof Taxon){ + TaxonNameBase name = null; + if(eventEntity instanceof Taxon){ + name = ((Taxon) eventEntity).getName(); + }else{ + continue; } + + Set openEditors = NavigationUtil.getOpenEditors(); + /*for(IEditorPart editor : openEditors){ + + if(name.equals(((TaxonEditorInput) editor.getEditorInput()).getTaxon().getName())){ + return true; + } + }*/ } - - + // if(eventType == EventType.UPDATE){ // relevant = true; // CdmBase entity = event.getEntity(); @@ -111,9 +130,9 @@ public class TaxonNavigatorDataChangeBehavior extends AbstractDataChangeBehaviou // } // } } - + return false; - + // @deprecated // react on everything except load // if(events.sizeByEventType(EventType.INSERT) > 0){ @@ -132,26 +151,27 @@ public class TaxonNavigatorDataChangeBehavior extends AbstractDataChangeBehaviou */ /** {@inheritDoc} */ @Override - public void reactOnDataChange(CdmDataChangeMap events) { + public void reactOnDataChange(CdmDataChangeMap events) { if(isRelevant(events)){ final Display display = Display.getCurrent(); Job job = new Job("Updating Taxon Navigator") { - + @Override protected IStatus run(IProgressMonitor monitor) { monitor.beginTask("Updating Taxon Navigator", 3); monitor.worked(1); - + // clear the session completely monitor.subTask("Clearing Taxon Navigators session"); + System.out.println("Clearing Taxon Navigators session"); display.asyncExec(new Runnable() { @Override - public void run() { + public void run() { source.getConversationHolder().clear(); } - }); - // FIXME completely clearing the session is a brute force approach. + }); + // FIXME completely clearing the session is a brute force approach. // It would be much more elegant to clear only those elements that have been changed. // I could not get that to work but we should consider workin on this because we might // run into serious performance issues, especially when it comes to large trees @@ -159,27 +179,27 @@ public class TaxonNavigatorDataChangeBehavior extends AbstractDataChangeBehaviou // at least, we moved this to a job so it can run in a background thred // seems to improve the situation but not sure if final solution monitor.worked(1); - + monitor.subTask("Refreshing viewer"); - + display.asyncExec(new Runnable() { @Override - public void run() { + public void run() { source.refresh(); } }); - - - + + + monitor.worked(1); monitor.done(); return Status.OK_STATUS; } }; - + job.setPriority(Job.SHORT); job.schedule(); - + } } } diff --git a/eu.etaxonomy.taxeditor.navigation/src/main/java/eu/etaxonomy/taxeditor/navigation/navigator/operation/DeleteOperation.java b/eu.etaxonomy.taxeditor.navigation/src/main/java/eu/etaxonomy/taxeditor/navigation/navigator/operation/DeleteOperation.java index eab39d5f0..928049feb 100644 --- a/eu.etaxonomy.taxeditor.navigation/src/main/java/eu/etaxonomy/taxeditor/navigation/navigator/operation/DeleteOperation.java +++ b/eu.etaxonomy.taxeditor.navigation/src/main/java/eu/etaxonomy/taxeditor/navigation/navigator/operation/DeleteOperation.java @@ -18,8 +18,12 @@ import org.eclipse.core.runtime.IAdaptable; import org.eclipse.core.runtime.IProgressMonitor; import org.eclipse.core.runtime.IStatus; +import eu.etaxonomy.cdm.api.application.CdmApplicationController; import eu.etaxonomy.cdm.api.conversation.IConversationEnabled; import eu.etaxonomy.cdm.api.service.IClassificationService; +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.model.taxon.Classification; import eu.etaxonomy.cdm.model.taxon.ITaxonTreeNode; import eu.etaxonomy.cdm.model.taxon.TaxonNode; @@ -70,7 +74,22 @@ public class DeleteOperation extends AbstractPersistentPostOperation{ monitor.worked(20); for (ITaxonTreeNode treeNode : treeNodes){ if(treeNode instanceof TaxonNode){ - ((TaxonNode) treeNode).delete(); + //((TaxonNode) treeNode).delete(); + CdmApplicationController controller; + taxon = ((TaxonNode) treeNode).getTaxon(); + controller = (CdmApplicationController) CdmStore.getCurrentApplicationConfiguration(); + + ITaxonService service = controller.getTaxonService(); + try { + + service.deleteTaxon(taxon, new TaxonDeletionConfigurator(), ((TaxonNode) treeNode).getClassification()); + + } catch (DataChangeNoRollbackException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + + } + }else if(treeNode instanceof Classification){ Classification taxonomicTree = (Classification) treeNode; if(taxonomicTree.hasChildNodes()){ diff --git a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/operation/AbstractPersistentPostOperation.java b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/operation/AbstractPersistentPostOperation.java index 0b2f6f0f2..ab05864c6 100644 --- a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/operation/AbstractPersistentPostOperation.java +++ b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/operation/AbstractPersistentPostOperation.java @@ -93,8 +93,10 @@ public abstract class AbstractPersistentPostOperation extends AbstractPostOperat protected IStatus postExecute(CdmBase objectAffectedByOperation) { Assert.isNotNull(conversationEnabled, "Operation has to have a valid conversation attached."); - conversationEnabled.getConversationHolder().commit(true); - + + if (!conversationEnabled.getConversationHolder().isClosed()){ + conversationEnabled.getConversationHolder().commit(true); + } IStatus status = super.postExecute(objectAffectedByOperation); return status; diff --git a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/operation/AbstractPostOperation.java b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/operation/AbstractPostOperation.java index 2a5e8b381..5f3ffed22 100644 --- a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/operation/AbstractPostOperation.java +++ b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/operation/AbstractPostOperation.java @@ -33,7 +33,7 @@ public abstract class AbstractPostOperation extends AbstractOperation { /** * */ - private IPostOperationEnabled postOperationEnabled; + protected IPostOperationEnabled postOperationEnabled; /** * A reference to the taxon the concrete operation is working on @@ -150,4 +150,6 @@ public abstract class AbstractPostOperation extends AbstractOperation { public IPostOperationEnabled getPostOperationEnabled() { return postOperationEnabled; } + + }