cherry pick from develop
[taxeditor.git] / eu.etaxonomy.taxeditor.store / src / main / java / eu / etaxonomy / taxeditor / newWizard / NewTaxonNodeWizard.java
index 90a1dc935a1bca6b39b0ea00d3786b1e10ef45ce..6368cdfeaa57b8723f7c2f6fab942663cf582ac8 100644 (file)
@@ -14,6 +14,7 @@ import eu.etaxonomy.cdm.api.application.CdmChangeEvent;
 import eu.etaxonomy.cdm.api.application.CdmChangeEvent.Action;
 import eu.etaxonomy.cdm.api.service.IClassificationService;
 import eu.etaxonomy.cdm.api.service.ITaxonNodeService;
+import eu.etaxonomy.cdm.api.service.UpdateResult;
 import eu.etaxonomy.cdm.model.common.CdmBase;
 import eu.etaxonomy.cdm.model.taxon.Classification;
 import eu.etaxonomy.cdm.model.taxon.ITaxonTreeNode;
@@ -52,29 +53,31 @@ public class NewTaxonNodeWizard extends AbstractNewEntityWizard<ITaxonTreeNode>{
             ITaxonTreeNode parent = getParentTreeNode();
             Taxon taxon = taxonNodePage.getTaxon();
             try{
-                TaxonNode taxonNode = parent.addChildTaxon(taxon, parent.getReference(), parent.getMicroReference());
+               UpdateResult result = CdmStore.getService(ITaxonNodeService.class).createNewTaxonNode(parent.getUuid(), taxon, parent.getReference(), parent.getMicroReference());
+                       
+                //TaxonNode taxonNode = parent.addChildTaxon(taxon, parent.getReference(), parent.getMicroReference());
 
-                if(CdmStore.getCurrentSessionManager().isRemoting()) {
+              /*  if(CdmStore.getCurrentSessionManager().isRemoting()) {
                     taxonNode = CdmStore.getService(ITaxonNodeService.class).merge(taxonNode);
                 } else {
                     taxonNode = CdmStore.getService(ITaxonNodeService.class).save(taxonNode);
-                }
-                generatedTaxonNodeUuid = taxonNode.getUuid();
+                }*/
+               generatedTaxonNodeUuid = result.getCdmEntity().getUuid();
+               TaxonNode taxonNode = CdmStore.getService(ITaxonNodeService.class).load(generatedTaxonNodeUuid);
 
                 Set<CdmBase> affectedObjects = new HashSet<CdmBase>();
-                //FIXME:Remoting Hack for now - need to generalise this
-                // by making the affected objects a set of ICdmBase
-                // Also, this needs to be moved to the new operations
-                // architecture.
-
-                TaxonNode parentNode = taxonNode.getParent();
-                if(parentNode.getParent() == null) {
-                    affectedObjects.add(taxonNode.getClassification());
+                if (result.getUpdatedObjects().iterator().hasNext()){
+                       TaxonNode parentNode = (TaxonNode)result.getUpdatedObjects().iterator().next();
+                       if(parentNode.getParent() == null) {
+                        affectedObjects.add(taxonNode.getClassification());
+                    }
+                       if(parentNode instanceof TaxonNode) {
+                        affectedObjects.add(parentNode);
+                    }
                 }
+                
 
-                if(parentNode instanceof TaxonNode) {
-                    affectedObjects.add(parentNode);
-                }
+                
 
                 if(CdmStore.getCurrentSessionManager().isRemoting()) {
                     CdmApplicationState.getCurrentDataChangeService()