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

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

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.ActionError;
import org.apache.struts.action.ActionErrors;
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.nemesis.forum.Forum;
import org.nemesis.forum.ForumFactory;
import org.nemesis.forum.ForumThread;
import org.nemesis.forum.Message;
import org.nemesis.forum.User;
import org.nemesis.forum.exception.UnauthorizedException;
import org.nemesis.forum.webapp.admin.Config;
import org.nemesis.forum.webapp.admin.bean.ForumBean;
import org.nemesis.forum.webapp.admin.bean.MessageBean;
import org.nemesis.forum.webapp.admin.bean.ThreadBean;
import org.nemesis.forum.webapp.admin.bean.UserBean;

public class ListForumContentAction extends BaseAction {

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

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

    //check logon
    checkUser(request);

    ActionErrors errors = new ActionErrors();

    try {
     
      int maxIndexPages=Config.forumThreadsListPagerMaxIndexPages;
      int maxPageItems=Config.forumThreadsListPagerMaxPageItems;
      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));
      Forum forum = forumFactory.getForum(Integer.parseInt(request.getParameter("id")));
      //check permission
      checkPermission(request, OperationConstants.LIST_FORUM_CONTENT, forum);

      ForumBean fb = new ForumBean();
      fb.setId(forum.getID());
      fb.setName(forum.getName());
      fb.setNotApprovedMessages(forum.getMessageCount(false));
      fb.setNotApprovedThreads(forum.getThreadCount(false));
      fb.setThreads(forum.getThreadCount());
      fb.setMessages(forum.getMessageCount());

      request.setAttribute("fb", fb);
     
      request.setAttribute("nbItems",new Integer(forum.getThreadCount()));
     
     
      List tbs = new ArrayList();
      Iterator threadIterator = forum.threads(start,maxPageItems); //start,range

      ThreadBean tb = null;

      while (threadIterator.hasNext()) {
        ForumThread currentThread = (ForumThread) threadIterator.next();
        tb = new ThreadBean();
        tb.setId(currentThread.getID());
        tb.setForumID(forum.getID());
        tb.setCreationDate(currentThread.getCreationDate());
        tb.setModifiedDate(currentThread.getModifiedDate());
        tb.setApproved(currentThread.isApproved());
        tb.setNotApprovedMessages(currentThread.getMessageCount(false));
        tb.setReplies(currentThread.getMessageCount() - 1);
        tb.setTopic(currentThread.getName());

        Message rootMessage = currentThread.getRootMessage();
        MessageBean mb = new MessageBean();
        mb.setAnonymous(rootMessage.isAnonymous());
       
        UserBean ub = new UserBean();
        if(!rootMessage.isAnonymous()){
       
          User rootMessageUser = rootMessage.getUser();
          ub.setId(rootMessageUser.getID());
          ub.setUserName(rootMessageUser.getUsername());
          ub.setName(rootMessageUser.getName());
          ub.setEmail(rootMessageUser.getEmail());
         
        }else{
          //:NOTE: we suppose in front application : name & email message property for anonymous user
          ub.setUserName(rootMessage.getProperty("name"));
          ub.setEmail(rootMessage.getProperty("email"));
        }
       
        mb.setAuthor(ub);
        tb.setRootMessage(mb);
        tbs.add(tb);

      }
      request.setAttribute("tbs", tbs);
      request.setAttribute("formatDatePattern", getResources(request).getMessage(getLocale(request),"dateformat"));

    } catch (UnauthorizedException ue) {

      errors.add("general", new ActionError("listForumContent.unauthorized"));

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

    if (!errors.isEmpty()) {
      saveErrors(request, errors);
      return mapping.findForward("cancel");
    }

    return mapping.findForward("view");
  }

}
TOP

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

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.