package org.nemesis.forum.webapp.admin.action;
import java.util.Iterator;
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.nemesis.forum.ForumFactory;
import org.nemesis.forum.Group;
import org.nemesis.forum.ProfileManager;
import org.nemesis.forum.User;
import org.nemesis.forum.util.SecurityTools;
import org.nemesis.forum.webapp.admin.bean.GroupUsersBean;
import org.nemesis.forum.webapp.admin.bean.UserBean;
import org.nemesis.forum.webapp.exception.UnauthorizedException;
public class ListGroupUsersAction extends BaseAction {
static protected Log log =LogFactory.getLog(ListGroupUsersAction.class);
public ActionForward execute(ActionMapping mapping,
ActionForm form,
HttpServletRequest request,
HttpServletResponse response)
throws Exception {
//check logon
checkUser(request);
ActionErrors errors = new ActionErrors();
try {
ForumFactory forumFactory = ForumFactory.getInstance(getAuthToken(request));
ProfileManager manager = forumFactory.getProfileManager();
User user = manager.getUser(getAuthToken(request).getUserID());
try {
//retrieve the group
String gid=request.getParameter("id");
if(gid==null) gid=""+request.getAttribute("id");//back to del or add action
Group group = manager.getGroup(Integer.parseInt(gid));
//check permission
checkPermission(request,OperationConstants.LIST_GROUP_USERS, group);
//populate bean
GroupUsersBean b=new GroupUsersBean();
b.setId(group.getID());
b.setName(group.getName());
b.setDescription(group.getDescription());
b.setNumAdmins(group.getAdministratorCount());
b.setNumMembers(group.getMemberCount()) ;
User u=null;
UserBean ub=null;
for(Iterator it=group.administrators();it.hasNext();){
u=(User)it.next();
ub = new UserBean();
ub.setId(u.getID());
ub.setName(u.getName());
ub.setUserName(u.getUsername());
ub.setEmail(u.getEmail());
b.addAdmin(ub);
}
for(Iterator it=group.members();it.hasNext();){
u=(User)it.next();
ub = new UserBean();
ub.setId(u.getID());
ub.setName(u.getName());
ub.setUserName(u.getUsername());
ub.setEmail(u.getEmail());
b.addMember(ub);
}
request.setAttribute("gp",b);
request.setAttribute("isSystemAdmin",new Boolean(SecurityTools.isSystemAdmin(getAuthToken(request))));
}
catch( NumberFormatException aee ) {
return mapping.findForward("cancel");
}
catch( UnauthorizedException aee ) {
errors.add("general", new ActionError("listGroupUsers.unauthorized"));
}
} catch (Exception e) {
String eid=this.getClass().getName()+"_"+System.currentTimeMillis();
log.error("eid:"+eid+"\nsessionID" +request.getSession().getId(),e) ;
errors.add("general", new ActionError("error.general","erreur id:"+eid));
}
if (!errors.isEmpty()) {
saveErrors(request, errors);
return mapping.findForward("cancel");
}
return mapping.findForward("view");
}
}