Package org.nemesis.forum.webapp.admin.action

Source Code of org.nemesis.forum.webapp.admin.action.ListForumAction

package org.nemesis.forum.webapp.admin.action;

import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.util.Vector;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import org.apache.struts.action.ActionMessage;
import org.apache.struts.action.ActionMessages;
import org.nemesis.forum.Forum;
import org.nemesis.forum.ForumFactory;
import org.nemesis.forum.ProfileManager;
import org.nemesis.forum.util.SecurityTools;
import org.nemesis.forum.webapp.admin.Config;
import org.nemesis.forum.webapp.admin.bean.ForumBean;

public class ListForumAction extends BaseAction {

  static protected Log log = LogFactory.getLog(ListForumAction.class);

  public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception {

    //check logon
    checkUser(request);
    //check permission
    checkPermission(request, OperationConstants.LIST_FORUM);

    ActionMessages messages = new ActionMessages();

    try {
      int maxIndexPages = Config.forumListPagerMaxIndexPages;
      int maxPageItems = Config.forumListPagerMaxPageItems;
      request.setAttribute("maxIndexPages", new Integer(maxIndexPages));
      request.setAttribute("maxPageItems", new Integer(maxPageItems));

      int start = 0;
      try {
        start = Integer.parseInt(request.getParameter("pager.offset"));
      } catch (Exception e) {
        /*ignore*/
      }

      List v = new Vector();

      ForumFactory forumFactory = ForumFactory.getInstance(getAuthToken(request));
      ProfileManager manager = forumFactory.getProfileManager();

      Iterator forumIterator = null;
      if (request.getParameter("query") != null) {

        // ::TODO::search, not very nice
        String query = request.getParameter("query");
        forumIterator =forumFactory.forumsModeration();
        List tempListe = new ArrayList();
        Forum forumTemp = null;
        int c = 0;
        while (forumIterator.hasNext()) {
          forumTemp = (Forum) forumIterator.next();
          if (forumTemp.getName().toLowerCase().indexOf(query.toLowerCase()) > -1
            || forumTemp.getDescription().toLowerCase().indexOf(query.toLowerCase()) > -1
            ) {
            //match
            if(c >= start && c<(start+maxPageItems)){
              tempListe.add(forumTemp);
            }
            c++;
           
          }
        }
        forumIterator = tempListe.iterator();
        request.setAttribute("nbItems", new Integer(c));
        request.setAttribute("query", query);
      } else {
        forumIterator = forumFactory.forumsModeration();
        List tempListe = new ArrayList();
        Forum forumTemp = null;
        int c = 0;
        while (forumIterator.hasNext()) {
          forumTemp = (Forum) forumIterator.next();
          //match
          if(c >= start && c<(start+maxPageItems)){
            tempListe.add(forumTemp);
          }
          c++;
        }
        forumIterator = tempListe.iterator();
        request.setAttribute("nbItems"new Integer(c));
      }
      //populate
      String temp = null;
      ForumBean ub = null;
      Forum forum = null;
      while (forumIterator.hasNext()) {
        forum = (Forum) forumIterator.next();
        ub = new ForumBean();
        ub.setId(forum.getID());
        ub.setName(forum.getName());
        ub.setDescription(forum.getDescription());
        ub.setMessages(forum.getMessageCount());
        ub.setThreads(forum.getThreadCount());
        ub.setModerationType(forum.getModerationType());
       
        ub.setAdmin(SecurityTools.isSystemAdmin(getAuthToken(request)) || SecurityTools.isForumAdmin(getAuthToken(request),forum));
       
        //not necessary
        /*for(Enumeration enum =user.propertyNames(); enum.hasMoreElements();){
          temp=(String)enum.nextElement();
          ub.setValue(temp,user.getProperty(temp));
        }*/
       
       
        v.add(ub);
      }

      request.setAttribute("forums", v);
      request.setAttribute("isSystemAdmin",new Boolean(SecurityTools.isSystemAdmin(getAuthToken(request))));
      request.setAttribute("isForumAdmin",new Boolean(SecurityTools.isForumAdmin(getAuthToken(request))));

    } catch (Exception e) {
      String eid = this.getClass().getName() + "_" + System.currentTimeMillis();
      log.error("eid:" + eid + "\nsessionID" + request.getSession().getId(), e);
      messages.add("general", new ActionMessage("error.general", "error id:" + eid));
    }

    if (!messages.isEmpty()) {
      saveMessages(request, messages);
    }

    return mapping.findForward("view");
  }

}
TOP

Related Classes of org.nemesis.forum.webapp.admin.action.ListForumAction

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.