small changes for moving taxonnodes
authorKatja Luther <k.luther@bgbm.org>
Fri, 22 Apr 2016 09:51:54 +0000 (11:51 +0200)
committerKatja Luther <k.luther@bgbm.org>
Fri, 22 Apr 2016 09:52:37 +0000 (11:52 +0200)
cdmlib-services/src/main/java/eu/etaxonomy/cdm/api/service/ITaxonNodeService.java [changed mode: 0644->0755]
cdmlib-services/src/main/java/eu/etaxonomy/cdm/api/service/TaxonNodeServiceImpl.java

old mode 100644 (file)
new mode 100755 (executable)
index 427d760..d2368e4
@@ -112,7 +112,7 @@ public interface ITaxonNodeService extends IAnnotatableService<TaxonNode>{
      * @param newParentTaxonNodeUuid
      * @return
      */
-    public UpdateResult moveTaxonNode(UUID taxonNodeUuid, UUID newParentTaxonNodeUuid, boolean parent);
+    public UpdateResult moveTaxonNode(UUID taxonNodeUuid, UUID newParentTaxonNodeUuid, int movingType);
 
 
 
@@ -121,7 +121,7 @@ public interface ITaxonNodeService extends IAnnotatableService<TaxonNode>{
      * @param newParentNodeUuid
      * @return
      */
-    UpdateResult moveTaxonNodes(Set<UUID> taxonNodeUuids, UUID newParentNodeUuid, boolean parent);
+    UpdateResult moveTaxonNodes(Set<UUID> taxonNodeUuids, UUID newParentNodeUuid, int movingType);
 
     /**
      * @param taxonNode
@@ -129,7 +129,7 @@ public interface ITaxonNodeService extends IAnnotatableService<TaxonNode>{
      * @param parent
      * @return
      */
-    UpdateResult moveTaxonNode(TaxonNode taxonNode, TaxonNode newParent, boolean parent);
+    UpdateResult moveTaxonNode(TaxonNode taxonNode, TaxonNode newParent, int movingType);
 
     /**
      * deletes the given taxon nodes
index 4181545facf0ab678741185ccb0d26f862123c1c..e7e1d2039e76cefb0e227bc1e69f49fd2bbd1881 100755 (executable)
@@ -528,26 +528,31 @@ public class TaxonNodeServiceImpl extends AnnotatableServiceBase<TaxonNode, ITax
 
     @Override
     @Transactional
-    public UpdateResult moveTaxonNode(UUID taxonNodeUuid, UUID targetNodeUuid, boolean isParent){
+    public UpdateResult moveTaxonNode(UUID taxonNodeUuid, UUID targetNodeUuid, int movingType){
         TaxonNode taxonNode = HibernateProxyHelper.deproxy(dao.load(taxonNodeUuid), TaxonNode.class);
        TaxonNode targetNode = HibernateProxyHelper.deproxy(dao.load(targetNodeUuid), TaxonNode.class);
-       return moveTaxonNode(taxonNode, targetNode, isParent);
+       return moveTaxonNode(taxonNode, targetNode, movingType);
     }
 
     @Override
     @Transactional
-    public UpdateResult moveTaxonNode(TaxonNode taxonNode, TaxonNode newParent, boolean isParent){
+    public UpdateResult moveTaxonNode(TaxonNode taxonNode, TaxonNode newParent, int movingType){
         UpdateResult result = new UpdateResult();
 
         TaxonNode parentParent = HibernateProxyHelper.deproxy(newParent.getParent(), TaxonNode.class);
 
-        Integer sortIndex;
-        if (isParent){
-
-            sortIndex = newParent.getChildNodes().size();
-        }else{
+        Integer sortIndex = -1;
+        if (movingType == 0){
+            sortIndex = 0;
+        }else if (movingType == 1){
+            sortIndex = newParent.getSortIndex();
+            newParent = parentParent;
+        } else if (movingType == 2){
             sortIndex = newParent.getSortIndex() +1;
             newParent = parentParent;
+        } else{
+            result.setAbort();
+            result.addException(new Exception("The moving type "+ movingType +" is not supported."));
         }
         result.addUpdatedObject(newParent);
         result.addUpdatedObject(taxonNode.getParent());
@@ -564,12 +569,12 @@ public class TaxonNodeServiceImpl extends AnnotatableServiceBase<TaxonNode, ITax
 
     @Override
     @Transactional
-    public UpdateResult moveTaxonNodes(Set<UUID> taxonNodeUuids, UUID newParentNodeUuid, boolean isParent){
+    public UpdateResult moveTaxonNodes(Set<UUID> taxonNodeUuids, UUID newParentNodeUuid, int movingType){
         UpdateResult result = new UpdateResult();
         TaxonNode targetNode = dao.load(newParentNodeUuid);
         for (UUID taxonNodeUuid: taxonNodeUuids){
             TaxonNode taxonNode = dao.load(taxonNodeUuid);
-            result.includeResult(moveTaxonNode(taxonNode,targetNode, isParent));
+            result.includeResult(moveTaxonNode(taxonNode,targetNode, movingType));
         }
         return result;
     }