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.commons.beanutils.converters.*; 32 import org.apache.struts.action.*; 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 AssignIssueAction extends ITrackerAction { 43 44 public AssignIssueAction() { 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 54 try { 55 InitialContext ic = new InitialContext(); 56 57 Object ihRef = ic.lookup("java:comp/env/" + IssueHandler.JNDI_NAME); 58 IssueHandlerHome ihHome = (IssueHandlerHome) PortableRemoteObject.narrow(ihRef, IssueHandlerHome.class); 59 IssueHandler ih = ihHome.create(); 60 61 Object phRef = ic.lookup("java:comp/env/" + ProjectHandler.JNDI_NAME); 62 ProjectHandlerHome phHome = (ProjectHandlerHome) PortableRemoteObject.narrow(phRef, ProjectHandlerHome.class); 63 ProjectHandler ph = phHome.create(); 64 65 Integer defaultValue = new Integer (-1); 66 IntegerConverter converter = new IntegerConverter(defaultValue); 67 Integer issueId = (Integer ) converter.convert(Integer .class, (String ) PropertyUtils.getSimpleProperty(form, "issueId")); 68 Integer projectId = (Integer ) converter.convert(Integer .class, (String ) PropertyUtils.getSimpleProperty(form, "projectId")); 69 Integer userId = (Integer ) converter.convert(Integer .class, (String ) PropertyUtils.getSimpleProperty(form, "userId")); 70 71 HttpSession session = request.getSession(true); 72 UserModel currUser = (UserModel) session.getAttribute(Constants.USER_KEY); 73 HashMap userPermissions = (HashMap) session.getAttribute(Constants.PERMISSIONS_KEY); 74 Integer currUserId = currUser.getId(); 75 76 ProjectModel project = ph.getProject(projectId); 77 if(project == null) { 78 return mapping.findForward("unauthorized"); 79 } 80 81 if(! userId.equals(currUserId) && ! UserUtilities.hasPermission(userPermissions, projectId, UserUtilities.PERMISSION_ASSIGN_OTHERS)) { 82 return mapping.findForward("unauthorized"); 83 } else if(! UserUtilities.hasPermission(userPermissions, projectId, UserUtilities.PERMISSION_ASSIGN_SELF)) { 84 return mapping.findForward("unauthorized"); 85 } 86 87 if(project.getStatus() != ProjectUtilities.STATUS_ACTIVE) { 88 errors.add(ActionErrors.GLOBAL_ERROR, new ActionError("itracker.web.error.projectlocked")); 89 } else { 90 ih.assignIssue(issueId, userId, currUserId); 91 ih.sendNotification(issueId, NotificationUtilities.TYPE_ASSIGNED, getBaseURL(request)); 92 } 93 } catch(Exception e) { 94 errors.add(ActionErrors.GLOBAL_ERROR, new ActionError("itracker.web.error.system")); 95 } 96 97 if(! errors.isEmpty()) { 98 saveErrors(request, errors); 99 saveToken(request); 100 } 101 return mapping.findForward("index"); 102 } 103 104 } 105 | Popular Tags |