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

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

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.ForumFactory;
import org.nemesis.forum.ProfileManager;
import org.nemesis.forum.User;
import org.nemesis.forum.webapp.admin.Config;
import org.nemesis.forum.webapp.admin.bean.UserBean;

public class ListUserAction extends BaseAction {

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

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

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

    ActionMessages messages = new ActionMessages();

    try {
      int maxIndexPages = Config.userListPagerMaxIndexPages;
      int maxPageItems = Config.userListPagerMaxPageItems;
      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 userIterator = null;
      if (request.getParameter("query") != null) {

        //::TODO::search, not very nice
        String query = request.getParameter("query");
        userIterator = manager.users();
        List tempListe = new ArrayList();
        User userTemp = null;
        int c = 0;
        while (userIterator.hasNext()) {
          userTemp = (User) userIterator.next();
          if (userTemp.getName().toLowerCase().indexOf(query.toLowerCase()) > -1
            || userTemp.getUsername().toLowerCase().indexOf(query.toLowerCase()) > -1
            || userTemp.getEmail().toLowerCase().indexOf(query.toLowerCase()) > -1) {
            //match
            if(c >= start && c<(start+maxPageItems)){
              tempListe.add(userTemp);
            }
            c++;
           
          }
        }
        userIterator = tempListe.iterator();
        request.setAttribute("nbItems", new Integer(c));
        request.setAttribute("query", query);
      } else {
        userIterator = manager.users(start, maxPageItems);
        request.setAttribute("nbItems", new Integer(manager.getUserCount()));
      }
      //populate
      String temp = null;
      UserBean ub = null;
      User user = null;
      while (userIterator.hasNext()) {
        user = (User) userIterator.next();
        ub = new UserBean();
        ub.setId(user.getID());
        ub.setName(user.getName());
        ub.setUserName(user.getUsername());
        ub.setNameVisible(user.isNameVisible());
        ub.setEmail(user.getEmail());
        ub.setEmailVisible(user.isEmailVisible());
        //not necessary
        /*for(Enumeration enum =user.propertyNames(); enum.hasMoreElements();){
          temp=(String)enum.nextElement();
          ub.setValue(temp,user.getProperty(temp));
        }*/
       
        ub.setGoupCount(user.getGroupCount());
        ub.setGroupAdminCount(user.getGroupAdministratorCount());

        v.add(ub);
      }

      request.setAttribute("users", v);

    } 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.ListUserAction

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.