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.util.*; 33 34 import cowsultants.itracker.ejb.client.exceptions.*; 35 import cowsultants.itracker.ejb.client.interfaces.*; 36 import cowsultants.itracker.ejb.client.models.*; 37 import cowsultants.itracker.ejb.client.util.*; 38 import cowsultants.itracker.web.util.*; 39 40 41 public class WatchIssueAction extends ITrackerAction { 42 43 public WatchIssueAction() { 44 } 45 46 public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 47 ActionErrors errors = new ActionErrors(); 48 49 if(! isLoggedIn(request, response)) { 50 return mapping.findForward("login"); 51 } 52 53 try { 54 InitialContext ic = new InitialContext(); 55 56 Object ihRef = ic.lookup("java:comp/env/" + IssueHandler.JNDI_NAME); 57 IssueHandlerHome ihHome = (IssueHandlerHome) PortableRemoteObject.narrow(ihRef, IssueHandlerHome.class); 58 IssueHandler ih = ihHome.create(); 59 60 Integer issueId = new Integer ((request.getParameter("id") == null ? "-1" : (request.getParameter("id")))); 61 62 ProjectModel project = ih.getIssueProject(issueId); 63 if(project == null) { 64 return mapping.findForward("unauthorized"); 65 } 66 67 HttpSession session = request.getSession(true); 68 UserModel currUser = (UserModel) session.getAttribute(Constants.USER_KEY); 69 HashMap userPermissions = (HashMap) session.getAttribute(Constants.PERMISSIONS_KEY); 70 Integer currUserId = currUser.getId(); 71 72 if(! UserUtilities.hasPermission(userPermissions, project.getId(), UserUtilities.PERMISSION_VIEW_ALL)) { 73 return mapping.findForward("unauthorized"); 74 } 75 76 NotificationModel model = new NotificationModel(); 77 model.setUserId(currUser.getId()); 78 model.setIssueId(issueId); 79 model.setNotificationRole(NotificationUtilities.ROLE_IP); 80 81 ih.addIssueNotification(model); 82 83 String caller = request.getParameter("caller"); 84 if("editissue".equals(caller)) { 85 return new ActionForward(mapping.findForward("editissue").getPath() + "?id=" + issueId); 86 } else if("viewissue".equals(caller)) { 87 return new ActionForward(mapping.findForward("viewissue").getPath() + "?id=" + issueId); 88 } else if("index".equals(caller)) { 89 return mapping.findForward("index"); 90 } else { 91 return new ActionForward(mapping.findForward("listissues").getPath() + "?pid=" + project.getId()); 92 } 93 } catch(Exception e) { 94 errors.add(ActionErrors.GLOBAL_ERROR, new ActionError("itracker.web.error.login.system")); 95 Logger.logError("System Error.", e); 96 } 97 if(! errors.isEmpty()) { 98 saveErrors(request, errors); 99 } 100 return mapping.findForward("error"); 101 } 102 103 } 104 | Popular Tags |