package com.openedit.util.strainer; import java.util.Iterator; import com.openedit.ModuleManager; import com.openedit.OpenEditException; import com.openedit.WebPageRequest; import com.openedit.config.Configuration; import com.openedit.config.XMLConfiguration; import com.openedit.page.PageAction; public class ActionFilter extends BaseFilter { protected String fieldActionName; protected String fieldPermissionName; protected ModuleManager fieldModuleManager; protected Configuration fieldProperties; public ActionFilter(String inTarget, ModuleManager inModuleManager) { setActionName(inTarget); setModuleManager(inModuleManager); // TODO Auto-generated constructor stub } public boolean passes(Object inObj) throws FilterException { WebPageRequest req = (WebPageRequest) inObj; try { if(getActionName() == null){ return true;// } PageAction action = new PageAction(getActionName()); action.setConfig(getConfig()); for (Iterator iterator = getProperties().keySet().iterator(); iterator .hasNext();) { String key = (String) iterator.next(); String value = get(key); req.putPageValue(key, value); } req.setCurrentAction(action); Object returned = getModuleManager().execute(getActionName(), req); if (returned != null) { if (returned instanceof Boolean) { return ((Boolean) returned).booleanValue(); } } } catch (OpenEditException e) { throw new FilterException(e); } Boolean value = (Boolean) req.getPageValue("can" + getPermissionName()); if (value != null) { return value.booleanValue(); } return false; } public Filter[] getFilters() { // TODO Auto-generated method stub return null; } public String getActionName() { return fieldActionName; } public void setActionName(String inActionName) { fieldActionName = inActionName; } public ModuleManager getModuleManager() { return fieldModuleManager; } public void setModuleManager(ModuleManager inModuleManager) { fieldModuleManager = inModuleManager; } public String getPermissionName() { return fieldPermissionName; } public void setPermissionName(String inPermissionName) { fieldPermissionName = inPermissionName; } public void addProperty(String inKey, String inValue) { if("name".equals(inKey)){ setActionName(inValue); return; } if (fieldProperties == null) { fieldProperties = new XMLConfiguration("action"); fieldProperties.setAttribute("name", getActionName()); } Configuration child = fieldProperties.getChild(inKey); if (child != null) { fieldProperties.removeChild(child); } fieldProperties.addChild(inKey).setValue(inValue); } @Override public void setProperty(String inKey, String inValue) { // TODO Auto-generated method stub addProperty(inKey, inValue); } public Configuration getConfig() { return fieldProperties; } public String getProperty(String inKey) { if (fieldProperties == null) { return null; } return (String) getConfig().getChildValue(inKey); } public String get(String inType) { // TODO Auto-generated method stub return getProperty(inType); } public void setConfiguration(Configuration inConfig) { fieldProperties = inConfig; } public String toString() { return "Action: " + getActionName(); } }