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 MoveIssueFormAction extends ITrackerAction { 44 45 public MoveIssueFormAction() { 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 ihRef = ic.lookup("java:comp/env/" + IssueHandler.JNDI_NAME); 59 IssueHandlerHome ihHome = (IssueHandlerHome) PortableRemoteObject.narrow(ihRef, IssueHandlerHome.class); 60 IssueHandler ih = ihHome.create(); 61 62 Object phRef = ic.lookup("java:comp/env/" + ProjectHandler.JNDI_NAME); 63 ProjectHandlerHome phHome = (ProjectHandlerHome) PortableRemoteObject.narrow(phRef, ProjectHandlerHome.class); 64 ProjectHandler ph = phHome.create(); 65 66 Integer issueId = new Integer ((request.getParameter("id") == null ? "-1" : (request.getParameter("id")))); 67 IssueModel issue = ih.getIssue(issueId); 68 if(issue == null) { 69 errors.add(ActionErrors.GLOBAL_ERROR, new ActionError("itracker.web.error.invalidissue")); 70 } 71 72 if(errors.isEmpty()) { 73 HttpSession session = request.getSession(true); 74 HashMap userPermissions = (HashMap) session.getAttribute(Constants.PERMISSIONS_KEY); 75 76 if(! UserUtilities.hasPermission(userPermissions, issue.getProjectId(), UserUtilities.PERMISSION_EDIT)) { 77 Logger.logDebug("Unauthorized user requested access to move issue for issue " + issueId); 78 return mapping.findForward("unauthorized"); 79 } 80 81 Vector availableProjects = new Vector(); 82 ProjectModel[] projects = ph.getAllAvailableProjects(); 83 for(int i = 0; i < projects.length; i++) { 84 if(projects[i].getId() != null && issue.getProjectId() != null && projects[i].getId().intValue() != issue.getProjectId().intValue()) { 85 if(UserUtilities.hasPermission(userPermissions, issue.getProjectId(), new int[] {UserUtilities.PERMISSION_EDIT, UserUtilities.PERMISSION_CREATE})) { 86 availableProjects.addElement(projects[i]); 87 } 88 } 89 } 90 if(availableProjects.size() == 0) { 91 errors.add(ActionErrors.GLOBAL_ERROR, new ActionError("itracker.web.error.noprojects")); 92 } 93 94 if(errors.isEmpty()) { 95 DynaValidatorForm moveIssueForm = (DynaValidatorForm) form; 96 if(moveIssueForm == null) { 97 moveIssueForm = new DynaValidatorForm(); 98 } 99 moveIssueForm.set("issueId", issueId); 100 moveIssueForm.set("caller", request.getParameter("caller")); 101 102 ProjectModel[] availableProjectsArray = new ProjectModel[availableProjects.size()]; 103 availableProjects.copyInto(availableProjectsArray); 104 request.setAttribute("moveIssueForm", moveIssueForm); 105 session.setAttribute(Constants.PROJECTS_KEY, availableProjectsArray); 106 session.setAttribute(Constants.ISSUE_KEY, issue); 107 saveToken(request); 108 Logger.logDebug("No errors while moving issue. Forwarding to move issue form."); 109 return mapping.getInputForward(); 110 } 111 } 112 } catch(Exception e) { 113 Logger.logError("Exception while creating move issue form.", e); 114 errors.add(ActionErrors.GLOBAL_ERROR, new ActionError("itracker.web.error.system")); 115 } 116 117 if(! errors.isEmpty()) { 118 saveErrors(request, errors); 119 } 120 return mapping.findForward("error"); 121 } 122 123 } 124 | Popular Tags |