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 35 import cowsultants.itracker.ejb.client.exceptions.*; 36 import cowsultants.itracker.ejb.client.interfaces.*; 37 import cowsultants.itracker.ejb.client.models.*; 38 import cowsultants.itracker.ejb.client.util.*; 39 import cowsultants.itracker.web.util.*; 40 41 42 public class EditComponentAction extends ITrackerAction { 43 44 public EditComponentAction() { 45 } 46 47 public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 48 ActionErrors errors = new ActionErrors(); 49 50 if(! isLoggedIn(request, response)) { 51 return mapping.findForward("login"); 52 } 53 if(! isTokenValid(request)) { 54 Logger.logDebug("Invalid request token while editing component."); 55 return mapping.findForward("listprojectsadmin"); 56 } 57 resetToken(request); 58 59 ComponentModel component = null; 60 ProjectModel project = null; 61 try { 62 InitialContext ic = new InitialContext(); 63 64 Object phRef = ic.lookup("java:comp/env/" + ProjectHandler.JNDI_NAME); 65 ProjectHandlerHome phHome = (ProjectHandlerHome) PortableRemoteObject.narrow(phRef, ProjectHandlerHome.class); 66 ProjectHandler ph = phHome.create(); 67 68 HttpSession session = request.getSession(true); 69 HashMap userPermissions = (HashMap) session.getAttribute(Constants.PERMISSIONS_KEY); 70 UserModel user = (UserModel) session.getAttribute(Constants.USER_KEY); 71 72 component = new ComponentModel(); 73 component.setId((Integer ) PropertyUtils.getSimpleProperty(form, "id")); 74 component.setDescription((String ) PropertyUtils.getSimpleProperty(form, "description")); 75 component.setName((String ) PropertyUtils.getSimpleProperty(form, "name")); 76 77 Integer projectId = (Integer ) PropertyUtils.getSimpleProperty(form, "pid"); 78 if(projectId == null) { 79 errors.add(ActionErrors.GLOBAL_ERROR, new ActionError("itracker.web.error.invalidproject")); 80 } else { 81 project = ph.getProject(projectId); 82 if(project == null) { 83 errors.add(ActionErrors.GLOBAL_ERROR, new ActionError("itracker.web.error.invalidproject")); 84 } else if(! UserUtilities.hasPermission(userPermissions, project.getId(), UserUtilities.PERMISSION_PRODUCT_ADMIN)) { 85 return mapping.findForward("unauthorized"); 86 } else { 87 String action = (String ) request.getParameter("action"); 88 if("create".equals(action)) { 89 component = ph.addProjectComponent(project.getId(), component); 90 } else if ("update".equals(action)) { 91 component.setProjectId(project.getId()); 92 component = ph.updateProjectComponent(component); 93 } 94 session.removeAttribute(Constants.COMPONENT_KEY); 95 return new ActionForward(mapping.findForward("editproject").getPath() + "?id=" + project.getId() + "&action=update"); 96 } 97 } 98 } catch(Exception e) { 99 Logger.logError("Exception processing form data", e); 100 errors.add(ActionErrors.GLOBAL_ERROR, new ActionError("itracker.web.error.system")); 101 } 102 103 if(! errors.isEmpty()) { 104 saveErrors(request, errors); 105 } 106 return mapping.findForward("error"); 107 } 108 109 } 110 | Popular Tags |