KickJava   Java API By Example, From Geeks To Geeks.

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


1 package org.nemesis.forum.webapp.admin.action;
2
3 import java.util.ArrayList JavaDoc;
4 import java.util.Iterator JavaDoc;
5 import java.util.List JavaDoc;
6 import java.util.Vector JavaDoc;
7
8 import javax.servlet.http.HttpServletRequest JavaDoc;
9 import javax.servlet.http.HttpServletResponse JavaDoc;
10
11 import org.apache.commons.logging.Log;
12 import org.apache.commons.logging.LogFactory;
13 import org.apache.struts.action.ActionError;
14 import org.apache.struts.action.ActionErrors;
15 import org.apache.struts.action.ActionForm;
16 import org.apache.struts.action.ActionForward;
17 import org.apache.struts.action.ActionMapping;
18 import org.apache.struts.action.ActionMessage;
19 import org.nemesis.forum.Forum;
20 import org.nemesis.forum.ForumFactory;
21 import org.nemesis.forum.ForumThread;
22 import org.nemesis.forum.Message;
23 import org.nemesis.forum.User;
24 import org.nemesis.forum.exception.UnauthorizedException;
25 import org.nemesis.forum.webapp.admin.Config;
26 import org.nemesis.forum.webapp.admin.bean.ForumBean;
27 import org.nemesis.forum.webapp.admin.bean.MessageBean;
28 import org.nemesis.forum.webapp.admin.bean.ThreadBean;
29 import org.nemesis.forum.webapp.admin.bean.UserBean;
30
31 public class ListForumContentAction extends BaseAction {
32
33     static protected Log log = LogFactory.getLog(ListForumContentAction.class);
34
35     public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest JavaDoc request, HttpServletResponse JavaDoc response) throws Exception JavaDoc {
36
37         //check logon
38
checkUser(request);
39
40         ActionErrors errors = new ActionErrors();
41
42         try {
43             
44             int maxIndexPages=Config.forumThreadsListPagerMaxIndexPages;
45             int maxPageItems=Config.forumThreadsListPagerMaxPageItems;
46             request.setAttribute("maxIndexPages",new Integer JavaDoc(maxIndexPages));
47             request.setAttribute("maxPageItems",new Integer JavaDoc(maxPageItems));
48
49             int start=0;
50             try {
51                 start = Integer.parseInt(request.getParameter("pager.offset"));
52             } catch (Exception JavaDoc e) {
53                 /*ignore*/
54             }
55             
56             
57             List JavaDoc v = new Vector JavaDoc();
58
59             ForumFactory forumFactory = ForumFactory.getInstance(getAuthToken(request));
60             Forum forum = forumFactory.getForum(Integer.parseInt(request.getParameter("id")));
61             //check permission
62
checkPermission(request, OperationConstants.LIST_FORUM_CONTENT, forum);
63
64             ForumBean fb = new ForumBean();
65             fb.setId(forum.getID());
66             fb.setName(forum.getName());
67             fb.setNotApprovedMessages(forum.getMessageCount(false));
68             fb.setNotApprovedThreads(forum.getThreadCount(false));
69             fb.setThreads(forum.getThreadCount());
70             fb.setMessages(forum.getMessageCount());
71
72             request.setAttribute("fb", fb);
73             
74             request.setAttribute("nbItems",new Integer JavaDoc(forum.getThreadCount()));
75             
76             
77             List JavaDoc tbs = new ArrayList JavaDoc();
78             Iterator JavaDoc threadIterator = forum.threads(start,maxPageItems); //start,range
79

80             ThreadBean tb = null;
81
82             while (threadIterator.hasNext()) {
83                 ForumThread currentThread = (ForumThread) threadIterator.next();
84                 tb = new ThreadBean();
85                 tb.setId(currentThread.getID());
86                 tb.setForumID(forum.getID());
87                 tb.setCreationDate(currentThread.getCreationDate());
88                 tb.setModifiedDate(currentThread.getModifiedDate());
89                 tb.setApproved(currentThread.isApproved());
90                 tb.setNotApprovedMessages(currentThread.getMessageCount(false));
91                 tb.setReplies(currentThread.getMessageCount() - 1);
92                 tb.setTopic(currentThread.getName());
93
94                 Message rootMessage = currentThread.getRootMessage();
95                 MessageBean mb = new MessageBean();
96                 mb.setAnonymous(rootMessage.isAnonymous());
97                 
98                 UserBean ub = new UserBean();
99                 if(!rootMessage.isAnonymous()){
100                 
101                     User rootMessageUser = rootMessage.getUser();
102                     ub.setId(rootMessageUser.getID());
103                     ub.setUserName(rootMessageUser.getUsername());
104                     ub.setName(rootMessageUser.getName());
105                     ub.setEmail(rootMessageUser.getEmail());
106                     
107                 }else{
108                     //:NOTE: we suppose in front application : name & email message property for anonymous user
109
ub.setUserName(rootMessage.getProperty("name"));
110                     ub.setEmail(rootMessage.getProperty("email"));
111                 }
112                 
113                 mb.setAuthor(ub);
114                 tb.setRootMessage(mb);
115                 tbs.add(tb);
116
117             }
118             request.setAttribute("tbs", tbs);
119             request.setAttribute("formatDatePattern", getResources(request).getMessage(getLocale(request),"dateformat"));
120
121         } catch (UnauthorizedException ue) {
122
123             errors.add("general", new ActionError("listForumContent.unauthorized"));
124
125         } catch (Exception JavaDoc e) {
126             String JavaDoc eid = this.getClass().getName() + "_" + System.currentTimeMillis();
127             log.error("eid:" + eid + "\nsessionID" + request.getSession().getId(), e);
128             errors.add("general", new ActionMessage("error.general", "error id:" + eid));
129         }
130
131         if (!errors.isEmpty()) {
132             saveErrors(request, errors);
133             return mapping.findForward("cancel");
134         }
135
136         return mapping.findForward("view");
137     }
138
139 }
Popular Tags