KickJava   Java API By Example, From Geeks To Geeks.

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


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 EditVersionFormAction extends ITrackerAction {
44
45     public EditVersionFormAction() {
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
67             ProjectModel project = null;
68             VersionModel version = null;
69             DynaValidatorForm versionForm = (DynaValidatorForm) form;
70             if(versionForm == null) {
71                 versionForm = new DynaValidatorForm();
72             }
73
74             String JavaDoc action = (String JavaDoc) request.getParameter("action");
75             if("create".equals(action)) {
76                 Integer JavaDoc projectId = (Integer JavaDoc) PropertyUtils.getSimpleProperty(form, "pid");
77                 if(projectId == null) {
78                     errors.add(ActionErrors.GLOBAL_ERROR, new ActionError("itracker.web.error.invalidproject"));
79                 } else {
80                     project = ph.getProject(projectId);
81                     if(project == null) {
82                         errors.add(ActionErrors.GLOBAL_ERROR, new ActionError("itracker.web.error.invalidproject"));
83                     } else if(! UserUtilities.hasPermission(userPermissions, project.getId(), UserUtilities.PERMISSION_PRODUCT_ADMIN)) {
84                         return mapping.findForward("unauthorized");
85                     } else {
86                         version = new VersionModel();
87                         version.setId(new Integer JavaDoc(-1));
88                         version.setProjectId(project.getId());
89                         versionForm.set("action", "create");
90                         versionForm.set("id", version.getId());
91                         versionForm.set("pid", version.getProjectId());
92                     }
93                 }
94             } else if ("update".equals(action)) {
95                 Integer JavaDoc versionId = (Integer JavaDoc) PropertyUtils.getSimpleProperty(form, "id");
96                 version = ph.getProjectVersion(versionId);
97                 if(version == null) {
98                     errors.add(ActionErrors.GLOBAL_ERROR, new ActionError("itracker.web.error.invalidversion"));
99                 } else {
100                     project = ph.getProject(version.getProjectId());
101                     if(version == null) {
102                         errors.add(ActionErrors.GLOBAL_ERROR, new ActionError("itracker.web.error.invalidproject"));
103                     } else if(! UserUtilities.hasPermission(userPermissions, version.getProjectId(), UserUtilities.PERMISSION_PRODUCT_ADMIN)) {
104                         return mapping.findForward("unauthorized");
105                     } else {
106                         versionForm.set("action", "update");
107                         versionForm.set("id", version.getId());
108                         versionForm.set("pid", project.getId());
109                         versionForm.set("number", version.getNumber());
110                         versionForm.set("description", version.getDescription());
111                     }
112                 }
113             } else {
114                 errors.add(ActionErrors.GLOBAL_ERROR, new ActionError("itracker.web.error.invalidaction"));
115             }
116
117             if(errors.isEmpty()) {
118                 request.setAttribute("versionForm", versionForm);
119                 session.setAttribute(Constants.VERSION_KEY, version);
120                 saveToken(request);
121                 return mapping.getInputForward();
122             }
123         } catch(Exception JavaDoc e) {
124             Logger.logError("Exception while creating edit version form.", e);
125             errors.add(ActionErrors.GLOBAL_ERROR, new ActionError("itracker.web.error.system"));
126         }
127
128         if(! errors.isEmpty()) {
129             saveErrors(request, errors);
130         }
131
132         return mapping.findForward("error");
133     }
134
135 }
136   
Popular Tags