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.beanutils.PropertyUtils;
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.ProfileManager;
import org.nemesis.forum.User;
import org.nemesis.forum.exception.AlreadyExistsException;
import org.nemesis.forum.exception.UnauthorizedException;
import org.nemesis.forum.webapp.admin.bean.UserBean;
/**
* @author dlaurent
*
* 20 f�vr. 2003
* AddGroupAction.java
*/
public class AddUserAction extends BaseAction {
static protected Log log = LogFactory.getLog(AddUserAction.class);
public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception {
//check logon
checkUser(request);
//check permission
checkPermission(request, OperationConstants.ADD_USER);
ActionErrors errors = new ActionErrors();
// user need cancel
if (isCancelled(request)) {
return (mapping.findForward("cancel"));
}
try {
ForumFactory forumFactory = ForumFactory.getInstance(getAuthToken(request));
ProfileManager manager = forumFactory.getProfileManager();
User user = manager.getUser(getAuthToken(request).getUserID());
try {
UserBean ub = (UserBean) PropertyUtils.getProperty(form, "userBean");
User u = manager.createUser(ub.getUserName(), ub.getPassword(), ub.getEmail());
u.setEmailVisible(ub.isEmailVisible());
u.setName(ub.getName());
u.setNameVisible(ub.isNameVisible());
//properties
String temp = null;
for (Iterator it = ub.getProperties().keySet().iterator(); it.hasNext();) {
temp = (String) it.next();
u.setProperty(temp, (String) ub.getProperties().get(temp));
}
} catch (AlreadyExistsException aee) {
errors.add("general", new ActionError("addUser.alreadyExist"));
} catch (UnauthorizedException aee) {
errors.add("general", new ActionError("addUser.unauthorized"));
return mapping.findForward("cancel");
}
} 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.getInputForward());
}
return mapping.findForward("success");
}
}