KickJava   Java API By Example, From Geeks To Geeks.

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


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.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.apache.struts.action.ActionMessages;
18 import org.nemesis.forum.Forum;
19 import org.nemesis.forum.ForumFactory;
20 import org.nemesis.forum.ProfileManager;
21 import org.nemesis.forum.util.SecurityTools;
22 import org.nemesis.forum.webapp.admin.Config;
23 import org.nemesis.forum.webapp.admin.bean.ForumBean;
24
25 public class ListForumAction extends BaseAction {
26
27     static protected Log log = LogFactory.getLog(ListForumAction.class);
28
29     public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest JavaDoc request, HttpServletResponse JavaDoc response) throws Exception JavaDoc {
30
31         //check logon
32
checkUser(request);
33         //check permission
34
checkPermission(request, OperationConstants.LIST_FORUM);
35
36         ActionMessages messages = new ActionMessages();
37
38         try {
39             int maxIndexPages = Config.forumListPagerMaxIndexPages;
40             int maxPageItems = Config.forumListPagerMaxPageItems;
41             request.setAttribute("maxIndexPages", new Integer JavaDoc(maxIndexPages));
42             request.setAttribute("maxPageItems", new Integer JavaDoc(maxPageItems));
43
44             int start = 0;
45             try {
46                 start = Integer.parseInt(request.getParameter("pager.offset"));
47             } catch (Exception JavaDoc e) {
48                 /*ignore*/
49             }
50
51             List JavaDoc v = new Vector JavaDoc();
52
53             ForumFactory forumFactory = ForumFactory.getInstance(getAuthToken(request));
54             ProfileManager manager = forumFactory.getProfileManager();
55
56             Iterator JavaDoc forumIterator = null;
57             if (request.getParameter("query") != null) {
58
59                 // ::TODO::search, not very nice
60
String JavaDoc query = request.getParameter("query");
61                 forumIterator =forumFactory.forumsModeration();
62                 List JavaDoc tempListe = new ArrayList JavaDoc();
63                 Forum forumTemp = null;
64                 int c = 0;
65                 while (forumIterator.hasNext()) {
66                     forumTemp = (Forum) forumIterator.next();
67                     if (forumTemp.getName().toLowerCase().indexOf(query.toLowerCase()) > -1
68                         || forumTemp.getDescription().toLowerCase().indexOf(query.toLowerCase()) > -1
69                         ) {
70                         //match
71
if(c >= start && c<(start+maxPageItems)){
72                             tempListe.add(forumTemp);
73                         }
74                         c++;
75                         
76                     }
77                 }
78                 forumIterator = tempListe.iterator();
79                 request.setAttribute("nbItems", new Integer JavaDoc(c));
80                 request.setAttribute("query", query);
81             } else {
82                 forumIterator = forumFactory.forumsModeration();
83                 List JavaDoc tempListe = new ArrayList JavaDoc();
84                 Forum forumTemp = null;
85                 int c = 0;
86                 while (forumIterator.hasNext()) {
87                     forumTemp = (Forum) forumIterator.next();
88                     //match
89
if(c >= start && c<(start+maxPageItems)){
90                         tempListe.add(forumTemp);
91                     }
92                     c++;
93                 }
94                 forumIterator = tempListe.iterator();
95                 request.setAttribute("nbItems", new Integer JavaDoc(c));
96             }
97             //populate
98
String JavaDoc temp = null;
99             ForumBean ub = null;
100             Forum forum = null;
101             while (forumIterator.hasNext()) {
102                 forum = (Forum) forumIterator.next();
103                 ub = new ForumBean();
104                 ub.setId(forum.getID());
105                 ub.setName(forum.getName());
106                 ub.setDescription(forum.getDescription());
107                 ub.setMessages(forum.getMessageCount());
108                 ub.setThreads(forum.getThreadCount());
109                 ub.setModerationType(forum.getModerationType());
110                 
111                 ub.setAdmin(SecurityTools.isSystemAdmin(getAuthToken(request)) || SecurityTools.isForumAdmin(getAuthToken(request),forum));
112                 
113                 //not necessary
114
/*for(Enumeration enum =user.propertyNames(); enum.hasMoreElements();){
115                     temp=(String)enum.nextElement();
116                     ub.setValue(temp,user.getProperty(temp));
117                 }*/

118                 
119                 
120                 v.add(ub);
121             }
122
123             request.setAttribute("forums", v);
124             request.setAttribute("isSystemAdmin",new Boolean JavaDoc(SecurityTools.isSystemAdmin(getAuthToken(request))));
125             request.setAttribute("isForumAdmin",new Boolean JavaDoc(SecurityTools.isForumAdmin(getAuthToken(request))));
126
127         } catch (Exception JavaDoc e) {
128             String JavaDoc eid = this.getClass().getName() + "_" + System.currentTimeMillis();
129             log.error("eid:" + eid + "\nsessionID" + request.getSession().getId(), e);
130             messages.add("general", new ActionMessage("error.general", "error id:" + eid));
131         }
132
133         if (!messages.isEmpty()) {
134             saveMessages(request, messages);
135         }
136
137         return mapping.findForward("view");
138     }
139
140 }
Popular Tags