KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > cowsultants > itracker > web > actions > WatchIssueAction


1 /*
2  * This software was designed and created by Jason Carroll.
3  * Copyright (c) 2002, 2003, 2004 Jason Carroll.
4  * The author can be reached at jcarroll@cowsultants.com
5  * ITracker website: http://www.cowsultants.com
6  * ITracker forums: http://www.cowsultants.com/phpBB/index.php
7  *
8  * This program is free software; you can redistribute it and/or modify
9  * it only under the terms of the GNU General Public License as published by
10  * the Free Software Foundation; either version 2 of the License, or
11  * (at your option) any later version.
12  *
13  * This program is distributed in the hope that it will be useful,
14  * but WITHOUT ANY WARRANTY; without even the implied warranty of
15  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16  * GNU General Public License for more details.
17  */

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 JavaDoc 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 JavaDoc issueId = new Integer JavaDoc((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 JavaDoc 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 JavaDoc 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 JavaDoc 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