KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > jresearch > gossip > actions > BaseAction


1 /*
2  * $$Id: BaseAction.java,v 1.3 2005/06/07 12:32:34 bel70 Exp $$
3  *
4  * ***** BEGIN LICENSE BLOCK *****
5  * The contents of this file are subject to the Mozilla Public License
6  * Version 1.1 (the "License"); you may not use this file except in
7  * compliance with the License. You may obtain a copy of the License
8  * at http://www.mozilla.org/MPL/
9  *
10  * Software distributed under the License is distributed on an "AS IS"
11  * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
12  * the License for the specific language governing rights and
13  * limitations under the License.
14  *
15  * The Original Code is JGossip forum code.
16  *
17  * The Initial Developer of the Original Code is the JResearch, Org.
18  * Portions created by the Initial Developer are Copyright (C) 2004
19  * the Initial Developer. All Rights Reserved.
20  *
21  * Contributor(s):
22  * Dmitry Belov <bel@jresearch.org>
23  *
24  * ***** END LICENSE BLOCK ***** */

25 /*
26  * Created on 09.05.2003
27  *
28  */

29 package org.jresearch.gossip.actions;
30
31 import java.sql.SQLException JavaDoc;
32 import java.util.Date JavaDoc;
33 import java.util.HashMap JavaDoc;
34
35 import javax.servlet.http.HttpServletRequest JavaDoc;
36 import javax.servlet.http.HttpServletResponse JavaDoc;
37 import javax.servlet.http.HttpSession JavaDoc;
38
39 import org.apache.struts.action.Action;
40 import org.apache.struts.action.ActionForm;
41 import org.apache.struts.action.ActionForward;
42 import org.apache.struts.action.ActionMapping;
43 import org.apache.struts.util.MessageResources;
44 import org.jresearch.gossip.IConst;
45 import org.jresearch.gossip.am.StrutsConfigurationHelperAction;
46 import org.jresearch.gossip.am.StrutsPermissionMapping;
47 import org.jresearch.gossip.am.model.IPermissionGuard;
48 import org.jresearch.gossip.am.values.PermissionPoint;
49 import org.jresearch.gossip.beans.user.EntryList;
50 import org.jresearch.gossip.beans.user.User;
51 import org.jresearch.gossip.dao.ForumDAO;
52 import org.jresearch.gossip.exception.JGossipException;
53 import org.jresearch.gossip.exception.SystemException;
54 import org.jresearch.gossip.log.LogLevel;
55 import org.jresearch.gossip.log.avalon.JGossipLog;
56
57 /**
58  * DOCUMENT ME!
59  *
60  * @author Bel
61  */

