1 package com.panogenesis.webapp.action;
2
3 import java.util.Date;
4 import java.util.Locale;
5
6 import javax.servlet.http.HttpServletRequest;
7 import javax.servlet.http.HttpServletResponse;
8
9 import org.apache.commons.lang.StringUtils;
10
11 import com.panogenesis.model.Component;
12 import com.panogenesis.model.ProjectVersion;
13 import com.panogenesis.service.ProjectVersionManager;
14 import org.springframework.validation.BindException;
15 import org.springframework.web.servlet.ModelAndView;
16 import org.springframework.web.servlet.view.RedirectView;
17
18 public class ProjectVersionFormController extends BaseFormController {
19 private ProjectVersionManager projectVersionManager = null;
20
21 public void setProjectVersionManager(ProjectVersionManager projectVersionManager) {
22 this.projectVersionManager = projectVersionManager;
23 }
24 /***
25 * Default behavior for FormControllers - redirect to the successView
26 * when the cancel button has been pressed.
27 */
28 public ModelAndView processFormSubmission(HttpServletRequest request,
29 HttpServletResponse response,
30 Object command,
31 BindException errors)
32 throws Exception {
33 if (request.getParameter("cancel") != null) {
34 return new ModelAndView(new RedirectView("editProject.html?id=" + request.getSession().getAttribute("current_project_id")));
35 }
36 return super.processFormSubmission(request, response, command, errors);
37 }
38
39 protected Object formBackingObject(HttpServletRequest request)
40 throws Exception {
41
42 String id = request.getParameter("id");
43
44
45
46
47
48 log.debug("VersionFormController - entering 'formBackingObject' method - version id:" + id);
49 ProjectVersion projectVersion = null;
50
51
52 if (!StringUtils.isEmpty(id)) {
53 log.debug("VersionFormController - entering 'formBackingObject' method - hold id:" + id);
54 projectVersion = projectVersionManager.getProjectVersion(id);
55 } else {
56 log.debug("VersionFormController NEW COMPONENT- entering 'formBackingObject' method - hold id:" + id);
57 projectVersion = new ProjectVersion();
58 }
59
60 return projectVersion;
61 }
62
63 public ModelAndView onSubmit(HttpServletRequest request,
64 HttpServletResponse response, Object command,
65 BindException errors)
66 throws Exception {
67 if (log.isDebugEnabled()) {
68 log.debug("entering ProjectVersionFormController 'onSubmit' method...");
69 }
70
71
72 String project_id = (String)request.getSession().getAttribute("current_project_id");
73
74 ProjectVersion projectVersion = (ProjectVersion) command;
75 String current_version_id = (String)request.getParameter("id");
76 boolean isNew = ( projectVersion.getId()== null);
77 String success = getSuccessView();
78 Locale locale = request.getLocale();
79
80 if (request.getParameter("delete") != null) {
81 projectVersionManager.removeProjectVersion(projectVersion.getId().toString());
82
83 saveMessage(request, getText("projectVersion.deleted", locale));
84 } else {
85
86 log.debug("current project id is " + project_id);
87 log.debug("component project id is " + projectVersion.getProjectId());
88 log.debug("isNew ? : " + isNew);
89 if (isNew){
90 log.debug("setting new component information (proj id): " + project_id);
91 projectVersion.setCreateDate(new Date());
92 projectVersion.setProjectId(new Integer(project_id));
93 }
94 projectVersion.setLastModified(new Date());
95
96 projectVersionManager.saveProjectVersion(projectVersion);
97
98 String key = (isNew) ? "projectVersion.added" : "projectVersion.updated";
99 saveMessage(request, getText(key, locale));
100
101 if (!isNew) {
102 success = "editProjectVersion.html?id=" + projectVersion.getId();
103 }
104 }
105
106 return new ModelAndView(new RedirectView("editProject.html?id=" + project_id));
107 }
108 }