1 package org.cateproject.controller.agent;
2
3 import java.util.List;
4 import java.util.Set;
5
6 import javax.validation.ConstraintViolation;
7
8 import org.cateproject.controller.Cacheable;
9 import org.cateproject.controller.GenericController;
10 import org.cateproject.controller.common.IdentifiableListController;
11 import org.cateproject.controller.editor.ClassPropertyEditor;
12 import org.cateproject.controller.error.InvalidObjectException;
13 import org.springframework.beans.factory.annotation.Autowired;
14 import org.springframework.http.HttpStatus;
15 import org.springframework.stereotype.Controller;
16 import org.springframework.web.bind.WebDataBinder;
17 import org.springframework.web.bind.annotation.InitBinder;
18 import org.springframework.web.bind.annotation.RequestBody;
19 import org.springframework.web.bind.annotation.RequestMapping;
20 import org.springframework.web.bind.annotation.RequestMethod;
21 import org.springframework.web.bind.annotation.RequestParam;
22 import org.springframework.web.bind.annotation.ResponseStatus;
23 import org.springframework.web.servlet.ModelAndView;
24
25 import eu.etaxonomy.cdm.api.service.IAgentService;
26 import eu.etaxonomy.cdm.model.agent.AgentBase;
27 import eu.etaxonomy.cdm.model.common.CdmBase;
28 import eu.etaxonomy.cdm.persistence.query.OrderHint;
29 import eu.etaxonomy.cdm.validation.Level2;
30 import eu.etaxonomy.cdm.validation.Level3;
31
32 @Controller
33 @RequestMapping(value = {"/agent"})
34 public class AgentListController extends IdentifiableListController<AgentBase,IAgentService> {
35
36 @Autowired
37 @Override
38 public void setService(IAgentService service) {
39 this.service = service;
40 }
41
42 @InitBinder
43 @Override
44 public void initBinder(WebDataBinder binder) {
45 super.initBinder(binder);
46 binder.registerCustomEditor(Class.class, new ClassPropertyEditor(AgentBase.class));
47 }
48
49 public AgentListController() {
50 super(AgentBase.class);
51 }
52
53 @Override
54 @RequestMapping(method = RequestMethod.GET, params = {"!search", "!summary"})
55 @Cacheable(value="agent/list")
56 public ModelAndView get(@RequestParam(value = "class", required = false) Class<? extends AgentBase> clazz,
57 @RequestParam(value = "page", required = false, defaultValue = GenericController.DEFAULT_PAGE) Integer page,
58 @RequestParam(value = "limit", required = false, defaultValue = GenericController.DEFAULT_LIMIT) Integer limit,
59 @RequestParam(value = "sort", required = false, defaultValue = "titleCache_asc") List<OrderHint> orderHints) {
60
61 ModelAndView modelAndView = super.get(clazz, page, limit, orderHints);
62 modelAndView.setViewName("agent/list");
63 return modelAndView;
64 }
65
66 @Override
67 @RequestMapping(method = RequestMethod.GET, params = {"summary"})
68 @Cacheable(value="agent/summary")
69 public ModelAndView getSummary() {
70 ModelAndView modelAndView = super.getSummary();
71 modelAndView.setViewName("agent/summary");
72 return modelAndView;
73 }
74
75 @Override
76 @RequestMapping(params = {"search"}, method = RequestMethod.GET)
77 @Cacheable(value="agent/list")
78 public ModelAndView getSearch(@RequestParam(value = "class", required = false) Class<? extends AgentBase> clazz,
79 @RequestParam(value = "query", required = false) String query,
80 @RequestParam(value = "page", required = false) Integer page,
81 @RequestParam(value = "limit", required = false, defaultValue = GenericController.DEFAULT_LIMIT) Integer limit,
82 @RequestParam(value = "sort", required = false, defaultValue = "titleCache_asc") List<OrderHint> orderHints) {
83
84 ModelAndView modelAndView = super.getSearch(clazz, query, page, limit, orderHints);
85 modelAndView.setViewName("agent/list");
86 return modelAndView;
87 }
88
89 @ResponseStatus(value = HttpStatus.CREATED)
90 @RequestMapping(method = RequestMethod.POST)
91 public ModelAndView post(@RequestBody AgentBase object) {
92 ModelAndView modelAndView = doPost(object);
93 modelAndView.setViewName("agent/created");
94 return modelAndView;
95 }
96 }