package com.comerica.zk; import java.util.HashMap; import java.util.Map; import org.apache.log4j.Logger; import org.zkoss.xel.Function; import org.zkoss.xel.FunctionMapper; import org.zkoss.xel.XelException; import com.comerica.zk.datasource.DatasourceException; import com.comerica.zk.fn.Asdf; import com.comerica.zk.fn.Ds; public class COFunctionMapper implements FunctionMapper { public static final Logger LOGGER = Logger.getLogger(COFunctionMapper.class); private Map functionMap = null; private COSheet cosheet; public COFunctionMapper(COSheet cosheet) { this.cosheet = cosheet; } @Override public Function resolveFunction(String prefix, String name) throws XelException { LOGGER.info(this.hashCode() + " : resolveFunction(" + prefix + "," + name + ")"); Function resolved = null; if("zss".equals(prefix)){ resolved = getFunctionMap().get(name.trim().toLowerCase()); } return resolved; } private Map getFunctionMap() throws XelException{ buildFunctionMap(); return functionMap; } private void buildFunctionMap() throws XelException{ functionMap = new HashMap(); try{ functionMap.put("asdf", new Asdf()); functionMap.put("ds", new Ds(cosheet)); }catch(DatasourceException e){ throw new XelException("There was an error building the map of custom functions", e); } } }