62 public abstract class BaseAction extends Action {
63
64     /**
65      * DOCUMENT ME!
66      *
67      * @param request
68      * DOCUMENT ME!
69      * @param mess
70      * DOCUMENT ME!
71      * @param append
72      * DOCUMENT ME!
73      */

74     public void log(HttpServletRequest JavaDoc request, String JavaDoc mess, String JavaDoc append) {
75         HttpSession JavaDoc session = request.getSession();
76         User user = (User) session.getAttribute(IConst.SESSION.USER_KEY);
77         MessageResources messages = getResources(request);
78
79         StringBuffer JavaDoc sb = new StringBuffer JavaDoc();
80         sb.append(messages.getMessage(mess));
81         sb.append(" ");
82         sb.append(append);
83
84         JGossipLog.audit(LogLevel.INFO, user, sb.toString(), session);
85     }
86
87     /**
88      * DOCUMENT ME!
89      *
90      * @param session
91      * DOCUMENT ME!
92      * @param key
93      * DOCUMENT ME!
94      * @param arg0
95      * DOCUMENT ME!
96      * @param arg1
97      * DOCUMENT ME!
98      */

99     public void setStatusMessage(HttpServletRequest JavaDoc request, String JavaDoc key,
100             String JavaDoc arg0, String JavaDoc arg1) {
101
102         MessageResources messages = getResources(request);
103         String JavaDoc message = messages.getMessage(super.getLocale(request), key,
104                 arg0, arg1);
105         request.getSession().setAttribute(IConst.SESSION.STATUS_MESSAGE,
106                 message);
107     }
108
109     /**
110      * DOCUMENT ME!
111      *
112      * @param session
113      * DOCUMENT ME!
114      * @param key
115      * DOCUMENT ME!
116      * @param arg0
117      * DOCUMENT ME!
118      */

119     public void setStatusMessage(HttpServletRequest JavaDoc request, String JavaDoc key,
120             String JavaDoc arg0) {
121         setStatusMessage(request, key, arg0, "");
122     }
123
124     /**
125      * DOCUMENT ME!
126      *
127      * @param session
128      * DOCUMENT ME!
129      * @param key
130      * DOCUMENT ME!
131      */

132     public void setStatusMessage(HttpServletRequest JavaDoc request, String JavaDoc key) {
133         setStatusMessage(request, key, "");
134     }
135
136     /**
137      * DOCUMENT ME!
138      *
139      * @param request
140      * DOCUMENT ME!
141      * @param mess
142      * DOCUMENT ME!
143      */

144     public void log(HttpServletRequest JavaDoc request, String JavaDoc mess) {
145         log(request, mess, "");
146     }
147
148     /**
149      * DOCUMENT ME!
150      *
151      * @param mapping
152      * DOCUMENT ME!
153      * @param form
154      * DOCUMENT ME!
155      * @param request
156      * DOCUMENT ME!
157      * @param response
158      * DOCUMENT ME!
159      *
160      * @return DOCUMENT ME!
161      *
162      * @throws Exception
163      * DOCUMENT ME!
164      */

165     public ActionForward execute(ActionMapping mapping, ActionForm form,
166             HttpServletRequest JavaDoc request, HttpServletResponse JavaDoc response)
167             throws Exception JavaDoc {
168         if (!haveAccess(request, mapping)) {
169             return (mapping.findForward(IConst.TOKEN.DENIED));
170         }
171         HttpSession JavaDoc session = request.getSession();
172         MessageResources messages = getResources(request);
173
174         ActionForward forward = this.process(mapping, form, request, response);
175         afterProcess(mapping, form, request, response);
176         request.setAttribute(IConst.REQUEST.REQUEST_URI, request
177                 .getRequestURI());
178
179         ForumDAO forumDAO = ForumDAO.getInstance();
180
181         if (session.getAttribute(IConst.SESSION.LAST_UPDATE_DATE) == null) {
182             session.setAttribute(IConst.SESSION.LAST_UPDATE_DATE, new Date JavaDoc());
183         }
184
185         try {
186
187             EntryList elist = new EntryList();
188             forumDAO.fillEntryList(elist);
189             request.setAttribute(IConst.REQUEST.ENTRY_LIST, elist);
190
191             if ((session.getAttribute(IConst.SESSION.GROUPS_KEY) == null)
192                     || (((Date JavaDoc) session
193                             .getAttribute(IConst.SESSION.LAST_UPDATE_DATE))
194                             .before((Date JavaDoc) getServlet().getServletContext()
195                                     .getAttribute(
196                                             IConst.CONTEXT.LAST_UPDATE_DATE)))) {
197                 User user = (User) session
198                         .getAttribute(IConst.SESSION.USER_KEY);
199                 session.setAttribute(IConst.SESSION.GROUPS_KEY, forumDAO
200                         .getGroups(user.getStatus(), false));
201                 session.setAttribute(IConst.SESSION.LAST_UPDATE_DATE,
202                         new Date JavaDoc());
203             }
204         } catch (SQLException JavaDoc sqle) {
205             getServlet().log("Connection.process", sqle);
206             throw new SystemException(sqle);
207         }
208
209         return (forward);
210     }
211
212     /**
213      * @param request
214      * @param mapping
215      * @return
216      * @throws SystemException
217      */

218     private boolean haveAccess(HttpServletRequest JavaDoc request, ActionMapping mapping)
219             throws SystemException {
220         HttpSession JavaDoc session = request.getSession();
221         if (session.getAttribute(IConst.SESSION.PERMISSION_GUARD_KEY) == null) {
222             throw new SystemException("PERMISSION_GUARD not found in session");
223         }
224         IPermissionGuard guard = (IPermissionGuard) session
225                 .getAttribute(IConst.SESSION.PERMISSION_GUARD_KEY);
226         HashMap JavaDoc permissionMapping = StrutsConfigurationHelperAction
227                 .retrieveStrutsActionMapping(request.getSession()
228                         .getServletContext());
229         StrutsPermissionMapping spm = (StrutsPermissionMapping) permissionMapping
230                 .get(mapping.getPath());
231         if (spm != null) {
232             PermissionPoint point = new PermissionPoint(spm.getAmObjectId()
233                     .intValue(), spm.getAmOperationId().intValue());
234             return guard.checkPermission(point);
235         }
236         return true;
237
238     }
239
240     /**
241      * DOCUMENT ME!
242      *
243      * @param mapping
244      * DOCUMENT ME!
245      * @param form
246      * DOCUMENT ME!
247      * @param request
248      * DOCUMENT ME!
249      * @param response
250      * DOCUMENT ME!
251      */

252     protected void afterProcess(ActionMapping mapping, ActionForm form,
253             HttpServletRequest JavaDoc request, HttpServletResponse JavaDoc response) {
254     }
255
256     /**
257      * DOCUMENT ME!
258      *
259      * @param mapping
260      * DOCUMENT ME!
261      * @param form
262      * DOCUMENT ME!
263      * @param request
264      * DOCUMENT ME!
265      * @param response
266      * DOCUMENT ME!
267      *
268      * @return DOCUMENT ME!
269      * @throws SystemException
270      */

271     protected abstract ActionForward process(ActionMapping mapping,
272             ActionForm form, HttpServletRequest JavaDoc request,
273             HttpServletResponse JavaDoc response) throws JGossipException;
274
275 }
Popular Tags