ref #10071: create taxonnodeDTOs also for a subtree
authorKatja Luther <k.luther@bgbm.org>
Thu, 2 Jun 2022 07:34:47 +0000 (09:34 +0200)
committerKatja Luther <k.luther@bgbm.org>
Thu, 2 Jun 2022 07:34:47 +0000 (09:34 +0200)
cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/persistence/dao/hibernate/taxon/TaxonNodeDaoHibernateImpl.java
cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/persistence/dao/taxon/ITaxonNodeDao.java
cdmlib-remote/src/main/java/eu/etaxonomy/cdm/remote/controller/TaxonController.java
cdmlib-services/src/main/java/eu/etaxonomy/cdm/api/service/ITaxonNodeService.java
cdmlib-services/src/main/java/eu/etaxonomy/cdm/api/service/TaxonNodeServiceImpl.java

index 236136745706e501f032217633c552a9cbef5f0c..5c8018d0d653f22f6a8823c769d0d971540fa71b 100755 (executable)
@@ -1196,12 +1196,19 @@ public class TaxonNodeDaoHibernateImpl extends AnnotatableDaoBaseImpl<TaxonNode>
         return list;\r
     }\r
     @Override\r
-    public List<TaxonNodeDto> getTaxonNodeDtosFromTaxon(UUID taxonUuid) {\r
+    public List<TaxonNodeDto> getTaxonNodeDtosFromTaxon(UUID taxonUuid, String subTreeIndex) {\r
        String queryString = getTaxonNodeDtoQuery();\r
         queryString += " WHERE t.uuid = :uuid ";\r
+        if (subTreeIndex != null) {\r
+               subTreeIndex += "%";\r
+               queryString += " AND tn.treeIndex like :subTreeIndex ";\r
+        }\r
         Query<SortableTaxonNodeQueryResult> query =  getSession().createQuery(queryString, SortableTaxonNodeQueryResult.class);\r
         query.setParameter("uuid", taxonUuid);\r
-\r
+        if (subTreeIndex != null) {\r
+               query.setParameter("subTreeIndex", subTreeIndex);\r
+        }\r
+        \r
         List<SortableTaxonNodeQueryResult> result = query.list();\r
         List<TaxonNodeDto> list = createNodeDtos(result);\r
         if (list.isEmpty()) {\r
index fa646ccb44a22d837957dba5cb4029dd52854ae3..1b1107c3e3378bdd223f90a5c962f0515a46533b 100644 (file)
@@ -211,6 +211,10 @@ public interface ITaxonNodeDao extends IAnnotatableDao<TaxonNode> {
      * @return\r
      */\r
     List<TaxonNodeDto> createNodeDtos(List<SortableTaxonNodeQueryResult> result);\r
-\r
-       List<TaxonNodeDto> getTaxonNodeDtosFromTaxon(UUID taxonUuids);\r
+    /**\r
+     * @param taxonUuid\r
+     * @param subTreeIndex\r
+     * @return\r
+     */\r
+       List<TaxonNodeDto> getTaxonNodeDtosFromTaxon(UUID taxonUuid, String subTreeIndex);\r
 }\r
index 79c446370d76373dac7a0a39551b8d426281364d..7311e0eef26d7d1cbdf5e2354d5797573cc31127 100644 (file)
@@ -254,23 +254,20 @@ public class TaxonController extends AbstractIdentifiableController<TaxonBase, I
             HttpServletResponse response) throws IOException {\r
 \r
         logger.info("doGetTaxonNodes" + requestPathAndQuery(request));\r
-        TaxonBase<?> taxonBase = null;\r
+        //this should be done by treeIndex as parameter, but as first implementation we get the node and then the treeinde\r
+        String subTreeIndex = null;\r
         if (subtreeUuid != null){\r
-            taxonBase = doGet(taxonUuid, subtreeUuid, request, response);\r
-        }else{\r
-//            taxonBase = service.load(taxonUuid, NO_UNPUBLISHED, getTaxonNodeInitStrategy().getPropertyPaths());\r
+               TaxonNode subtree = getSubtreeOrError(subtreeUuid, nodeService, response);\r
+               subTreeIndex = subtree != null? subtree.treeIndex(): null;\r
         }\r
-        if(taxonBase != null && taxonBase instanceof Taxon){\r
-            return ((Taxon)taxonBase).getTaxonNodes().stream().map(e -> new TaxonNodeDto(e)).collect(Collectors.toSet());\r
-        }else { \r
-               try {\r
-                       return nodeService.getTaxonNodeDtosFromTaxon(taxonUuid);\r
-               }catch(Exception e) {\r
+        try {\r
+               return nodeService.getTaxonNodeDtosFromTaxon(taxonUuid, subTreeIndex);\r
+        }catch(Exception e) {\r
                         HttpStatusMessage.UUID_REFERENCES_WRONG_TYPE.send(response);\r
                  return null;\r
-               }\r
+        }\r
         \r
-       }\r
+       \r
        \r
            \r
         \r
index 70596414cb07e80c0e332207a2d4d779f8e6a800..d77b3f31408dd2afbb632199766621566bdc1249 100644 (file)
@@ -298,7 +298,12 @@ public interface ITaxonNodeService extends IAnnotatableService<TaxonNode>{
      */
     TaxonNodeDto getTaxonNodeDto(UUID nodeUuid);
 
-       List<TaxonNodeDto> getTaxonNodeDtosFromTaxon(UUID taxonUuids);
+    /**
+     * @param taxonUuid
+     * @param subTreeIndex
+     * @return
+     */
+       List<TaxonNodeDto> getTaxonNodeDtosFromTaxon(UUID taxonUuid, String subTreeIndex);
 
 
 }
index 4783f93906224c8891416d2738f6e55167367cd5..828f398e04ce330d690aee82efdecbed72b5104f 100644 (file)
@@ -1446,8 +1446,8 @@ public class TaxonNodeServiceImpl
     }
 
     @Override
-    public List<TaxonNodeDto> getTaxonNodeDtosFromTaxon(UUID taxonUuids) {
-        return dao.getTaxonNodeDtosFromTaxon(taxonUuids);
+    public List<TaxonNodeDto> getTaxonNodeDtosFromTaxon(UUID taxonUuid, String subTreeIndex) {
+        return dao.getTaxonNodeDtosFromTaxon(taxonUuid, subTreeIndex);
     }
 
 }
\ No newline at end of file