]> git.argeo.org Git - gpl/argeo-slc.git/blob - runtime/org.argeo.slc.server/src/main/java/org/argeo/slc/web/mvc/AbstractServiceController.java
NEW - bug 105: Pass parameters to XsltReportGenerator
[gpl/argeo-slc.git] / runtime / org.argeo.slc.server / src / main / java / org / argeo / slc / web / mvc / AbstractServiceController.java
1 package org.argeo.slc.web.mvc;
2
3 import java.io.PrintWriter;
4 import java.io.StringWriter;
5
6 import javax.servlet.http.HttpServletRequest;
7 import javax.servlet.http.HttpServletResponse;
8
9 import org.argeo.slc.msg.ExecutionAnswer;
10 import org.springframework.web.servlet.ModelAndView;
11 import org.springframework.web.servlet.mvc.AbstractController;
12
13 public abstract class AbstractServiceController extends AbstractController {
14 public final static String KEY_ANSWER = "__answer";
15
16 private String viewName = null;
17
18 @Override
19 protected final ModelAndView handleRequestInternal(
20 HttpServletRequest request, HttpServletResponse response)
21 throws Exception {
22 ModelAndView mv = new ModelAndView();
23 mv.setViewName(getViewName());
24 try {
25 handleServiceRequest(request, response, mv);
26 } catch (Exception e) {
27 StringWriter writer = new StringWriter();
28 e.printStackTrace(new PrintWriter(writer));
29 ExecutionAnswer answer = ExecutionAnswer.error(writer.toString());
30 ModelAndView errorMv = new ModelAndView();
31 errorMv.addObject(KEY_ANSWER, answer);
32 errorMv.setViewName(KEY_ANSWER);
33 return errorMv;
34 }
35
36 if (mv.getModel().size() == 0) {
37 mv.addObject(KEY_ANSWER, ExecutionAnswer
38 .ok("Execution completed properly"));
39 }
40
41 if (mv.getViewName() == null && mv.getModel().size() == 1)
42 mv.setViewName(mv.getModel().keySet().iterator().next().toString());
43
44 return mv;
45 }
46
47 protected abstract void handleServiceRequest(HttpServletRequest request,
48 HttpServletResponse response, ModelAndView modelAndView)
49 throws Exception;
50
51 public void setViewName(String viewName) {
52 this.viewName = viewName;
53 }
54
55 public String getViewName() {
56 return viewName;
57 }
58
59 }