commandId="eu.etaxonomy.taxeditor.navigation.moveFactualData"
label="Move factual data to another taxon"
style="push">
+ <visibleWhen
+ checkEnabled="true">
+ <and>
+ <reference
+ definitionId="isCdmStoreConnected">
+ </reference>
+ <reference
+ definitionId="isTaxonNode">
+ </reference>
+ </and>
+ </visibleWhen>
</command>
<separator
name="taxeditor-navigation.separator2"
private IContextListener contextListener;
private final CdmFormFactory formFactory;
private Text text_filter;
+ private ICdmEntitySession cdmEntitySession;
private PolytomousKeyViewPartDataChangeBehavior dataChangeBehavior;
private void setInput() {
conversation = CdmStore.createConversation();
conversation.registerForDataStoreChanges(this);
+ cdmEntitySession = CdmStore.getCurrentSessionManager().newSession(this, true);
+ cdmEntitySession.registerForDataStoreChanges(this);
List<PolytomousKey> input = CdmStore.getService(IPolytomousKeyService.class).list(PolytomousKey.class, null, null, null, null);
if(!viewer.getControl().isDisposed()){
viewer.setInput(input);
*/
@Override
public void setFocus() {
+ if(cdmEntitySession != null) {
+ cdmEntitySession.bind();
+ }
viewer.getControl().setFocus();
}
conversation.unregisterForDataStoreChanges(this);
conversation.close();
CdmStore.getContextManager().removeContextListener(contextListener);
+ }
+ if(cdmEntitySession != null) {
+ cdmEntitySession.dispose();
}
super.dispose();
}
*/
@Override
public ICdmEntitySession getCdmEntitySession() {
- // TODO Auto-generated method stub
- return null;
+ return cdmEntitySession;
}
/* (non-Javadoc)
* @see eu.etaxonomy.taxeditor.session.ICdmEntitySessionEnabled#getRootEntities()
*/
@Override
- public <T extends CdmBase> List<T> getRootEntities() {
- // TODO Auto-generated method stub
- return null;
+ public List<PolytomousKey> getRootEntities() {
+ return getKeys();
}
}
public class DeleteOperation extends AbstractPersistentPostOperation {
private final PolytomousKey key;
+ private final ICdmEntitySessionEnabled cdmEntitySessionEnabled;
/**
* @param label
ICdmEntitySessionEnabled cdmEntitySessionEnabled) {
super(label, undoContext, postOperationEnabled, conversationEnabled, cdmEntitySessionEnabled);
this.key = key;
+ this.cdmEntitySessionEnabled = cdmEntitySessionEnabled;
}
/* (non-Javadoc)
bind();
DeleteResult result = CdmStore.getService(IPolytomousKeyService.class).delete(key);
+
if (result.isError()){
MessageDialog.openError(null, "Delete failed", result.getExceptions().get(0).getMessage());
- }else if(result.isAbort()){
+ } else if(result.isAbort()){
MessageDialog.openWarning(null, "Delete abort", "The object could not be deleted, maybe there was no object selected.");
}
import eu.etaxonomy.cdm.api.conversation.IConversationEnabled;
import eu.etaxonomy.cdm.api.service.IClassificationService;
import eu.etaxonomy.cdm.model.common.CdmBase;
+import eu.etaxonomy.cdm.model.taxon.Classification;
import eu.etaxonomy.cdm.model.taxon.TaxonComparatorSearch;
import eu.etaxonomy.cdm.persistence.hibernate.CdmDataChangeMap;
import eu.etaxonomy.taxeditor.model.DataChangeBridge;
private IDataChangeBehavior dataChangeBehavior;
+ private Root root;
+
/*
* (non-Javadoc)
*
// we do not preserve state. Closing the view, in contrary to
// closing the whole application
// should be handled by the state manager too
-
- return new Root(conversation);
+ root = new Root(conversation);
+ return root;
}
return new EmptyRoot();
}
* a {@link org.eclipse.core.runtime.IProgressMonitor} object.
*/
public void restore(IMemento memento, IProgressMonitor monitor) {
+ root = new Root(conversation);
if (memento == null) {
- getCommonViewer().setInput(new Root(conversation));
+ getCommonViewer().setInput(root);
return;
}
int mementoWork = 0;
subProgressMonitor.worked(1);
conversation.registerForDataStoreChanges(TaxonNavigator.this);
subProgressMonitor.worked(1);
- getCommonViewer().setInput(new Root(conversation));
+ getCommonViewer().setInput(root);
subProgressMonitor.worked(1);
getCommonViewer().refresh();
subProgressMonitor.worked(1);
* @see eu.etaxonomy.taxeditor.session.ICdmEntitySessionEnabled#getRootEntities()
*/
@Override
- public <T extends CdmBase> List<T> getRootEntities() {
+ public List<Classification> getRootEntities() {
+ if(root != null) {
+ return root.getParentBeans();
+ }
return null;
}
}
import org.eclipse.core.commands.AbstractHandler;
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.jface.viewers.TreeSelection;
import eu.etaxonomy.taxeditor.navigation.navigator.TaxonNavigator;
import eu.etaxonomy.taxeditor.navigation.navigator.operation.DeleteOperation;
import eu.etaxonomy.taxeditor.operation.AbstractPostOperation;
+import eu.etaxonomy.taxeditor.ui.dialog.DeleteConfiguratorDialog;
+import eu.etaxonomy.taxeditor.ui.dialog.DeleteTaxonConfiguratorDialog;
/**
* <p>DeleteTreeNodeHandler class.</p>
* @created 06.04.2009
* @version 1.0
*/
-public class DeleteHandler extends AbstractHandler implements IHandler{
+public class DeleteHandler extends AbstractHandler{
protected IWorkbenchPage activePage;
protected TaxonNavigator taxonNavigator;
TreeSelection selection = (TreeSelection) HandlerUtil.getCurrentSelection(event);
+
String plural = selection.size() > 1 ? "s" : "";
// Prompt user for confirmation
}
}
AbstractPostOperation operation = null;
+ TaxonDeletionConfigurator config = new TaxonDeletionConfigurator();
if (treeNodes.size() == 1 ){
try {
ITaxonTreeNode treeNode = treeNodes.iterator().next();
ITaxonTreeNode taxonNode =treeNode;
TaxonNodeDeletionConfigurator configNodes = new TaxonNodeDeletionConfigurator();
- TaxonDeletionConfigurator config = new TaxonDeletionConfigurator();
if (taxonNode instanceof Classification && taxonNode.hasChildNodes()){
- if(! MessageDialog.openConfirm(HandlerUtil.getActiveShell(event), "Confirm Deletion", "Do you really want to delete the classification? The tree has children, they will be deleted, too.")){
+ if(!DeleteTaxonConfiguratorDialog.openConfirmWithConfigurator(config, HandlerUtil.getActiveShell(event), "Confirm Deletion", "Do you really want to delete the classification? The tree has children, they will be deleted, too.")){
return null;
}
} else if (taxonNode instanceof Classification && !taxonNode.hasChildNodes()){
- if(! MessageDialog.openConfirm(HandlerUtil.getActiveShell(event), "Confirm Deletion", "Do you really want to delete the classification?")){
+ if(!DeleteTaxonConfiguratorDialog.openConfirmWithConfigurator(config, HandlerUtil.getActiveShell(event), "Confirm Deletion", "Do you really want to delete the classification?")){
return null;
}
} else {
+
if (taxonNode.hasChildNodes()){
- MessageDialog dialog = new MessageDialog(HandlerUtil.getActiveShell(event), "Confirm Deletion", null,
- "Do you really want to delete the selected node? It has childnodes, they will be deleted, too.", MessageDialog.WARNING, new String[] { "Delete all children",
- "Move children to parent node", "Skip" }, 0);
+ DeleteConfiguratorDialog dialog = new DeleteTaxonConfiguratorDialog(
+ config,
+ HandlerUtil.getActiveShell(event),
+ "Confirm Deletion",
+ null,
+ "Do you really want to delete the selected node? It has childnodes, they will be deleted, too.",
+ MessageDialog.WARNING, new String[] { "Delete all children",
+ "Move children to parent node", "Skip" }, 0);
int result = dialog.open();
if (result == 0){
}
}else{
- if(! MessageDialog.openConfirm(HandlerUtil.getActiveShell(event), "Confirm Deletion", "Do you really want to delete the selected node?")){
+ if(!DeleteTaxonConfiguratorDialog.openConfirmWithConfigurator(config, HandlerUtil.getActiveShell(event), "Confirm Deletion", "Do you really want to delete the selected node?")){
return null;
}
}
/*if(! MessageDialog.openConfirm(HandlerUtil.getActiveShell(event), "Confirm Deletion", "Do you really want to delete the selected nodes?")){
return null;
}*/
+
operation = new DeleteOperation(event.getCommand().getName(),
NavigationUtil.getUndoContext(),
taxonNode,
taxonNavigator);
NavigationUtil.executeOperation(operation);
+
//}
}
}
} else{
try{
- if(! MessageDialog.openConfirm(HandlerUtil.getActiveShell(event), "Confirm Deletion", "Do you really want to delete the selected nodes?")){
+ if(!DeleteTaxonConfiguratorDialog.openConfirmWithConfigurator(config, HandlerUtil.getActiveShell(event), "Confirm Deletion", "Do you really want to delete the selected nodes?")){
return null;
}
if (allEditorsClosed){
+
operation = new DeleteOperation(event.getCommand().getName(),
NavigationUtil.getUndoContext(),
treeNodes,
taxonNavigator);
NavigationUtil.executeOperation(operation);
+
}
}catch (NotDefinedException e) {
MessagingUtils.warn(getClass(), "Command name not set");
package eu.etaxonomy.taxeditor.navigation.navigator.operation;
-import java.util.HashSet;
-import java.util.Set;
-
import org.eclipse.core.commands.ExecutionException;
import org.eclipse.core.commands.operations.IUndoContext;
import org.eclipse.core.runtime.IAdaptable;
import eu.etaxonomy.cdm.api.conversation.IConversationEnabled;
import eu.etaxonomy.cdm.api.service.ITaxonNodeService;
+import eu.etaxonomy.cdm.api.service.UpdateResult;
import eu.etaxonomy.cdm.api.service.config.TaxonDeletionConfigurator;
import eu.etaxonomy.cdm.hibernate.HibernateProxyHelper;
-import eu.etaxonomy.cdm.model.common.CdmBase;
import eu.etaxonomy.cdm.model.taxon.ITaxonTreeNode;
-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.operation.IPostOperationEnabled;
monitor.worked(20);
bind();
- Synonym synonym = null;
- Taxon oldTaxon = (Taxon) HibernateProxyHelper.deproxy(((TaxonNode) taxonNode).getTaxon());
- synonym = CdmStore.getService(ITaxonNodeService.class).makeTaxonNodeASynonymOfAnotherTaxonNode(taxonNode.getUuid(), newAcceptedTaxonNode.getUuid(), null, null, null);
- Set<CdmBase> affectedObjects = new HashSet<CdmBase>();
- for(Taxon taxon : synonym.getAcceptedTaxa()) {
- affectedObjects.addAll(taxon.getTaxonNodes());
- }
- //FIXME:Remoting add new taxonNode.getParent to affectedObjects
+ Taxon oldTaxon = (Taxon) HibernateProxyHelper.deproxy(((TaxonNode) taxonNode).getTaxon());
- cdmEntitySessionEnabled.getCdmEntitySession().update(synonym, affectedObjects);
+ UpdateResult result = CdmStore.getService(ITaxonNodeService.class).makeTaxonNodeASynonymOfAnotherTaxonNode(taxonNode.getUuid(), newAcceptedTaxonNode.getUuid(), null, null, null);
monitor.worked(40);
return postExecute(oldTaxon);
monitor.worked(20);
ICdmApplicationConfiguration controller = CdmStore.getCurrentApplicationConfiguration();
ITaxonNodeService service = controller.getTaxonNodeService();
- Set<CdmBase> affectedObjects = new HashSet<CdmBase>();
+ DeleteResult result;
- if(taxonNode != null && taxonNode instanceof TaxonNode){
- //((TaxonNode) treeNode).delete();
+ if(taxonNode != null && taxonNode instanceof TaxonNode) {
element = ((TaxonNode)taxonNode).getTaxon();
- DeleteResult result = service.deleteTaxonNode(taxonNode.getUuid(), config);
- if (result.isError()){
- //TODO:Error message!
+ result = service.deleteTaxonNode(taxonNode.getUuid(), config);
+ if (result.isError() || result.isAbort()){
MessageDialog.openError(null, "Delete failed", result.getExceptions().get(0).getMessage());
- } else {
- affectedObjects.add(((TaxonNode)taxonNode).getParent());
- cdmEntitySessionEnabled.getCdmEntitySession().delete(taxonNode, affectedObjects);
}
- }else if(taxonNode != null && taxonNode instanceof Classification){
+ } else if(taxonNode != null && taxonNode instanceof Classification) {
Classification taxonomicTree = (Classification) taxonNode;
/*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?")){
}
}*/
- DeleteResult result = CdmStore.getService(IClassificationService.class).delete(taxonomicTree);
- if (result.isError()){
- //TODO:Error message!
+ result = CdmStore.getService(IClassificationService.class).delete(taxonomicTree.getUuid());
+ if (result.isError() || result.isAbort()){
MessageDialog.openError(null, "Delete failed", result.getExceptions().get(0).getMessage());
- } else {
- affectedObjects.add(((TaxonNode)taxonNode).getParent());
- cdmEntitySessionEnabled.getCdmEntitySession().delete(taxonomicTree, affectedObjects);
}
+
} else {
Set<UUID> treeNodeUuids = new HashSet<UUID>();
+ ITaxonTreeNode entity = null;
for(ITaxonTreeNode treeNode : treeNodes) {
+ if(entity == null) {
+ entity = treeNode;
+ }
treeNodeUuids.add(treeNode.getUuid());
}
- DeleteResult result = service.deleteTaxonNodes(treeNodeUuids, config);
- if (result.isError()){
- //TODO:Error message!
+
+ result = service.deleteTaxonNodes(treeNodeUuids, config);
+ if (result.isError() || result.isAbort()){
MessageDialog.openError(null, "Delete failed", result.getExceptions().get(0).getMessage());
}
- for(ITaxonTreeNode treeNode : treeNodes) {
- affectedObjects.add(((TaxonNode)treeNode).getParent());
- }
- cdmEntitySessionEnabled.getCdmEntitySession().delete(treeNodes, affectedObjects);
}
monitor.worked(40);
+
return postExecute(null);
}
package eu.etaxonomy.taxeditor.navigation.navigator.operation;
import java.util.HashMap;
-import java.util.HashSet;
import java.util.Map;
import java.util.Set;
import eu.etaxonomy.cdm.api.conversation.IConversationEnabled;
import eu.etaxonomy.cdm.api.service.ITaxonNodeService;
-import eu.etaxonomy.cdm.model.common.CdmBase;
+import eu.etaxonomy.cdm.api.service.UpdateResult;
import eu.etaxonomy.cdm.model.taxon.ITaxonTreeNode;
import eu.etaxonomy.cdm.model.taxon.IllegalAncestryException;
import eu.etaxonomy.cdm.model.taxon.TaxonNode;
private final Set<TaxonNode> taxonNodes;
- private final ICdmEntitySessionEnabled cdmEntitySessionEnabled;
+
/**
* <p>Constructor for MoveTaxonOperation.</p>
*
this.oldParentTreeNodes.put(taxonNode, taxonNode.getParent());
}
- this.cdmEntitySessionEnabled = cdmEntitySessionEnabled;
+
}
/* (non-Javadoc)
bind();
monitor.worked(20);
- Set<CdmBase> affectedObjects = new HashSet<CdmBase>();
+
try {
for (TaxonNode taxonNode : taxonNodes){
- TaxonNode newTaxonNode = CdmStore.getService( ITaxonNodeService.class).moveTaxonNode(taxonNode.getUuid(), newParentTreeNode.getUuid());
- affectedObjects.add(newTaxonNode.getParent());
- //FIXME:Remoting testing until UpdateResult is ready
- affectedObjects.add(newTaxonNode.getParent().getParent());
- cdmEntitySessionEnabled.getCdmEntitySession().update(newTaxonNode, affectedObjects);
+ UpdateResult result = CdmStore.getService( ITaxonNodeService.class).moveTaxonNode(taxonNode.getUuid(), newParentTreeNode.getUuid());
monitor.worked(2);
}