1 package org.nemesis.forum.webapp.admin.action; 2 3 import java.util.List ; 4 import java.util.Vector ; 5 6 import javax.servlet.http.HttpServletRequest ; 7 import javax.servlet.http.HttpServletResponse ; 8 9 import org.apache.commons.logging.Log; 10 import org.apache.commons.logging.LogFactory; 11 import org.apache.struts.action.ActionError; 12 import org.apache.struts.action.ActionErrors; 13 import org.apache.struts.action.ActionForm; 14 import org.apache.struts.action.ActionForward; 15 import org.apache.struts.action.ActionMapping; 16 import org.apache.struts.action.ActionMessage; 17 import org.nemesis.forum.Forum; 18 import org.nemesis.forum.ForumFactory; 19 import org.nemesis.forum.ForumThread; 20 import org.nemesis.forum.Message; 21 import org.nemesis.forum.TreeWalker; 22 import org.nemesis.forum.User; 23 import org.nemesis.forum.exception.UnauthorizedException; 24 import org.nemesis.forum.webapp.admin.bean.ForumBean; 25 import org.nemesis.forum.webapp.admin.bean.MessageBean; 26 import org.nemesis.forum.webapp.admin.bean.ThreadBean; 27 import org.nemesis.forum.webapp.admin.bean.UserBean; 28 29 public class ListThreadContentAction extends BaseAction { 30 31 static protected Log log = LogFactory.getLog(ListThreadContentAction.class); 32 33 public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception { 34 35 checkUser(request); 37 38 ActionErrors errors = new ActionErrors(); 39 40 try { 41 42 List v = new Vector (); 43 44 ForumFactory forumFactory = ForumFactory.getInstance(getAuthToken(request)); 45 Forum forum = forumFactory.getForum(Integer.parseInt(request.getParameter("id"))); 46 checkPermission(request, OperationConstants.LIST_FORUM_CONTENT, forum); 48 49 ForumBean fb = new ForumBean(); 50 fb.setId(forum.getID()); 51 fb.setName(forum.getName()); 52 request.setAttribute("fb", fb); 57 58 ForumThread thread = forum.getThread(Integer.parseInt(request.getParameter("threadID"))); 59 ThreadBean tb = new ThreadBean(); 60 tb.setId(thread.getID()); 61 tb.setForumID(forum.getID()); 62 tb.setCreationDate(thread.getCreationDate()); 63 tb.setModifiedDate(thread.getModifiedDate()); 64 tb.setApproved(thread.isApproved()); 65 66 tb.setNotApprovedMessages(thread.getMessageCount(false)); 67 tb.setMessages(thread.getMessageCount()); 68 tb.setReplies(thread.getMessageCount() - 1); 69 tb.setTopic(thread.getName()); 70 71 72 TreeWalker walker = thread.treeWalker(); 73 Message rootMessage = walker.getRoot(); 74 populate(walker,tb,rootMessage,0); 75 76 77 78 79 request.setAttribute("tb", tb); 80 request.setAttribute("formatDatePattern", getResources(request).getMessage(getLocale(request),"dateformat")); 81 } catch (UnauthorizedException ue) { 82 83 errors.add("general", new ActionError("listForumContent.unauthorized")); 84 85 } catch (Exception e) { 86 String eid = this.getClass().getName() + "_" + System.currentTimeMillis(); 87 log.error("eid:" + eid + "\nsessionID" + request.getSession().getId(), e); 88 errors.add("general", new ActionMessage("error.general", "error id:" + eid)); 89 } 90 91 if (!errors.isEmpty()) { 92 saveErrors(request, errors); 93 return mapping.findForward("cancel"); 94 } 95 96 return mapping.findForward("view"); 97 } 98 99 102 private void populate(TreeWalker walker, ThreadBean tb, Message message, int depth) { 103 104 MessageBean mb=new MessageBean(); 105 mb.setDepth(depth); 106 mb.setAnonymous(message.isAnonymous()); 107 mb.setApproved(message.isApproved()); 108 mb.setContent(message.getBody()); 109 mb.setCreationDate(message.getCreationDate()); 110 mb.setMessageID(message.getID()); 111 mb.setModifiedDate(message.getModifiedDate()); 112 mb.setSubject(message.getSubject()); 113 114 115 UserBean ub = new UserBean(); 116 if(!message.isAnonymous()){ 117 118 User messageUser = message.getUser(); 119 ub.setId(messageUser.getID()); 120 ub.setUserName(messageUser.getUsername()); 121 ub.setName(messageUser.getName()); 122 ub.setEmail(messageUser.getEmail()); 123 124 }else{ 125 ub.setUserName(message.getProperty("name")); 127 ub.setEmail(message.getProperty("email")); 128 } 129 130 mb.setAuthor(ub); 131 tb.addMessagesTree(mb); 133 134 for (int i = 0; i < walker.getChildCount(message); i++) { 136 populate(walker, tb, walker.getChild(message, i), (depth + 1)); 137 } 138 139 } 140 141 } | Popular Tags |