Merge branch 'develop' into remoting-4.0
[taxeditor.git] / eu.etaxonomy.taxeditor.editor / src / main / java / eu / etaxonomy / taxeditor / editor / name / operation / ChangeSynonymToAcceptedTaxonOperation.java
index de323cf1343571111dc70bb9de1fbc3f1742af33..c62759b72b3a89279d5009c594f00ea81c775d3a 100644 (file)
@@ -1,14 +1,16 @@
 /**
 * 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.
 */
 
 package eu.etaxonomy.taxeditor.editor.name.operation;
 
+import java.util.Set;
+
 import org.eclipse.core.commands.ExecutionException;
 import org.eclipse.core.commands.operations.IUndoContext;
 import org.eclipse.core.runtime.IAdaptable;
@@ -18,15 +20,16 @@ import org.eclipse.core.runtime.IStatus;
 import eu.etaxonomy.cdm.api.conversation.IConversationEnabled;
 import eu.etaxonomy.cdm.api.service.ITaxonService;
 import eu.etaxonomy.cdm.api.service.exception.HomotypicalGroupChangeException;
-import eu.etaxonomy.cdm.model.taxon.ITreeNode;
+import eu.etaxonomy.cdm.model.name.TaxonNameBase;
+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.editor.EditorUtil;
+import eu.etaxonomy.taxeditor.model.MessagingUtils;
 import eu.etaxonomy.taxeditor.operation.AbstractPersistentPostOperation;
 import eu.etaxonomy.taxeditor.operation.IPostOperationEnabled;
+import eu.etaxonomy.taxeditor.session.ICdmEntitySessionEnabled;
 import eu.etaxonomy.taxeditor.store.CdmStore;
-import eu.etaxonomy.taxeditor.store.StoreUtil;
 
 /**
  * Change the taxonomic parent of a given taxon.
@@ -36,37 +39,44 @@ import eu.etaxonomy.taxeditor.store.StoreUtil;
  * @version 1.0
  */
 public class ChangeSynonymToAcceptedTaxonOperation extends AbstractPersistentPostOperation {
-       
+
        private Taxon newTaxon;
-       private Synonym synonym;
-       private ITreeNode parentNode;
+       private final Synonym synonym;
+       private final ITaxonTreeNode parentNode;
 
        private TaxonNode newNode;
 
-       private Synonym[] synonymsInHomotypicalGroup;
-       
+       //private final Set<TaxonNameBase> namesInHomotypicGroup;
+
        /**
         * <p>Constructor for ChangeSynonymToAcceptedTaxonOperation.</p>
         *
         * @param label a {@link java.lang.String} object.
         * @param undoContext a {@link org.eclipse.core.commands.operations.IUndoContext} object.
         * @param taxon a {@link eu.etaxonomy.cdm.model.taxon.Taxon} object.
-        * @param parentNode a {@link eu.etaxonomy.cdm.model.taxon.ITreeNode} object.
+        * @param parentNode a {@link eu.etaxonomy.cdm.model.taxon.ITaxonTreeNode} object.
         * @param synonym a {@link eu.etaxonomy.cdm.model.taxon.Synonym} object.
         * @param synonymsInHomotypicalGroup an array of {@link eu.etaxonomy.cdm.model.taxon.Synonym} objects.
         * @param postOperationEnabled a {@link eu.etaxonomy.taxeditor.operation.IPostOperationEnabled} object.
         * @param conversationEnabled a {@link eu.etaxonomy.cdm.api.conversation.IConversationEnabled} object.
         */
-       public ChangeSynonymToAcceptedTaxonOperation(String label, IUndoContext undoContext,
-                       Taxon taxon, ITreeNode parentNode, Synonym synonym, Synonym[] synonymsInHomotypicalGroup, IPostOperationEnabled postOperationEnabled, IConversationEnabled conversationEnabled) {
-               super(label, undoContext, postOperationEnabled, conversationEnabled);
+       public ChangeSynonymToAcceptedTaxonOperation(String label,
+               IUndoContext undoContext,
+                       Taxon taxon,
+                       ITaxonTreeNode parentNode,
+                       Synonym synonym,
+                       Set<TaxonNameBase> namesInHomotypicalGroup,
+                       IPostOperationEnabled postOperationEnabled,
+                       IConversationEnabled conversationEnabled,
+                       ICdmEntitySessionEnabled cdmEntitySessionEnabled) {
+               super(label, undoContext, postOperationEnabled, conversationEnabled, cdmEntitySessionEnabled);
 
-               this.taxon = taxon;
+               this.element = taxon;
                this.parentNode = parentNode;
-               this.synonym = synonym; 
-               this.synonymsInHomotypicalGroup = synonymsInHomotypicalGroup;
+               this.synonym = synonym;
+               //this.namesInHomotypicGroup = namesInHomotypicalGroup;
        }
-       
+
        /* (non-Javadoc)
         * @see org.eclipse.core.commands.operations.AbstractOperation#execute(org.eclipse.core.runtime.IProgressMonitor, org.eclipse.core.runtime.IAdaptable)
         */
@@ -74,24 +84,33 @@ public class ChangeSynonymToAcceptedTaxonOperation extends AbstractPersistentPos
        @Override
        public IStatus execute(IProgressMonitor monitor, IAdaptable info)
                        throws ExecutionException {
-               
+
                try {
-                       newTaxon = CdmStore.getService(ITaxonService.class).changeSynonymToAcceptedTaxon(synonym, taxon, true, true, null, null);
+                       newNode = (TaxonNode) CdmStore.getService(ITaxonService.class).changeSynonymToAcceptedTaxon(synonym.getUuid(),
+                               element.getUuid(),
+                               parentNode.getUuid(),
+                               true,
+                               true,
+                               null,
+                               null).getCdmEntity();
                } catch (HomotypicalGroupChangeException e) {
-                       EditorUtil.warningDialog("Operation may lead to inconsistent data", getClass(), e.getMessage());
+                       MessagingUtils.warningDialog("Operation may lead to inconsistent data", getClass(), e.getMessage());
+                       return postExecute(null);
                }
                monitor.worked(20);
-               
-               synonym.setSec(null);
-               newNode = parentNode.addChildTaxon(newTaxon, null, null, null);
-               
-               if(synonymsInHomotypicalGroup != null){
+               //newTaxon = (Taxon) CdmStore.getService(ITaxonService.class).merge(newTaxon);
+               //element.removeSynonym(synonym);
+
+
+               /*if(namesInHomotypicGroup != null){
                        Taxon taxon = newNode.getTaxon();
-                       for (Synonym synonym : synonymsInHomotypicalGroup){
-                               taxon.addHomotypicSynonym(synonym, null, null);
+                       for (TaxonNameBase synonymName : namesInHomotypicGroup){
+                               taxon.addHomotypicSynonymName(synonymName, null, null);
+
                        }
-               }
-               
+               }*/
+               //newNode = CdmStore.getService(ITaxonNodeService.class).merge(newNode);
+
                monitor.worked(40);
 
                return postExecute(newNode);
@@ -114,11 +133,11 @@ public class ChangeSynonymToAcceptedTaxonOperation extends AbstractPersistentPos
        @Override
        public IStatus undo(IProgressMonitor monitor, IAdaptable info)
                        throws ExecutionException {
-               
+
                // TODO implement - biggest problem is that any window open for new taxon must be closed first
-               StoreUtil.warn(this.getClass(), "Not yet implemented");
-               
-               return postExecute(taxon);
+               MessagingUtils.warn(this.getClass(), "Not yet implemented");
+
+               return postExecute(element);
        }
 
 }