ref #6805 Set moved node as CDM entity for UpdateResult
[cdmlib.git] / cdmlib-services / src / main / java / eu / etaxonomy / cdm / api / service / FeatureNodeServiceImpl.java
index a59976c0599f254b0ea98e35d49f52bba450abf8..b0725fb59187954d150281997411aa947c0edba9 100644 (file)
@@ -31,7 +31,7 @@ import eu.etaxonomy.cdm.persistence.dao.description.IFeatureNodeDao;
 
 /**
  * @author n.hoffmann
- * @created Aug 5, 2010
+ * @since Aug 5, 2010
  * @version 1.0
  */
 @Service
@@ -86,24 +86,33 @@ public class FeatureNodeServiceImpl extends VersionableServiceBase<FeatureNode,
                 }
 
                 dao.delete(node);
+                result.addDeletedObject(node);
                 if(parent!=null){
                     result.addUpdatedObject(parent);
                 }
                 if (config.isDeleteElement()){
                  feature = node.getFeature();
                  termService.delete(feature.getUuid());
+                 result.addDeletedObject(feature);
              }
             }
             return result;
         }
 
+        @Override
+        public UpdateResult createChildFeatureNode(FeatureNode node, Feature featureChild){
+            Feature feature = (Feature) termService.save(featureChild);
+            return addChildFeatureNode(node, feature);
+        }
+
         @Override
         public UpdateResult addChildFeatureNode(FeatureNode node, Feature featureChild){
-            UpdateResult result = new UpdateResult();
             FeatureNode childNode = FeatureNode.NewInstance(featureChild);
-            save(childNode);
+            UpdateResult result = new UpdateResult();
             node.addChild(childNode);
+            save(childNode);
             result.addUpdatedObject(node);
+            result.setCdmEntity(childNode);
             return result;
         }
 
@@ -151,13 +160,10 @@ public class FeatureNodeServiceImpl extends VersionableServiceBase<FeatureNode,
             targetNode.addChild(movedNode, position);
         }
         result.addUpdatedObject(targetNode);
-        saveOrUpdate(targetNode);
-        saveOrUpdate(movedNode);
         if(parent!=null){
             result.addUpdatedObject(parent);
-            saveOrUpdate(parent);
         }
-        result.setCdmEntity(targetNode.getFeatureTree());
+        result.setCdmEntity(movedNode);
         return result;
     }