1 23 27 package org.jresearch.gossip.actions.message; 28 29 import java.sql.SQLException ; 30 31 import javax.servlet.http.HttpServletRequest ; 32 import javax.servlet.http.HttpServletResponse ; 33 import javax.servlet.http.HttpSession ; 34 35 import org.apache.struts.action.ActionForm; 36 import org.apache.struts.action.ActionForward; 37 import org.apache.struts.action.ActionMapping; 38 import org.jresearch.gossip.IConst; 39 import org.jresearch.gossip.actions.BaseAction; 40 import org.jresearch.gossip.beans.forum.Forum; 41 import org.jresearch.gossip.beans.forum.Message; 42 import org.jresearch.gossip.beans.forum.Topic; 43 import org.jresearch.gossip.beans.user.User; 44 import org.jresearch.gossip.configuration.Configurator; 45 import org.jresearch.gossip.dao.ForumDAO; 46 import org.jresearch.gossip.exception.ConfiguratorException; 47 import org.jresearch.gossip.exception.SystemException; 48 import org.jresearch.gossip.forms.MessageForm; 49 import org.jresearch.gossip.forms.ProcessMessageForm; 50 51 56 public abstract class GetMessageAction extends BaseAction { 57 71 public ActionForward process(ActionMapping mapping, ActionForm form, 72 HttpServletRequest request, HttpServletResponse response) 73 throws SystemException { 74 HttpSession session = request.getSession(); 75 MessageForm messageForm = new MessageForm(); 76 ProcessMessageForm pmForm = (ProcessMessageForm) form; 77 ForumDAO dao = ForumDAO.getInstance(); 78 User user = (User) session.getAttribute(IConst.SESSION.USER_KEY); 79 try { 80 81 int fid = Integer.parseInt(pmForm.getFid()); 82 boolean isUserMod = dao.checkMod(fid, user); 83 Forum currForum = dao.getForumInfo(fid); 84 getServlet().log("check access rights if forum invisible"); 86 if ((currForum.getLocked() == IConst.Forum.STATUS_INVISIBLE) 87 && (user.getStatus() < Integer.parseInt(Configurator 88 .getInstance().get(IConst.CONFIG.INVADER1)))) { 89 return (mapping.findForward(IConst.TOKEN.DENIED)); 90 } 91 Topic currThread = dao.getThreadInfo(Integer.parseInt(pmForm 92 .getTid())); 93 getServlet() 96 .log( 97 "check user access rights if current topic or completely forum is locked"); 98 if (((currThread.getLocked() == IConst.Topic.STATUS_LOCKED) || (currForum 99 .getLocked() == IConst.Forum.STATUS_COMPLETELY_LOCKED)) 100 && (!isUserMod)) { 101 return (mapping.findForward(IConst.TOKEN.DENIED)); 102 } 103 session.setAttribute(IConst.REQUEST.CURR_THREAD, currThread); 104 currThread.setSubject(dao.getThreadSubject(pmForm.getTid())); 105 Message mess = dao.getMessage(pmForm.getMid()); 106 if (mess == null) { 107 return (new ActionForward("/ShowThread.do?fid=" 108 + pmForm.getFid() + "&tid=" + pmForm.getTid() 109 + "&block=" + pmForm.getBlock(), true)); 110 } else { 111 String fname = fillMessageForm(messageForm, mess, pmForm, 112 request); 113 request.setAttribute(fname, messageForm); 114 } 115 } catch (SQLException sqle) { 116 getServlet().log("Connection.process", sqle); 117 throw new SystemException(sqle); 118 } 119 return (mapping.findForward(IConst.TOKEN.PAGE)); 120 } 121 122 133 abstract protected String fillMessageForm(MessageForm messageForm, 134 Message mess, ProcessMessageForm form, HttpServletRequest request) 135 throws ConfiguratorException; 136 } | Popular Tags |