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 2c7f81315dbe265876a131b48dfa4249ac4b294f..c62759b72b3a89279d5009c594f00ea81c775d3a 100644 (file)
@@ -9,6 +9,8 @@
 
 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,13 +20,15 @@ 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.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.model.AbstractUtility;
+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;
 
 /**
@@ -42,7 +46,7 @@ public class ChangeSynonymToAcceptedTaxonOperation extends AbstractPersistentPos
 
        private TaxonNode newNode;
 
-       private final Synonym[] synonymsInHomotypicalGroup;
+       //private final Set<TaxonNameBase> namesInHomotypicGroup;
 
        /**
         * <p>Constructor for ChangeSynonymToAcceptedTaxonOperation.</p>
@@ -56,14 +60,21 @@ public class ChangeSynonymToAcceptedTaxonOperation extends AbstractPersistentPos
         * @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, ITaxonTreeNode 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.element = taxon;
                this.parentNode = parentNode;
                this.synonym = synonym;
-               this.synonymsInHomotypicalGroup = synonymsInHomotypicalGroup;
+               //this.namesInHomotypicGroup = namesInHomotypicalGroup;
        }
 
        /* (non-Javadoc)
@@ -75,22 +86,30 @@ public class ChangeSynonymToAcceptedTaxonOperation extends AbstractPersistentPos
                        throws ExecutionException {
 
                try {
-                       newTaxon = CdmStore.getService(ITaxonService.class).changeSynonymToAcceptedTaxon(synonym, element, 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) {
-                       AbstractUtility.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);
+               //newTaxon = (Taxon) CdmStore.getService(ITaxonService.class).merge(newTaxon);
+               //element.removeSynonym(synonym);
 
-               synonym.setSec(null);
-               newNode = parentNode.addChildTaxon(newTaxon, null, null);
 
-               if(synonymsInHomotypicalGroup != null){
+               /*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);
 
@@ -116,7 +135,7 @@ public class ChangeSynonymToAcceptedTaxonOperation extends AbstractPersistentPos
                        throws ExecutionException {
 
                // TODO implement - biggest problem is that any window open for new taxon must be closed first
-               AbstractUtility.warn(this.getClass(), "Not yet implemented");
+               MessagingUtils.warn(this.getClass(), "Not yet implemented");
 
                return postExecute(element);
        }