1 package com.panogenesis.webapp.action;
2
3 import java.util.Date;
4 import java.util.HashSet;
5 import java.util.Iterator;
6 import java.util.Locale;
7 import java.util.Set;
8
9 import javax.servlet.http.HttpServletRequest;
10 import javax.servlet.http.HttpServletResponse;
11 import org.apache.commons.lang.StringUtils;
12
13 import com.panogenesis.Constants;
14 import com.panogenesis.model.Project;
15 import com.panogenesis.model.ProjectVersion;
16 import com.panogenesis.model.User;
17 import com.panogenesis.service.ProjectManager;
18 import com.panogenesis.service.UserManager;
19
20 import org.springframework.validation.BindException;
21 import org.springframework.web.servlet.ModelAndView;
22 import org.springframework.web.servlet.view.RedirectView;
23
24 public class ProjectFormController extends BaseFormController {
25
26 private ProjectManager projectManager = null;
27
28 public void setProjectManager(ProjectManager projectManager) {
29 this.projectManager = projectManager;
30 }
31
32 private UserManager userManager = null;
33
34 public void setUserManager(UserManager userManager) {
35 this.userManager = userManager;
36 }
37
38 protected Object formBackingObject(HttpServletRequest request)
39 throws Exception {
40 String id = request.getParameter("id");
41 if (!StringUtils.isEmpty(id)) {
42 request.getSession().setAttribute("current_project_id", id);
43 }
44 Project project = null;
45 log.debug("Setting attribute in Project formBackingObject: " + id);
46 log.debug("in Project formBackingObject project id is " + id);
47
48
49 if (!StringUtils.isEmpty(id)) {
50 log
51 .debug("FormController - entering 'formBackingObject' method - id:"
52 + id);
53 project = projectManager.getProject(id);
54 } else {
55 log
56 .debug("FormController NEW COMPONENT- entering 'formBackingObject' method - id:"
57 + id);
58 project = new Project();
59 }
60
61 return project;
62 }
63
64 public ModelAndView onSubmit(HttpServletRequest request,
65 HttpServletResponse response, Object command, BindException errors)
66 throws Exception {
67 if (log.isDebugEnabled()) {
68 log.debug("entering ProjectFormController 'onSubmit' method...");
69 }
70
71 Project project = (Project) command;
72 boolean isNew = (project.getId() == null);
73 String success = getSuccessView();
74 Locale locale = request.getLocale();
75
76 if (request.getParameter("delete") != null) {
77 projectManager.removeProject(project.getId().toString());
78
79 saveMessage(request, getText("project.deleted", locale));
80 } else if (request.getParameter("AddProjectComponent") != null) {
81 log.debug("Adding Component in OnSubmit projectForm");
82 request.getSession().setAttribute("current_component_id", null);
83 success = "editComponent.html";
84 } else if (request.getParameter("AddProjectVersion") != null) {
85 log.debug("Adding Version in OnSubmit projectForm");
86 request.getSession().setAttribute("current_version_id", null);
87 success = "editProjectVersion.html";
88 } else {
89
90
91 log.debug("making new hash set");
92 Set ownerSet = new HashSet();
93
94 if (isNew) {
95 project.setCreateDate(new Date());
96 log.debug("getting user info: " + request.getSession().getAttribute(Constants.USER_KEY).toString());
97 User user = new User();
98 user = (User) request.getSession().getAttribute(Constants.USER_KEY);
99 ownerSet.add(userManager.getUser(user.getUsername()));
100 }
101 else{
102 log.debug("getting owners");
103 String[] hold_owners = request.getParameterValues("hold_owners");
104 log.debug("loading owners into set");
105 for (int i = 0; i < hold_owners.length; i++) {
106 log.debug("adding - " + hold_owners[i] + " to ownerSet");
107 ownerSet.add(userManager.getUser(hold_owners[i]));
108 }
109 }
110 log.debug("ownerSet size - " + ownerSet.size());
111 project.setLastModified(new Date());
112 project.setOwners(ownerSet);
113 projectManager.saveProject(project);
114
115 String key = (isNew) ? "project.added" : "project.updated";
116 saveMessage(request, getText(key, locale));
117
118 if (!isNew) {
119 success = "editProject.html?id=" + project.getId();
120 }
121 }
122
123 log.debug("OnSubmit projectForm success = " + success);
124 return new ModelAndView(new RedirectView(success));
125 }
126 }