1 package org.nemesis.forum.webapp.admin.action; 2 3 import java.util.List ; 4 import java.util.Vector ; 5 6 import javax.servlet.http.HttpServletRequest ; 7 import javax.servlet.http.HttpServletResponse ; 8 9 import org.apache.commons.logging.Log; 10 import org.apache.commons.logging.LogFactory; 11 import org.apache.struts.action.ActionError; 12 import org.apache.struts.action.ActionErrors; 13 import org.apache.struts.action.ActionForm; 14 import org.apache.struts.action.ActionForward; 15 import org.apache.struts.action.ActionMapping; 16 import org.apache.struts.action.ActionMessage; 17 import org.nemesis.forum.Forum; 18 import org.nemesis.forum.ForumFactory; 19 import org.nemesis.forum.MessageFilter; 20 import org.nemesis.forum.webapp.admin.Config; 21 import org.nemesis.forum.webapp.admin.bean.FilterBean; 22 import org.nemesis.forum.webapp.admin.bean.ForumFiltersBean; 23 import org.nemesis.forum.webapp.exception.UnauthorizedException; 24 25 public class ListForumFiltersAction extends BaseAction { 26 27 static protected Log log = LogFactory.getLog(ListForumFiltersAction.class); 28 29 public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception { 30 31 checkUser(request); 33 34 35 ActionErrors errors = new ActionErrors(); 36 37 try { 38 39 40 List v = new Vector (); 41 42 ForumFactory forumFactory = ForumFactory.getInstance(getAuthToken(request)); 43 Forum forum = forumFactory.getForum(Integer.parseInt(request.getParameter("id"))); 44 checkPermission(request, OperationConstants.LIST_FORUM_FILTER,forum); 46 ForumFiltersBean fb = new ForumFiltersBean(); 47 fb.setId(forum.getID()); 48 fb.setName(forum.getName()); 49 fb.setDescription(forum.getDescription()); 50 51 MessageFilter[] installedFilters =forum.getForumMessageFilters(); 52 for( int i=0; i<installedFilters.length; i++ ) { 53 FilterBean b=new FilterBean(i,installedFilters[i]); 54 fb.addFilters(b); 55 } 56 57 58 String [] classNames=Config.filtersClassNames; 59 for( int i=0; i<classNames.length; i++ ) { 60 Class c = Class.forName(classNames[i]); 61 MessageFilter filter = (MessageFilter)(c.newInstance()); 62 if(! containsString(installedFilters,filter.getName() )){ 63 fb.addFreeFilters(new FilterBean(i,filter)); 64 } 65 } 66 67 request.setAttribute("fb",fb); 68 69 }catch( UnauthorizedException ue ) { 70 71 errors.add("general", new ActionError("listForumFilters.unauthorized" )); 72 73 } catch (Exception e) { 74 String eid = this.getClass().getName() + "_" + System.currentTimeMillis(); 75 log.error("eid:" + eid + "\nsessionID" + request.getSession().getId(), e); 76 errors.add("general", new ActionMessage("error.general", "error id:" + eid)); 77 } 78 79 if (!errors.isEmpty()) { 80 saveErrors(request, errors); 81 return mapping.findForward("cancel"); 82 } 83 84 return mapping.findForward("view"); 85 } 86 87 private boolean containsString( MessageFilter [] installedFilters, String filterName ) { 88 for( int i=0; i<installedFilters.length; i++ ) { 89 if( installedFilters[i].getName().equals(filterName) ) { 90 return true; 91 } 92 } 93 return false; 94 } 95 } | Popular Tags |