package org.nemesis.forum.webapp.admin.action;
import java.util.Enumeration;
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.Forum;
import org.nemesis.forum.ForumFactory;
import org.nemesis.forum.MessageFilter;
import org.nemesis.forum.webapp.exception.UnauthorizedException;
/**
* @author dlaurent
*
* 20 f�vr. 2003
*/
public class EditForumFilterAction extends BaseAction {
static protected Log log = LogFactory.getLog(EditForumFilterAction.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));
Forum forum = forumFactory.getForum(Integer.parseInt(request.getParameter("id")));
request.setAttribute("id", request.getParameter("id"));
//check permission
checkPermission(request, OperationConstants.EDIT_FORUM_FILTER, forum);
MessageFilter filter= forum.getForumMessageFilters()[Integer.parseInt(request.getParameter("edit"))];
Enumeration props = filter.getFilterPropertyNames();
while( props.hasMoreElements() ) {
String propName = (String)props.nextElement();
String propValue = request.getParameter(propName);
if( propValue != null ) {
try {
filter.setFilterProperty(propName,propValue);
} catch( IllegalArgumentException iae ) {
}
}
}
} catch (UnauthorizedException ue) {
errors.add("general", new ActionError("addForumFilter.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("success");
}
}