ref #7362 Add service method which also saves the new feature
authorPatrick Plitzner <p.plitzner@bgbm.org>
Tue, 15 May 2018 08:29:45 +0000 (10:29 +0200)
committerPatrick Plitzner <p.plitzner@bgbm.org>
Tue, 15 May 2018 08:29:45 +0000 (10:29 +0200)
cdmlib-services/src/main/java/eu/etaxonomy/cdm/api/service/FeatureNodeServiceImpl.java
cdmlib-services/src/main/java/eu/etaxonomy/cdm/api/service/IFeatureNodeService.java

index 205b51117841b851df476aa2567ce334fc9e7dc4..59d4058f90feeafb9580ec8796c0749ae8c73bf8 100644 (file)
@@ -24,6 +24,7 @@ import eu.etaxonomy.cdm.api.service.config.NodeDeletionConfigurator.ChildHandlin
 import eu.etaxonomy.cdm.api.service.exception.ReferencedObjectUndeletableException;
 import eu.etaxonomy.cdm.hibernate.HibernateProxyHelper;
 import eu.etaxonomy.cdm.model.common.CdmBase;
+import eu.etaxonomy.cdm.model.common.DefinedTermBase;
 import eu.etaxonomy.cdm.model.description.Feature;
 import eu.etaxonomy.cdm.model.description.FeatureNode;
 import eu.etaxonomy.cdm.model.description.FeatureTree;
@@ -99,12 +100,25 @@ public class FeatureNodeServiceImpl extends VersionableServiceBase<FeatureNode,
             return result;
         }
 
+        @Override
+        public UpdateResult createChildFeatureNode(FeatureNode node, Feature featureChild){
+            DefinedTermBase feature = termService.save(featureChild);
+            FeatureNode childNode = FeatureNode.NewInstance(featureChild);
+            save(childNode);
+            UpdateResult result = new UpdateResult();
+            node.addChild(childNode);
+            result.addUpdatedObject(node);
+            result.setCdmEntity(node.getFeatureTree());
+            return result;
+        }
+
         @Override
         public UpdateResult addChildFeatureNode(FeatureNode node, Feature featureChild){
             UpdateResult result = new UpdateResult();
             FeatureNode childNode = FeatureNode.NewInstance(featureChild);
             node.addChild(childNode);
             result.addUpdatedObject(node);
+            result.setCdmEntity(node.getFeatureTree());
             return result;
         }
 
index a48642575237c03424fa10c65bedebde1b6b85b5..6361df3a5604ff9c7d6bd6bb46745ca61d35d45d 100644 (file)
@@ -46,6 +46,15 @@ public interface IFeatureNodeService extends IVersionableService<FeatureNode>{
      */\r
     public UpdateResult addChildFeatureNode(FeatureNode parentNode, Feature featureChild);\r
 \r
+\r
+    /**\r
+     * Creates, saves and adds the specified feature as a child node to the given feature node\r
+     * @param parentNode the feature node where the new feature should be added\r
+     * @param featureChild the feature which should be added to the given feature node\r
+     * @return the result of the operation\r
+     */\r
+    public UpdateResult createChildFeatureNode(FeatureNode node, Feature featureChild);\r
+\r
     /**\r
      * Adds the specified feature as a child node to the given feature node\r
      * @param parentNodeUUID the UUID of the feature node where the new feature should be added\r