cleanup
[cdmlib.git] / cdmlib-remote / src / main / java / eu / etaxonomy / cdm / remote / controller / ClassificationPortalListController.java
index 47b7d9e09b8d6d73b0a18ca25c679341034761a4..ccf0c884fb9c2834f64e0310cd8cc636ffdcfa76 100644 (file)
@@ -1,4 +1,3 @@
-// $Id$\r
 /**\r
  * Copyright (C) 2009 EDIT European Distributed Institute of Taxonomy\r
  * http://www.e-taxonomy.eu\r
@@ -9,9 +8,8 @@
 \r
 package eu.etaxonomy.cdm.remote.controller;\r
 \r
-import io.swagger.annotations.Api;\r
-\r
 import java.io.IOException;\r
+import java.util.ArrayList;\r
 import java.util.Arrays;\r
 import java.util.List;\r
 import java.util.UUID;\r
@@ -31,22 +29,24 @@ import org.springframework.web.bind.annotation.RequestMethod;
 import eu.etaxonomy.cdm.api.service.IClassificationService;\r
 import eu.etaxonomy.cdm.api.service.ITaxonService;\r
 import eu.etaxonomy.cdm.api.service.ITermService;\r
+import eu.etaxonomy.cdm.exception.UnpublishedException;\r
 import eu.etaxonomy.cdm.model.common.DefinedTermBase;\r
 import eu.etaxonomy.cdm.model.name.Rank;\r
 import eu.etaxonomy.cdm.model.taxon.Classification;\r
 import eu.etaxonomy.cdm.model.taxon.Taxon;\r
 import eu.etaxonomy.cdm.model.taxon.TaxonNode;\r
 import eu.etaxonomy.cdm.remote.editor.RankPropertyEditor;\r
+import io.swagger.annotations.Api;\r
 \r
 /**\r
  * The ClassificationController class is a Spring MVC Controller.\r
  * @author a.kohlbecker\r
- * @date 20.03.2009\r
+ * @since 20.03.2009\r
  */\r
 @Controller\r
 @Api("portal_classification")\r
 @RequestMapping(value="/portal/classification")\r
-public class ClassificationPortalListController extends IdentifiableListController<Classification,IClassificationService> {\r
+public class ClassificationPortalListController extends AbstractIdentifiableListController<Classification,IClassificationService> {\r
 \r
 \r
     private static final List<String> CLASSIFICATION_INIT_STRATEGY = Arrays.asList(new String[]{\r
@@ -55,8 +55,8 @@ public class ClassificationPortalListController extends IdentifiableListControll
     });\r
 \r
     private static final List<String> NODE_INIT_STRATEGY = Arrays.asList(new String[]{\r
-            "taxon.sec",\r
             "taxon.name.rank",\r
+            "taxon.sec"\r
             });\r
 \r
 \r
@@ -150,16 +150,14 @@ public class ClassificationPortalListController extends IdentifiableListControll
             }\r
         }\r
         rank = findRank(rankUuid);\r
-\r
+        boolean includeUnpublished = NO_UNPUBLISHED;\r
 //        long start = System.currentTimeMillis();\r
-        List<TaxonNode> rootNodes = service.listRankSpecificRootNodes(tree, rank, null, null, DEFAULT_INIT_STRATEGY);\r
+        List<TaxonNode> rootNodes = service.listRankSpecificRootNodes(tree, rank, includeUnpublished, null, null, NODE_INIT_STRATEGY);\r
 //        System.err.println("service.listRankSpecificRootNodes() " + (System.currentTimeMillis() - start));\r
         return rootNodes;\r
     }\r
 \r
 \r
