1 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 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 action = (String ) request.getParameter("action"); 75 if("create".equals(action)) { 76 Integer projectId = (Integer ) 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 (-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 versionId = (Integer ) 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 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 |