X-Git-Url: https://dev.e-taxonomy.eu/gitweb/cdmlib.git/blobdiff_plain/8f54281187b452e66d4c23b5234c4129aa093b8f..6ab939077b75134f676560103ea6fac26c6fa3d8:/cdmlib-remote/src/main/java/eu/etaxonomy/cdm/remote/controller/TaxonController.java diff --git a/cdmlib-remote/src/main/java/eu/etaxonomy/cdm/remote/controller/TaxonController.java b/cdmlib-remote/src/main/java/eu/etaxonomy/cdm/remote/controller/TaxonController.java index 8994c990dc..2b7ffb3f33 100644 --- a/cdmlib-remote/src/main/java/eu/etaxonomy/cdm/remote/controller/TaxonController.java +++ b/cdmlib-remote/src/main/java/eu/etaxonomy/cdm/remote/controller/TaxonController.java @@ -1,9 +1,9 @@ // $Id$ /** * Copyright (C) 2007 EDIT -* European Distributed Institute of Taxonomy +* European Distributed Institute of Taxonomy * http://www.e-taxonomy.eu -* +* * The contents of this file are subject to the Mozilla Public License Version 1.1 * See LICENSE.TXT at the top of this package for the full license terms. */ @@ -39,127 +39,145 @@ import eu.etaxonomy.cdm.model.taxon.TaxonBase; import eu.etaxonomy.cdm.model.taxon.TaxonNode; import eu.etaxonomy.cdm.persistence.query.OrderHint; import eu.etaxonomy.cdm.persistence.query.OrderHint.SortOrder; -import eu.etaxonomy.cdm.strategy.TaggedTextGenerator; /** * TODO write controller documentation - * + * * @author a.kohlbecker * @date 20.07.2009 * */ @Controller @RequestMapping(value = {"/taxon/{uuid}"}) -public class TaxonController extends AnnotatableController +public class TaxonController extends BaseController { - public static final Logger logger = Logger.getLogger(TaxonController.class); - - @Autowired - private IOccurrenceService occurrenceService; - @Autowired - private INameService nameService; - - protected static final List TAXONNODE_INIT_STRATEGY = Arrays.asList(new String []{ - "taxonNodes" - }); - - public TaxonController(){ - super(); - setInitializationStrategy(Arrays.asList(new String[]{"$","name.nomenclaturalReference"})); - } - - - @Autowired - public void setService(ITaxonService service) { - this.service = service; - } - - - /** - * Get the set of accepted {@link Taxon} entities for a given - * {@link TaxonBase} entity identified by the {taxon-uuid}. - *

