View Javadoc

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  			//change very soon
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 			//add new history
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 }