Merge branch 'hotfix/3.12.4' into develop
[cdmlib.git] / cdmlib-remote / src / main / java / eu / etaxonomy / cdm / remote / controller / NameListController.java
1 // $Id$
2 /**
3 * Copyright (C) 2009 EDIT European Distributed Institute of Taxonomy
4 * http://www.e-taxonomy.eu
5 *
6 * The contents of this file are subject to the Mozilla Public License Version
7 * 1.1 See LICENSE.TXT at the top of this package for the full license terms.
8 */
9
10 package eu.etaxonomy.cdm.remote.controller;
11
12 import io.swagger.annotations.Api;
13
14 import java.io.IOException;
15
16 import javax.servlet.http.HttpServletRequest;
17 import javax.servlet.http.HttpServletResponse;
18
19 import org.springframework.beans.factory.annotation.Autowired;
20 import org.springframework.stereotype.Controller;
21 import org.springframework.web.bind.annotation.RequestMapping;
22 import org.springframework.web.bind.annotation.RequestMethod;
23 import org.springframework.web.bind.annotation.RequestParam;
24
25 import eu.etaxonomy.cdm.api.service.INameService;
26 import eu.etaxonomy.cdm.api.service.pager.Pager;
27 import eu.etaxonomy.cdm.model.name.TaxonNameBase;
28 import eu.etaxonomy.cdm.persistence.query.MatchMode;
29 import eu.etaxonomy.cdm.remote.controller.util.PagerParameters;
30
31 /**
32 * TODO write controller documentation
33 *
34 * @author a.kohlbecker
35 * @date 24.03.2009
36 */
37 @Controller
38 @Api("name")
39 @RequestMapping(value = {"/name"})
40 public class NameListController extends IdentifiableListController<TaxonNameBase, INameService> {
41
42 /* (non-Javadoc)
43 * @see eu.etaxonomy.cdm.remote.controller.BaseListController#setService(eu.etaxonomy.cdm.api.service.IService)
44 */
45 @Override
46 @Autowired
47 public void setService(INameService service) {
48 this.service = service;
49 }
50
51 @RequestMapping(method = RequestMethod.GET, value={"findTitleCache"})
52 public Pager<TaxonNameBase> doFindTitleCache(
53 @RequestParam(value = "query", required = true) String query,
54 @RequestParam(value = "pageNumber", required = false) Integer pageNumber,
55 @RequestParam(value = "pageSize", required = false) Integer pageSize,
56 @RequestParam(value = "matchMode", required = false) MatchMode matchMode,
57 HttpServletRequest request,
58 HttpServletResponse response
59 )
60 throws IOException {
61
62 logger.info("doFind : " + request.getRequestURI() + "?" + request.getQueryString() );
63
64 PagerParameters pagerParams = new PagerParameters(pageSize, pageNumber);
65 pagerParams.normalizeAndValidate(response);
66
67 return service.findTitleCache(null, query, pagerParams.getPageSize(), pagerParams.getPageIndex(), null, matchMode);
68
69 }
70
71 @RequestMapping(value = "findByName", method = RequestMethod.GET)
72 public Pager<TaxonNameBase> doFindByName(
73 @RequestParam(value = "query", required = true) String query,
74 @RequestParam(value = "pageNumber", required = false) Integer pageNumber,
75 @RequestParam(value = "pageSize", required = false) Integer pageSize,
76 @RequestParam(value = "matchMode", required = false) MatchMode matchMode, HttpServletRequest request, HttpServletResponse response)
77 throws IOException {
78
79 PagerParameters pagerParameters = new PagerParameters(pageSize, pageNumber);
80 pagerParameters.normalizeAndValidate(response);
81
82 return service.findByTitle(TaxonNameBase.class, query, matchMode, null, pageSize, pageNumber, null, getInitializationStrategy());
83 }
84
85 }