package org.nemesis.forum.webapp.admin.action;
import java.util.Iterator;
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.Group;
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.GroupBean;
public class ListGroupAction extends BaseAction {
static protected Log log =LogFactory.getLog(ListGroupAction.class);
public ActionForward execute(ActionMapping mapping,
ActionForm form,
HttpServletRequest request,
HttpServletResponse response)
throws Exception {
//check logon
checkUser(request);
//check permission
checkPermission(request,OperationConstants.LIST_GROUP);
ActionMessages messages = new ActionMessages();
try {
int maxIndexPages=Config.groupListPagerMaxIndexPages;
int maxPageItems=Config.groupListPagerMaxPageItems;
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*/
}
Vector v=new Vector();
ForumFactory forumFactory = ForumFactory.getInstance(getAuthToken(request));
ProfileManager manager = forumFactory.getProfileManager();
//// User user = manager.getUser(getAuthToken(request).getUserID());
int nb=manager.getGroupCount();
GroupBean gb=null;
Group group = null;
Iterator groupIterator = manager.groups(start,maxPageItems);
while( groupIterator.hasNext() ) {
group = (Group)groupIterator.next();
if(!SecurityTools.isGroupAdmin(getAuthToken(request),group)){
nb--;
continue;
}
gb = new GroupBean();
gb.setId( group.getID());
gb.setName( group.getName());
gb.setDescription(group.getDescription());
gb.setNumMembers( group.getMemberCount());
gb.setNumAdmins( group.getAdministratorCount());
v.add(gb);
}
request.setAttribute("groups",v);
request.setAttribute("nbItems",new Integer(nb));
request.setAttribute("isSystemAdmin",new Boolean(SecurityTools.isSystemAdmin(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");
}
}