1 25 29 package org.jresearch.gossip.actions; 30 31 import java.sql.SQLException ; 32 import java.util.Date ; 33 import java.util.HashMap ; 34 35 import javax.servlet.http.HttpServletRequest ; 36 import javax.servlet.http.HttpServletResponse ; 37 import javax.servlet.http.HttpSession ; 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 62 public abstract class BaseAction extends Action { 63 64 74 public void log(HttpServletRequest request, String mess, String append) { 75 HttpSession session = request.getSession(); 76 User user = (User) session.getAttribute(IConst.SESSION.USER_KEY); 77 MessageResources messages = getResources(request); 78 79 StringBuffer sb = new StringBuffer (); 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 99 public void setStatusMessage(HttpServletRequest request, String key, 100 String arg0, String arg1) { 101 102 MessageResources messages = getResources(request); 103 String message = messages.getMessage(super.getLocale(request), key, 104 arg0, arg1); 105 request.getSession().setAttribute(IConst.SESSION.STATUS_MESSAGE, 106 message); 107 } 108 109 119 public void setStatusMessage(HttpServletRequest request, String key, 120 String arg0) { 121 setStatusMessage(request, key, arg0, ""); 122 } 123 124 132 public void setStatusMessage(HttpServletRequest request, String key) { 133 setStatusMessage(request, key, ""); 134 } 135 136 144 public void log(HttpServletRequest request, String mess) { 145 log(request, mess, ""); 146 } 147 148 165 public ActionForward execute(ActionMapping mapping, ActionForm form, 166 HttpServletRequest request, HttpServletResponse response) 167 throws Exception { 168 if (!haveAccess(request, mapping)) { 169 return (mapping.findForward(IConst.TOKEN.DENIED)); 170 } 171 HttpSession 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 ()); 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 ) session 193 .getAttribute(IConst.SESSION.LAST_UPDATE_DATE)) 194 .before((Date ) 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 ()); 203 } 204 } catch (SQLException sqle) { 205 getServlet().log("Connection.process", sqle); 206 throw new SystemException(sqle); 207 } 208 209 return (forward); 210 } 211 212 218 private boolean haveAccess(HttpServletRequest request, ActionMapping mapping) 219 throws SystemException { 220 HttpSession 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 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 252 protected void afterProcess(ActionMapping mapping, ActionForm form, 253 HttpServletRequest request, HttpServletResponse response) { 254 } 255 256 271 protected abstract ActionForward process(ActionMapping mapping, 272 ActionForm form, HttpServletRequest request, 273 HttpServletResponse response) throws JGossipException; 274 275 }
| Popular Tags
|