refactoring taxon controllers, reducing code duplication
[cdmlib.git] / cdmlib-remote / src / main / java / eu / etaxonomy / cdm / remote / controller / DescriptionListPortalController.java
index aebc242c472b41a28a04e5091d0d72c2bbc4921f..5e4dcb965de93e96b8edc40fc761c2eabec224e2 100644 (file)
@@ -64,15 +64,29 @@ public class DescriptionListPortalController extends IdentifiableListController<
     protected static final List<String> DESCRIPTION_INIT_STRATEGY = Arrays.asList(new String []{\r
             "$",\r
             "elements.$",\r
-            "elements.states.$",\r
+            "elements.annotations",\r
+            "elements.markers",\r
+            "elements.stateData.$",\r
             "elements.sources.citation.authorTeam",\r
-            "elements.sources.nameUsedInSource.originalNameString",\r
+            "elements.sources.nameUsedInSource",\r
             "elements.multilanguageText",\r
             "elements.media",\r
+            "elements.kindOfUnit"\r
+    });\r
+\r
+    protected static final List<String> DESCRIPTION_ELEMENT_INIT_STRATEGY = Arrays.asList(new String []{\r
+            "$",\r
+            "annotations",\r
+            "markers",\r
+            "stateData.$",\r
+            "sources.citation.authorTeam",\r
+            "sources.nameUsedInSource",\r
+            "multilanguageText",\r
+            "media",\r
             "name.$",\r
             "name.rank.representations",\r
             "name.status.type.representations",\r
-            "sources.$",\r
+            "taxon2.name"\r
     });\r
 \r
 \r
@@ -112,7 +126,7 @@ public class DescriptionListPortalController extends IdentifiableListController<
     * @return\r
     * @throws IOException\r
     */\r
-   @RequestMapping(value = "/portal/descriptionElement/find", method = RequestMethod.GET)\r
+   @RequestMapping(value = "//portal/descriptionElement/find", method = RequestMethod.GET) // mapped as absolute path, see CdmAntPathMatcher\r
    public Pager<DescriptionElementBase> doFindDescriptionElements(\r
            @RequestParam(value = "query", required = true) String queryString,\r
            @RequestParam(value = "type", required = false) Class<? extends DescriptionElementBase> type,\r
@@ -147,7 +161,7 @@ public class DescriptionListPortalController extends IdentifiableListController<
     * @return\r
     * @throws IOException\r
     */\r
-   @RequestMapping(value = "/portal/descriptionElement/byFeature", method = {RequestMethod.GET, RequestMethod.POST})\r
+   @RequestMapping(value = "//portal/descriptionElement/byFeature", method = {RequestMethod.GET, RequestMethod.POST}) // mapped as absolute path, see CdmAntPathMatcher\r
    public Pager<DescriptionElementBase> doPageDescriptionElementsByFeature(\r
            @RequestParam(value = "features", required = false) DefinedTermBaseList<Feature> features,\r
            @RequestParam(value = "descriptionType", required = true) Class<? extends DescriptionBase> descriptionType,\r
@@ -161,8 +175,12 @@ public class DescriptionListPortalController extends IdentifiableListController<
        PagerParameters pagerParams = new PagerParameters(pageSize, pageNumber);\r
        pagerParams.normalizeAndValidate(response);\r
 \r
+       if(features == null){\r
+           features = new DefinedTermBaseList<Feature>();\r
+       }\r
+\r
        Pager<DescriptionElementBase> pager = service.pageDescriptionElements(null, descriptionType, features.asSet(),\r
-               type, pagerParams.getPageSize(), pagerParams.getPageIndex(), getInitializationStrategy());\r
+               type, pagerParams.getPageSize(), pagerParams.getPageIndex(), DESCRIPTION_ELEMENT_INIT_STRATEGY);\r
 \r
        return pager;\r
    }\r
@@ -180,7 +198,7 @@ public class DescriptionListPortalController extends IdentifiableListController<
     * @return\r
     * @throws IOException\r
     */\r
-   @RequestMapping(value = "/portal/descriptionElement/byTaxon", method = {RequestMethod.GET, RequestMethod.POST})\r
+   @RequestMapping(value = "//portal/descriptionElement/byTaxon", method = {RequestMethod.GET, RequestMethod.POST}) // mapped as absolute path, see CdmAntPathMatcher\r
    public <T extends DescriptionElementBase> Pager<T> getDescriptionElementsForTaxon(\r
            @RequestParam(value = "taxon", required = true) UUID taxon_uuid,\r
            @RequestParam(value = "features", required = false) DefinedTermBaseList<Feature> features,\r
@@ -203,16 +221,17 @@ public class DescriptionListPortalController extends IdentifiableListController<
            }\r
        }\r
        //TODO it seems as if the InitializationStrategy is not appropriate here !!!\r
-       //   see #3728 (DescriptionListPortalController.getDescriptionElementsForTaxon() seems to be using inapproptiate init strategy)\r
+       //   see #3728 (DescriptionListPortalController.getDescriptionElementsForTaxon() seems to be using in-appropriate init strategy)\r
+       if (logger.isDebugEnabled()){logger.debug("get pager ...");}\r
        Pager<T> pager = service.pageDescriptionElementsForTaxon(\r
                taxon,\r
                (features != null ? features.asSet() : null),\r
                type,\r
                pagerParams.getPageSize(),\r
                pagerParams.getPageIndex(),\r
-               getInitializationStrategy()\r
+               DESCRIPTION_ELEMENT_INIT_STRATEGY\r
               );\r
-\r
+       if (logger.isDebugEnabled()){logger.debug("get pager - DONE");}\r
        return pager;\r
    }\r
 }
\ No newline at end of file