KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > cowsultants > itracker > web > actions > EditProjectFormAction


1 /*
2  * This software was designed and created by Jason Carroll.
3  * Copyright (c) 2002, 2003, 2004 Jason Carroll.
4  * The author can be reached at jcarroll@cowsultants.com
5  * ITracker website: http://www.cowsultants.com
6  * ITracker forums: http://www.cowsultants.com/phpBB/index.php
7  *
8  * This program is free software; you can redistribute it and/or modify
9  * it only under the terms of the GNU General Public License as published by
10  * the Free Software Foundation; either version 2 of the License, or
11  * (at your option) any later version.
12  *
13  * This program is distributed in the hope that it will be useful,
14  * but WITHOUT ANY WARRANTY; without even the implied warranty of
15  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16  * GNU General Public License for more details.
17  */

18
19 package cowsultants.itracker.web.actions;
20
21 import java.io.*;
22 import java.rmi.*;
23 import java.util.*;
24 import javax.ejb.*;
25 import javax.rmi.*;
26 import javax.naming.*;
27 import javax.servlet.*;
28 import javax.servlet.http.*;
29
30 import org.apache.commons.beanutils.*;
31 import org.apache.struts.action.*;
32 import org.apache.struts.upload.*;
33 import org.apache.struts.util.*;
34 import org.apache.struts.validator.*;
35
36 import cowsultants.itracker.ejb.client.exceptions.*;
37 import cowsultants.itracker.ejb.client.interfaces.*;
38 import cowsultants.itracker.ejb.client.models.*;
39 import cowsultants.itracker.ejb.client.util.*;
40 import cowsultants.itracker.web.util.*;
41
42
43 public class EditProjectFormAction extends ITrackerAction {
44
45     public EditProjectFormAction() {
46     }
47
48     public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
49         ActionErrors errors = new ActionErrors();
50
51         if(! isLoggedIn(request, response)) {
52             return mapping.findForward("login");
53         }
54
55         try {
56             InitialContext ic = new InitialContext();
57
58             Object JavaDoc phRef = ic.lookup("java:comp/env/" + ProjectHandler.JNDI_NAME);
59             ProjectHandlerHome phHome = (ProjectHandlerHome) PortableRemoteObject.narrow(phRef, ProjectHandlerHome.class);
60             ProjectHandler ph = phHome.create();
61
62             HttpSession session = request.getSession(true);
63             HashMap userPermissions = (HashMap) session.getAttribute(Constants.PERMISSIONS_KEY);
64             UserModel user = (UserModel) session.getAttribute(Constants.USER_KEY);
65
66             ProjectModel project = null;
67             DynaValidatorForm projectForm = (DynaValidatorForm) form;
68             if(projectForm == null) {
69                 projectForm = new DynaValidatorForm();
70             }
71
72             String JavaDoc action = (String JavaDoc) request.getParameter("action");
73             if("create".equals(action)) {
74                 if(! user.isSuperUser()) {
75                     return mapping.findForward("unauthorized");
76                 }
77                 project = new ProjectModel();
78                 project.setId(new Integer JavaDoc(-1));
79                 projectForm.set("action", "create");
80                 projectForm.set("id", project.getId());
81             } else if ("update".equals(action)) {
82                 Integer JavaDoc projectId = (Integer JavaDoc) PropertyUtils.getSimpleProperty(form, "id");
83                 if(projectId == null) {
84                     errors.add(ActionErrors.GLOBAL_ERROR, new ActionError("itracker.web.error.invalidproject"));
85                 } else {
86                     project = ph.getProject(projectId);
87                     if(project == null) {
88                         errors.add(ActionErrors.GLOBAL_ERROR, new ActionError("itracker.web.error.invalidproject"));
89                     } else if(! UserUtilities.hasPermission(userPermissions, project.getId(), UserUtilities.PERMISSION_PRODUCT_ADMIN)) {
90                         return mapping.findForward("unauthorized");
91                     } else {
92                         projectForm.set("action", "update");
93                         projectForm.set("id", project.getId());
94                         projectForm.set("name", project.getName());
95                         projectForm.set("description", project.getDescription());
96                         projectForm.set("status", new Integer JavaDoc(project.getStatus()));
97                         projectForm.set("options", ProjectUtilities.getOptions(project.getOptions()));
98
99                         CustomFieldModel[] fields = project.getCustomFields();
100                         Integer JavaDoc[] fieldIds = new Integer JavaDoc[fields.length];
101                         for(int i = 0; i < fields.length; i++) {
102                             fieldIds[i] = fields[i].getId();
103                         }
104                         projectForm.set("fields", fieldIds);
105
106                         UserModel[] owners = project.getOwners();
107                         Integer JavaDoc[] ownerIds = new Integer JavaDoc[owners.length];
108                         for(int i = 0; i < owners.length; i++) {
109                             ownerIds[i] = owners[i].getId();
110                         }
111                         projectForm.set("owners", ownerIds);
112                     }
113                 }
114             } else {
115                 errors.add(ActionErrors.GLOBAL_ERROR, new ActionError("itracker.web.error.invalidaction"));
116             }
117
118             if(errors.isEmpty()) {
119                 request.setAttribute("projectForm", projectForm);
120                 session.setAttribute(Constants.PROJECT_KEY, project);
121                 saveToken(request);
122                 return mapping.getInputForward();
123             }
124         } catch(Exception JavaDoc e) {
125             Logger.logError("Exception while creating edit project form.", e);
126             errors.add(ActionErrors.GLOBAL_ERROR, new ActionError("itracker.web.error.system"));
127         }
128
129         if(! errors.isEmpty()) {
130             saveErrors(request, errors);
131         }
132
133         return mapping.findForward("error");
134     }
135
136 }
137   
Popular Tags