import java.io.IOException;
import java.util.Arrays;
import java.util.List;
-import java.util.Set;
import java.util.UUID;
import javax.servlet.http.HttpServletRequest;
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.CategoricalData;
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.FeatureTree;
+import eu.etaxonomy.cdm.model.description.StateData;
import eu.etaxonomy.cdm.model.description.TaxonDescription;
import eu.etaxonomy.cdm.model.description.TextData;
-import eu.etaxonomy.cdm.model.location.NamedArea;
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;
"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",
+ });
+
@InitBinder
@Override
public void initBinder(WebDataBinder binder) {
return featureTree;
}
+ @RequestMapping(value = "/descriptionElement/{descriptionelement_uuid}", method = RequestMethod.GET)
+ public ModelAndView doGetDescriptionElement(
+ @PathVariable("descriptionelement_uuid") UUID uuid,
+ HttpServletRequest request,
+ HttpServletResponse response) throws IOException {
+
+ ModelAndView mv = new ModelAndView();
+ logger.info("doGetDescriptionElement() - " + request.getServletPath());
+ DescriptionElementBase element = service.getDescriptionElementByUuid(uuid);
+ if(element == null) {
+ HttpStatusMessage.UUID_NOT_FOUND.send(response);
+ }
+ mv.addObject(element);
+ return mv;
+ }
@RequestMapping(value = "/descriptionElement/{descriptionelement_uuid}/annotations", method = RequestMethod.GET)
- public Pager<Annotation> getDescriptionElementAnnotations(
+ public Pager<Annotation> doGetDescriptionElementAnnotations(
@PathVariable("descriptionelement_uuid") UUID uuid,
HttpServletRequest request,
HttpServletResponse response) throws IOException {
- logger.info("getDescriptionElementAnnotations() - " + request.getServletPath());
+ logger.info("doGetDescriptionElementAnnotations() - " + request.getServletPath());
DescriptionElementBase annotatableEntity = service.getDescriptionElementByUuid(uuid);
if(annotatableEntity == null){
HttpStatusMessage.UUID_INVALID.send(response);
return annotations;
}
+ @RequestMapping(value = "/descriptionElement/{descriptionelement_uuid}/states", method = RequestMethod.GET)
+ public ModelAndView doGetDescriptionElementStates(
+ @PathVariable("descriptionelement_uuid") UUID uuid,
+ HttpServletRequest request,
+ HttpServletResponse response) throws IOException {
+ logger.info("doGetDescriptionElementStates() - " + request.getServletPath());
+
+ ModelAndView mv = new ModelAndView();
+
+ DescriptionElementBase descriptionElement = service.loadDescriptionElement(uuid,
+ Arrays.asList( new String[]{
+ "states.state.representations",
+ "modifiers",
+ "modifyingText"
+ } ));
+ if(descriptionElement == null){
+ HttpStatusMessage.UUID_INVALID.send(response);
+ // method will exit here
+ return null;
+ }
+
+ if(descriptionElement instanceof CategoricalData){
+
+ }
+ List<StateData> states = ((CategoricalData)descriptionElement).getStates();
+ mv.addObject(states);
+ return mv;
+ }
+
+
+
@RequestMapping(value = "/descriptionElement/find", method = RequestMethod.GET)
public Pager<DescriptionElementBase> doFindDescriptionElements(
@RequestParam(value = "query", required = true) String queryString,
(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,