View Javadoc

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 }