KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > nemesis > forum > webapp > admin > action > ListThreadContentAction


1 package org.nemesis.forum.webapp.admin.action;
2
3 import java.util.List JavaDoc;
4 import java.util.Vector JavaDoc;
5
6 import javax.servlet.http.HttpServletRequest JavaDoc;
7 import javax.servlet.http.HttpServletResponse JavaDoc;
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 JavaDoc request, HttpServletResponse JavaDoc response) throws Exception JavaDoc {
34
35         //check logon
36
checkUser(request);
37
38         ActionErrors errors = new ActionErrors();
39
40         try {
41
42             List JavaDoc v = new Vector JavaDoc();
43
44             ForumFactory forumFactory = ForumFactory.getInstance(getAuthToken(request));
45             Forum forum = forumFactory.getForum(Integer.parseInt(request.getParameter("id")));
46             //check permission
47
checkPermission(request, OperationConstants.LIST_FORUM_CONTENT, forum);
48
49             ForumBean fb = new ForumBean();
50             fb.setId(forum.getID());
51             fb.setName(forum.getName());
52             //fb.setApprovedMessages();
53
//fb.setApprovedThreads();
54
//fb.setThreads(forum.getThreadCount());
55
//fb.setMessages(forum.getMessageCount());
56
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 JavaDoc e) {
86             String JavaDoc 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     /**
100      * Recursive method to populate.
101      */

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             //:NOTE: we suppose in front application : name & email message property for anonymous user
126
ub.setUserName(message.getProperty("name"));
127             ub.setEmail(message.getProperty("email"));
128         }
129
130         mb.setAuthor(ub);
131         //add message
132
tb.addMessagesTree(mb);
133         
134         //children
135
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