-// $Id$
/**
* Copyright (C) 2007 EDIT
* European Distributed Institute of Taxonomy
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 org.eclipse.core.runtime.IProgressMonitor;
import org.eclipse.core.runtime.IStatus;
+import org.eclipse.core.runtime.Status;
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.model.MessagingUtils;
+import eu.etaxonomy.taxeditor.navigation.internal.TaxeditorNavigationPlugin;
+import eu.etaxonomy.taxeditor.navigation.l10n.Messages;
import eu.etaxonomy.taxeditor.operation.IPostOperationEnabled;
import eu.etaxonomy.taxeditor.session.ICdmEntitySessionEnabled;
import eu.etaxonomy.taxeditor.store.CdmStore;
private final TaxonNode newAcceptedTaxonNode;
private final ICdmEntitySessionEnabled cdmEntitySessionEnabled;
+
//private TaxonNode oldTaxonNode;
/**
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
-
- cdmEntitySessionEnabled.getCdmEntitySession().update(synonym, affectedObjects);
+ Taxon oldTaxon = HibernateProxyHelper.deproxy(((TaxonNode) taxonNode).getTaxon(), Taxon.class);
+ Taxon newAcceptedTaxon = HibernateProxyHelper.deproxy(newAcceptedTaxonNode.getTaxon(), Taxon.class);
+
+ try {
+ UpdateResult result = CdmStore.getService(ITaxonNodeService.class).makeTaxonNodeASynonymOfAnotherTaxonNode(taxonNode.getUuid(), newAcceptedTaxonNode.getUuid(), null, null, null);
+
+
+ if (!result.getExceptions().isEmpty() && result.isOk()){
+ String separator = ", "; //$NON-NLS-1$
+ String exceptionString = ""; //$NON-NLS-1$
+ int count = result.getExceptions().size();
+ int n = 0;
+ for (Exception exception : result.getExceptions()) {
+ n++;
+ exceptionString += exception.getLocalizedMessage();
+ if (n<count){
+ exceptionString += separator;
+ }
+ }
+
+ MessagingUtils.informationDialog(Messages.ChangeAcceptedTaxonToSynonymOperation_CREATE_SUCCESS, exceptionString);
+ } else if (result.isAbort() || result.isError()){
+ MessagingUtils.errorDialog(Messages.ChangeAcceptedTaxonToSynonymOperation_CREATE_FAIL, null, result.toString(), TaxeditorNavigationPlugin.PLUGIN_ID, null, true);
+ }
+ } catch (IllegalArgumentException e) {
+ MessagingUtils.errorDialog(Messages.ChangeAcceptedTaxonToSynonymOperation_OP_FAIL, this, e.getMessage(), TaxeditorNavigationPlugin.PLUGIN_ID, e, false);
+ return Status.CANCEL_STATUS;
+ }
monitor.worked(40);
+
return postExecute(oldTaxon);
}