import javax.servlet.http.HttpServletRequest;\r
import javax.servlet.http.HttpServletResponse;\r
\r
+import org.apache.log4j.Logger;\r
import org.springframework.beans.factory.annotation.Autowired;\r
import org.springframework.stereotype.Controller;\r
import org.springframework.web.bind.WebDataBinder;\r
@RequestMapping(value = {"/portal/description"})\r
public class DescriptionListPortalController extends IdentifiableListController<DescriptionBase, IDescriptionService> {\r
\r
+ public static final Logger logger = Logger.getLogger(DescriptionListPortalController.class);\r
\r
@Autowired\r
private ITaxonService taxonService;\r
protected static final List<String> DESCRIPTION_INIT_STRATEGY = Arrays.asList(new String []{\r
"$",\r
"elements.$",\r
- "elements.sources.citation.authorTeam.$",\r
- "elements.sources.nameUsedInSource.originalNameString",\r
- "elements.area.level",\r
- "elements.modifyingText",\r
- "elements.states.*",\r
+ "elements.annotations",\r
+ "elements.markers",\r
+ "elements.stateData.$",\r
+ "elements.sources.citation.authorTeam",\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
+ "taxon2.name"\r
});\r
\r
\r
* @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
* @return\r
* @throws IOException\r
*/\r
- @RequestMapping(value = "/portal/descriptionElement/byFeature", method = RequestMethod.GET)\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
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
* @return\r
* @throws IOException\r
*/\r
- @RequestMapping(value = "/portal/descriptionElement/byTaxon", method = RequestMethod.GET)\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
HttpStatusMessage.UUID_NOT_FOUND.send(response);\r
}\r
}\r
- Pager<T> pager = service.pageDescriptionElementsForTaxon(taxon, features.asSet(), type, pageSize,\r
- pageNumber, getInitializationStrategy());\r
-\r
+ //TODO it seems as if the InitializationStrategy is not appropriate here !!!\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
+ DESCRIPTION_ELEMENT_INIT_STRATEGY\r
+ );\r
+ if (logger.isDebugEnabled()){logger.debug("get pager - DONE");}\r
return pager;\r
}\r
}
\ No newline at end of file