Merge branch 'release/5.32.0'
[cdmlib.git] / cdmlib-services / src / main / java / eu / etaxonomy / cdm / api / service / PolytomousKeyNodeServiceImpl.java
index a2c56f2255bc267c25bc36621ca451665f704cb6..b6e09b28978bd5c4a840743a9c0f12b6f56e503d 100644 (file)
@@ -16,7 +16,6 @@ import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
-import eu.etaxonomy.cdm.hibernate.HHH_9751_Util;
 import eu.etaxonomy.cdm.hibernate.HibernateProxyHelper;
 import eu.etaxonomy.cdm.model.description.PolytomousKey;
 import eu.etaxonomy.cdm.model.description.PolytomousKeyNode;
@@ -25,13 +24,13 @@ import eu.etaxonomy.cdm.persistence.dao.description.IPolytomousKeyNodeDao;
 
 /**
  * @author a.kohlbecker
- * @date 24.03.2011
- *
+ * @since 24.03.2011
  */
 @Service
 @Transactional(readOnly = false)
-public class PolytomousKeyNodeServiceImpl  extends VersionableServiceBase<PolytomousKeyNode, IPolytomousKeyNodeDao> implements IPolytomousKeyNodeService {
-
+public class PolytomousKeyNodeServiceImpl
+        extends VersionableServiceBase<PolytomousKeyNode, IPolytomousKeyNodeDao>
+        implements IPolytomousKeyNodeService {
 
        @Override
     @Autowired
@@ -47,44 +46,36 @@ public class PolytomousKeyNodeServiceImpl  extends VersionableServiceBase<Polyto
         DeleteResult result = new DeleteResult();
         PolytomousKeyNode node = dao.findByUuid(nodeUUID);
         node = HibernateProxyHelper.deproxy(node);
-        if(node == null) {
-           // result.addException(new Exception("The polytomouskey node was already deleted."));;
+        if (node == null) {
+           // result.addException(new Exception("The polytomouskey node was already deleted."));
             return result;
         }
-        List<PolytomousKeyNode> children = new ArrayList<PolytomousKeyNode>();
+        List<PolytomousKeyNode> children = new ArrayList<>();
 
-        node.removeNullValueFromChildren();
         for (PolytomousKeyNode child: node.getChildren()){
             children.add(child);
         }
         PolytomousKeyNode parent = node.getParent();
-        parent = HibernateProxyHelper.deproxy(parent, PolytomousKeyNode.class);
+        parent = HibernateProxyHelper.deproxy(parent);
         PolytomousKey key = null;
         if (parent == null){
             key = node.getKey();
-            key = HibernateProxyHelper.deproxy(key, PolytomousKey.class);
+            key = HibernateProxyHelper.deproxy(key);
         }
 
         if(!deleteChildren){
-
             for (PolytomousKeyNode child: children){
                 if (!child.equals(node)){
                     parent.addChild(child);
                     dao.saveOrUpdate(child);
                     result.addUpdatedObject(child);
                 }
-
             }
 
-
             dao.saveOrUpdate(node);
             result.addUpdatedObject(node);
         }
         if (parent!= null){
-            if (parent.getChildren().contains(null)){
-                List<PolytomousKeyNode> parentChildren = parent.getChildren();
-                HHH_9751_Util.removeAllNull(parentChildren);
-            }
             parent.removeChild(node);
             dao.saveOrUpdate(parent);
         }
@@ -96,6 +87,8 @@ public class PolytomousKeyNodeServiceImpl  extends VersionableServiceBase<Polyto
         }
         if (dao.delete(node) == null){
             result.setAbort();
+        }else{
+            result.addDeletedObject(node);
         }
         if (parent != null){
             dao.saveOrUpdate(parent);
@@ -106,7 +99,5 @@ public class PolytomousKeyNodeServiceImpl  extends VersionableServiceBase<Polyto
         }
 
         return result;
-
     }
-
-}
+}
\ No newline at end of file