import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
+import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.servlet.ModelAndView;
import eu.etaxonomy.cdm.api.service.IDescriptionService;
import eu.etaxonomy.cdm.api.service.IFeatureTreeService;
import eu.etaxonomy.cdm.api.service.pager.Pager;
+
import eu.etaxonomy.cdm.model.common.Annotation;
import eu.etaxonomy.cdm.model.common.Language;
-import eu.etaxonomy.cdm.model.common.Representation;
import eu.etaxonomy.cdm.model.description.DescriptionBase;
import eu.etaxonomy.cdm.model.description.DescriptionElementBase;
import eu.etaxonomy.cdm.model.description.Feature;
import eu.etaxonomy.cdm.model.description.TaxonDescription;
import eu.etaxonomy.cdm.model.description.TextData;
import eu.etaxonomy.cdm.model.location.NamedAreaLevel;
+import eu.etaxonomy.cdm.persistence.query.MatchMode;
+import eu.etaxonomy.cdm.remote.controller.util.PagerParameters;
import eu.etaxonomy.cdm.remote.editor.NamedAreaLevelPropertyEditor;
import eu.etaxonomy.cdm.remote.editor.UUIDListPropertyEditor;
-import eu.etaxonomy.cdm.remote.editor.UUIDPropertyEditor;
import eu.etaxonomy.cdm.remote.editor.UuidList;
import eu.etaxonomy.cdm.remote.l10n.LocaleContext;
{
@Autowired
private IFeatureTreeService featureTreeService;
-
-
+
+
public DescriptionController(){
super();
}
"root.children.feature.representations",
"root.children.children.feature.representations",
});
+
+
+ protected static final List<String> TAXONDESCRIPTION_INIT_STRATEGY = Arrays.asList(new String []{
+ "$",
+ "elements.$",
+ "elements.sources.citation.authorTeam",
+ "elements.sources.nameUsedInSource.originalNameString",
+ "elements.multilanguageText",
+ "elements.media.representations.parts",
+ "elements.media.title",
+ });
@InitBinder
@Override
@RequestMapping(value = "/descriptionElement/{descriptionelement_uuid}/annotations", method = RequestMethod.GET)
- public Pager<Annotation> getAnnotations(
+ public Pager<Annotation> getDescriptionElementAnnotations(
@PathVariable("descriptionelement_uuid") UUID uuid,
HttpServletRequest request,
HttpServletResponse response) throws IOException {
- logger.info("getAnnotations() - " + request.getServletPath());
+ logger.info("getDescriptionElementAnnotations() - " + request.getServletPath());
DescriptionElementBase annotatableEntity = service.getDescriptionElementByUuid(uuid);
if(annotatableEntity == null){
HttpStatusMessage.UUID_INVALID.send(response);
Pager<Annotation> annotations = service.getDescriptionElementAnnotations(annotatableEntity, null, null, 0, null, DEFAULT_INIT_STRATEGY);
return annotations;
}
+
+
+
+ @RequestMapping(value = "/descriptionElement/find", method = RequestMethod.GET)
+ public Pager<DescriptionElementBase> doFindDescriptionElements(
+ @RequestParam(value = "query", required = true) String queryString,
+ @RequestParam(value = "type", required = false) Class type,
+ @RequestParam(value = "pageSize", required = false) Integer pageSize,
+ @RequestParam(value = "pageNumber", required = false) Integer pageNumber,
+ @RequestParam(value = "matchMode", required = false) MatchMode matchMode,
+ HttpServletRequest request,
+ HttpServletResponse response
+ )
+ throws IOException {
+
+ logger.info("doFindDescriptionElements : " + request.getRequestURI() + "?" + request.getQueryString() );
+
+ PagerParameters pagerParams = new PagerParameters(pageSize, pageNumber);
+ pagerParams.normalizeAndValidate(response);
+
+ Pager<DescriptionElementBase> pager = service.searchElements(type, queryString, pageSize, pageNumber, null, DEFAULT_INIT_STRATEGY);
+
+ return pager;
+ }
/*
@RequestMapping(value = "{uuid_list}/namedAreaTree", method = RequestMethod.GET)
(TaxonDescription)description,
languages,
", ");
-
TextData textData = TextData.NewInstance(Feature.DESCRIPTION());
textData.putText(Language.DEFAULT(), naturalLanguageDescription);
-
mv.addObject(textData);
-
return mv;
}
-
-
+
@RequestMapping(value = "/description/{uuid}/hasStructuredData", method = RequestMethod.GET)
public ModelAndView doHasStructuredData(
@PathVariable("uuid") UUID uuid,