- * URI: /{datasource-name}/taxon/{taxon-uuid}/accepted - * - * @param request - * @param response - * @return a set on a list of {@link Taxon} entities which are initialized - * using the following initialization strategy: - * {@link #DEFAULT_INIT_STRATEGY} - * @throws IOException - */ - @RequestMapping(value = "accepted", method = RequestMethod.GET) - public Set doGetAccepted( - @PathVariable("uuid") UUID uuid, - HttpServletRequest request, - HttpServletResponse response) throws IOException { - logger.info("getAccepted() " + request.getServletPath()); - TaxonBase tb = service.load(uuid); - HashSet resultset = new HashSet(); - if(tb instanceof Taxon){ - //the taxon already is accepted - //FIXME take the current view into account once views are implemented!!! - resultset.add((Taxon)tb); - } else { - Synonym syn = (Synonym)tb; - resultset.addAll(syn.getAcceptedTaxa()); - //TODO init Synonyms - } - return resultset; - } - - @RequestMapping(value = "taxonNodes", method = RequestMethod.GET) - public Set doGetTaxonNodes( - @PathVariable("uuid") UUID uuid, - HttpServletRequest request, - HttpServletResponse response) throws IOException { - TaxonBase tb = service.load(uuid, TAXONNODE_INIT_STRATEGY); - if(tb instanceof Taxon){ - return ((Taxon)tb).getTaxonNodes(); - } else { - HttpStatusMessage.UUID_REFERENCES_WRONG_TYPE.send(response); - return null; - } - } - - @RequestMapping(value = "specimensOrObersvations", method = RequestMethod.GET) - public ModelAndView doListSpecimensOrObersvations( - @PathVariable("uuid") UUID uuid, - HttpServletRequest request, - HttpServletResponse response) throws IOException { - logger.info("doListSpecimensOrObersvations() - " + request.getServletPath()); - - ModelAndView mv = new ModelAndView(); - - TaxonBase tb = service.load(uuid); - - List orderHints = new ArrayList(); - orderHints.add(new OrderHint("titleCache", SortOrder.DESCENDING)); - - if(tb instanceof Taxon){ - List specimensOrObersvations = occurrenceService.listByAnyAssociation( - null, (Taxon)tb, null, 0, orderHints, null); - mv.addObject(specimensOrObersvations); - } else { - HttpStatusMessage.UUID_REFERENCES_WRONG_TYPE.send(response); - return null; - } - - return mv; - } - - @RequestMapping(value = "taggedName", method = RequestMethod.GET) - public ModelAndView doGetTaggedName( - @PathVariable("uuid") UUID uuid, - HttpServletRequest request, - HttpServletResponse response) throws IOException { - logger.info("doGetDescriptionElementsByType() - " + request.getServletPath()); - - ModelAndView mv = new ModelAndView(); - - TaxonBase tb = service.load(uuid, Arrays.asList(new String[] {"name"})); - mv.addObject(nameService.getTaggedName(tb.getName().getUuid())); - return mv; - } - + public static final Logger logger = Logger.getLogger(TaxonController.class); + + @Autowired + private IOccurrenceService occurrenceService; + @Autowired + private INameService nameService; + @Autowired + private ITaxonService taxonService; + + + protected static final List TAXONNODE_INIT_STRATEGY = Arrays.asList(new String []{ + "taxonNodes" + }); + + public TaxonController(){ + super(); + setInitializationStrategy(Arrays.asList(new String[]{"$","name.nomenclaturalReference"})); + } + + + @Autowired + public void setService(ITaxonService service) { + this.service = service; + } + + + /** + * Get the set of accepted {@link Taxon} entities for a given + * {@link TaxonBase} entity identified by the {taxon-uuid}. + *

+ * URI: /{datasource-name}/taxon/{taxon-uuid}/accepted + * + * @param request + * @param response + * @return a set on a list of {@link Taxon} entities which are initialized + * using the following initialization strategy: + * {@link #DEFAULT_INIT_STRATEGY} + * @throws IOException + */ + @RequestMapping(value = "accepted", method = RequestMethod.GET) + public Set doGetAccepted( + @PathVariable("uuid") UUID uuid, + HttpServletRequest request, + HttpServletResponse response) throws IOException { + logger.info("getAccepted() " + request.getServletPath()); + TaxonBase tb = service.load(uuid); + HashSet resultset = new HashSet(); + if(tb instanceof Taxon){ + //the taxon already is accepted + //FIXME take the current view into account once views are implemented!!! + resultset.add((Taxon)tb); + } else { + Synonym syn = (Synonym)tb; + resultset.addAll(syn.getAcceptedTaxa()); + //TODO init Synonyms + } + return resultset; + } + + @RequestMapping(value = "taxonNodes", method = RequestMethod.GET) + public Set doGetTaxonNodes( + @PathVariable("uuid") UUID uuid, + HttpServletRequest request, + HttpServletResponse response) throws IOException { + TaxonBase tb = service.load(uuid, TAXONNODE_INIT_STRATEGY); + if(tb instanceof Taxon){ + return ((Taxon)tb).getTaxonNodes(); + } else { + HttpStatusMessage.UUID_REFERENCES_WRONG_TYPE.send(response); + return null; + } + } + + + @RequestMapping(value = "specimensOrObservations", method = RequestMethod.GET) + public ModelAndView doListSpecimensOrObservations( + @PathVariable("uuid") UUID uuid, + HttpServletRequest request, + HttpServletResponse response) throws IOException { + logger.info("doListSpecimensOrObservations() - " + request.getServletPath()); + + ModelAndView mv = new ModelAndView(); + + TaxonBase tb = service.load(uuid); + + List orderHints = new ArrayList(); + orderHints.add(new OrderHint("titleCache", SortOrder.DESCENDING)); + + if(tb instanceof Taxon){ + List specimensOrObersvations = occurrenceService.listByAssociatedTaxon(null, null, (Taxon)tb, null, null, null, orderHints, null); + mv.addObject(specimensOrObersvations); + } else { + HttpStatusMessage.UUID_REFERENCES_WRONG_TYPE.send(response); + return null; + } + + return mv; + } + + @RequestMapping(value = "taggedName", method = RequestMethod.GET) + public ModelAndView doGetTaggedName( + @PathVariable("uuid") UUID uuid, + HttpServletRequest request, + HttpServletResponse response) throws IOException { + logger.info("doGetDescriptionElementsByType() - " + request.getServletPath()); + + ModelAndView mv = new ModelAndView(); + + TaxonBase tb = service.load(uuid, Arrays.asList(new String[] {"name"})); + mv.addObject(nameService.getTaggedName(tb.getName().getUuid())); + return mv; + } + + /** + * FIXME change @RequestMapping to /taxon/findBestMatchingTaxon and also move into TaxonListController + */ + @RequestMapping(value = "/bestMatchingTaxon/{taxonName}", method = RequestMethod.GET) + public TaxonBase doFindBestMatchingTaxon( + @PathVariable("taxonName") String taxonName, + HttpServletRequest request, + HttpServletResponse response)throws IOException { + + Taxon bestMatchingTaxon = taxonService.findBestMatchingTaxon(taxonName); + + return bestMatchingTaxon; + + + } + } \ No newline at end of file