View Javadoc

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  }