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 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 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 action = (String ) 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 (-1)); 79 projectForm.set("action", "create"); 80 projectForm.set("id", project.getId()); 81 } else if ("update".equals(action)) { 82 Integer projectId = (Integer ) 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 (project.getStatus())); 97 projectForm.set("options", ProjectUtilities.getOptions(project.getOptions())); 98 99 CustomFieldModel[] fields = project.getCustomFields(); 100 Integer [] fieldIds = new Integer [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 [] ownerIds = new Integer [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 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 |