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

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

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

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.TreeWalker;
import org.nemesis.forum.User;
import org.nemesis.forum.exception.UnauthorizedException;
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 ListThreadContentAction extends BaseAction {

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

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

    //check logon
    checkUser(request);

    ActionErrors errors = new ActionErrors();

    try {

      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.setApprovedMessages();
      //fb.setApprovedThreads();
      //fb.setThreads(forum.getThreadCount());
      //fb.setMessages(forum.getMessageCount());
      request.setAttribute("fb", fb);

      ForumThread thread = forum.getThread(Integer.parseInt(request.getParameter("threadID")));
      ThreadBean tb = new ThreadBean();
      tb.setId(thread.getID());
      tb.setForumID(forum.getID());
      tb.setCreationDate(thread.getCreationDate());
      tb.setModifiedDate(thread.getModifiedDate());
      tb.setApproved(thread.isApproved());
     
      tb.setNotApprovedMessages(thread.getMessageCount(false));
      tb.setMessages(thread.getMessageCount());
      tb.setReplies(thread.getMessageCount() - 1);
      tb.setTopic(thread.getName());
     

      TreeWalker walker = thread.treeWalker();
      Message rootMessage = walker.getRoot();
      populate(walker,tb,rootMessage,0);
     
     


      request.setAttribute("tb", tb);
      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");
  }

  /**
   * Recursive method to populate.
   */
  private void populate(TreeWalker walker, ThreadBean tb, Message message, int depth) {
   
    MessageBean mb=new MessageBean();
    mb.setDepth(depth);
    mb.setAnonymous(message.isAnonymous());
    mb.setApproved(message.isApproved());
    mb.setContent(message.getBody());
    mb.setCreationDate(message.getCreationDate());
    mb.setMessageID(message.getID());
    mb.setModifiedDate(message.getModifiedDate());
    mb.setSubject(message.getSubject());

   
    UserBean ub = new UserBean();
    if(!message.isAnonymous()){

      User messageUser = message.getUser();
      ub.setId(messageUser.getID());
      ub.setUserName(messageUser.getUsername());
      ub.setName(messageUser.getName());
      ub.setEmail(messageUser.getEmail());
 
    }else{
      //:NOTE: we suppose in front application : name & email message property for anonymous user
      ub.setUserName(message.getProperty("name"));
      ub.setEmail(message.getProperty("email"));
    }

    mb.setAuthor(ub);
    //add message
    tb.addMessagesTree(mb);
   
    //children
    for (int i = 0; i < walker.getChildCount(message); i++) {
      populate(walker, tb, walker.getChild(message, i), (depth + 1));
    }

  }

}
TOP

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

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.