1 package com.panogenesis.webapp.action;
2
3 import java.util.Date;
4 import java.util.HashMap;
5 import java.util.HashSet;
6 import java.util.Locale;
7 import java.util.Map;
8 import java.util.Set;
9
10 import javax.servlet.http.HttpServletRequest;
11 import javax.servlet.http.HttpServletResponse;
12
13 import org.apache.commons.lang.StringUtils;
14
15 import com.panogenesis.Constants;
16 import com.panogenesis.model.Issue;
17 import com.panogenesis.model.IssueHistory;
18 import com.panogenesis.model.Project;
19 import com.panogenesis.model.User;
20 import com.panogenesis.service.ComponentManager;
21 import com.panogenesis.service.IssueHistoryManager;
22 import com.panogenesis.service.IssueManager;
23 import com.panogenesis.service.ProjectManager;
24 import com.panogenesis.service.UserManager;
25
26 import org.springframework.validation.BindException;
27 import org.springframework.web.servlet.ModelAndView;
28 import org.springframework.web.servlet.view.RedirectView;
29
30 public class IssueFormController extends BaseFormController {
31 private IssueManager issueManager = null;
32
33 public void setIssueManager(IssueManager issueManager) {
34 this.issueManager = issueManager;
35 }
36
37 private ProjectManager projectManager = null;
38
39 public void setProjectManager(ProjectManager projectManager) {
40 this.projectManager = projectManager;
41 }
42
43 private UserManager userManager = null;
44
45 public void setUserManager(UserManager userManager) {
46 this.userManager = userManager;
47 }
48
49 private ComponentManager componentManager = null;
50
51 public void setcomponentManager(ComponentManager componentManager) {
52 this.componentManager = componentManager;
53 }
54
55 private IssueHistoryManager issueHistoryManager = null;
56
57 public void setIssueHistoryManager(IssueHistoryManager issueHistoryManager) {
58 this.issueHistoryManager = issueHistoryManager;
59 }
60
61 protected Object formBackingObject(HttpServletRequest request)
62 throws Exception {
63 String id = request.getParameter("id");
64 String project_id = request.getParameter("projectId");
65
66 log.debug("in issue formBackingObject....");
67 log.debug("issue id : " + id);
68 Issue issue = null;
69 Project project = null;
70
71 if (!StringUtils.isEmpty(id)) {
72 issue = issueManager.getIssue(id);
73 project = projectManager
74 .getProject(issue.getProjectId().toString());
75 issue.setProject(project);
76 issue.setCreatorName(userManager.getUser(issue.getCreatorId())
77 .getFullName());
78 issue.setOwnerName(userManager.getUser(issue.getOwnerId())
79 .getFullName());
80
81 log.debug("NOT EMPTY - issue id : " + id);
82 log.debug("NOT EMPTY - issue id : " + issue.getProject().getName());
83 } else {
84 issue = new Issue();
85
86 issue.setProject(projectManager.getProject(issue.getProjectId()
87 .toString()));
88 }
89
90 return issue;
91 }
92
93 public ModelAndView onSubmit(HttpServletRequest request,
94 HttpServletResponse response, Object command, BindException errors)
95 throws Exception {
96 if (log.isDebugEnabled()) {
97 log.debug("entering IssueFormcontroller 'onSubmit' method...");
98 }
99
100 Issue issue = (Issue) command;
101 boolean isNew = (issue.getId() == null);
102 String success = getSuccessView();
103 Locale locale = request.getLocale();
104
105
106 if (request.getParameter("delete") != null) {
107 issueManager.removeIssue(issue.getId().toString());
108
109 saveMessage(request, getText("issue.deleted", locale));
110 } else {
111 log.debug("making new hash set");
112 Set componentSet = new HashSet();
113
114 if (isNew) {
115 issue.setCreateDate(new Date());
116 log.debug("getting component info: ");
117 }
118
119 log.debug("getting components");
120 String[] hold_components = request
121 .getParameterValues("hold_components");
122 log.debug("loading components into set if > 0 : " + hold_components.length);
123 if (hold_components.length > 0) {
124 for (int i = 0; i < hold_components.length; i++) {
125 log.debug("adding - " + hold_components[i]
126 + " to componentSet");
127 componentSet.add(componentManager
128 .getComponent((hold_components[i])));
129 }
130 log.debug("finished loading components into set");
131 issue.setComponents(componentSet);
132 }
133 log.debug("set Last Modified date");
134 issue.setLastModified(new Date());
135 log.debug("NEW CODE : ");
136 String history = request.getParameter("new_history").trim();
137
138 log.debug("getting new history : "
139 + history + " : with length - " + history.length());
140
141
142 if (request.getParameter("new_history").length() > 0) {
143 IssueHistory issueHistory = new IssueHistory();
144 log.debug("adding new history : " + history);
145 issueHistory.setDescription(history);
146 log.debug("setting status to 1");
147 issueHistory.setStatus(new Integer(1));
148 log.debug("getting users");
149 User user = (User) request.getSession().getAttribute(
150 Constants.USER_KEY);
151 log.debug("adding user name");
152 issueHistory.setCreatorId(user.getUsername());
153 log.debug("adding create date");
154 issueHistory.setCreateDate(new Date());
155 log.debug("adding last modified");
156 issueHistory.setLastModified(new Date());
157 log.debug("adding setting issue id to " + issue.getId());
158
159 issueHistory.setIssueId(issue.getId());
160 issueHistoryManager.saveIssueHistory(issueHistory);
161 }
162 log.debug("FINISHED NEW CODE : ");
163 issueManager.saveIssue(issue);
164
165 String key = (isNew) ? "issue.added" : "issue.updated";
166 saveMessage(request, getText(key, locale));
167
168 if (!isNew) {
169 success = "editIssue.html?id=" + issue.getId();
170 }
171
172 }
173
174 return new ModelAndView(new RedirectView(success));
175 }
176 }