-\r
-\r
     /**\r
      * Lists all child-{@link TaxonNode}s of the specified {@link Taxon} in the {@link Classification}. The\r
      * a given {@link Rank} is ignored in this method but for consistency reasons it has been allowed to included it into the URI.\r
@@ -187,8 +185,27 @@ public class ClassificationPortalListController extends IdentifiableListControll
             HttpServletResponse response) throws IOException {\r
         logger.info("getChildNodesOfTaxon() " + request.getRequestURI());\r
 \r
+        boolean includeUnpublished = NO_UNPUBLISHED;  //for now we do not allow any remote service to publish unpublished data\r
+\r
+        List<TaxonNode> children = service.listChildNodesOfTaxon(taxonUuid, treeUuid,\r
+                includeUnpublished, null, null, NODE_INIT_STRATEGY);\r
+        return children;\r
+\r
+    }\r
+\r
+    @RequestMapping(\r
+            value = {"{treeUuid}/siblingsOf/{taxonUuid}"},\r
+            method = RequestMethod.GET)\r
+    public List<TaxonNode> getSiblingsOfTaxon(\r
+            @PathVariable("treeUuid") UUID treeUuid,\r
+            @PathVariable("taxonUuid") UUID taxonUuid,\r
+            HttpServletRequest request,\r
+            HttpServletResponse response) throws IOException {\r
+        logger.info("getSiblingsOfTaxon() " + request.getRequestURI());\r
 \r
-        List<TaxonNode> childs = service.listChildNodesOfTaxon(taxonUuid, treeUuid, null, null, NODE_INIT_STRATEGY);\r
+        boolean includeUnpublished = NO_UNPUBLISHED;\r
+        //FIXME return pager\r
+        List<TaxonNode> childs = service.listSiblingsOfTaxon(taxonUuid, treeUuid, includeUnpublished, null, null, NODE_INIT_STRATEGY);\r
         return childs;\r
 \r
     }\r
@@ -218,14 +235,20 @@ public class ClassificationPortalListController extends IdentifiableListControll
             @PathVariable("taxonUuid") UUID taxonUuid,\r
             @PathVariable("rankUuid") UUID rankUuid,\r
             HttpServletRequest request,\r
-            HttpServletResponse response) throws IOException {\r
+            HttpServletResponse response) {\r
         logger.info("getPathFromTaxonToRank() " + request.getRequestURI());\r
 \r
+        boolean includeUnpublished = NO_UNPUBLISHED;\r
+\r
         Classification tree = service.find(treeUuid);\r
         Rank rank = findRank(rankUuid);\r
         Taxon taxon = (Taxon) taxonService.load(taxonUuid);\r
 \r
-        return service.loadTreeBranchToTaxon(taxon, tree, rank, NODE_INIT_STRATEGY);\r
+        try {\r
+            return service.loadTreeBranchToTaxon(taxon, tree, rank, includeUnpublished, NODE_INIT_STRATEGY);\r
+        } catch (UnpublishedException e) {\r
+            return new ArrayList<>();\r
+        }\r
     }\r
 \r
     /**\r
@@ -251,7 +274,7 @@ public class ClassificationPortalListController extends IdentifiableListControll
             @PathVariable("treeUuid") UUID treeUuid,\r
             @PathVariable("taxonUuid") UUID taxonUuid,\r
             HttpServletRequest request,\r
-            HttpServletResponse response) throws IOException {\r
+            HttpServletResponse response) {\r
 \r
         return getPathFromTaxonToRank(treeUuid, taxonUuid, null, request, response);\r
     }\r
@@ -260,7 +283,7 @@ public class ClassificationPortalListController extends IdentifiableListControll
     private Rank findRank(UUID rankUuid) {\r
         Rank rank = null;\r
         if(rankUuid != null){\r
-            DefinedTermBase dt =  termService.find(rankUuid);\r
+            DefinedTermBase<?> dt =  termService.find(rankUuid);\r
             if(dt instanceof Rank){\r
                 rank = (Rank)dt;\r
             } else {\r
@@ -271,4 +294,4 @@ public class ClassificationPortalListController extends IdentifiableListControll
     }\r
 \r
 \r
-}
\ No newline at end of file
+}