001package gudusoft.gsqlparser.compiler.expr.function; 002 003import gudusoft.gsqlparser.compiler.IEvaluationContext; 004import gudusoft.gsqlparser.compiler.expr.IExprFunction; 005import gudusoft.gsqlparser.compiler.expr.TExprException; 006import gudusoft.gsqlparser.compiler.expr.TExprFunction; 007 008import java.util.HashMap; 009import java.util.Map; 010 011public class TFunctionMap implements IFunctionProvider { 012 013 private boolean caseSensitive; 014 private Map<String, IExprFunction> functions = new HashMap(); 015 016 public TFunctionMap() { 017 } 018 019 public TFunctionMap(boolean caseSensitive) { 020 this.caseSensitive = caseSensitive; 021 } 022 023 public void add(String name, IExprFunction function) { 024 functions.put(caseSensitive ? name : name.toUpperCase(), function); 025 } 026 027 public Object evaluate(IEvaluationContext context, TExprFunction function) 028 throws TExprException { 029 IExprFunction f = functions.get(function.getName()); 030 if (f != null) 031 return f.evaluate(context, function.getArgs()); 032 return null; 033 } 034 035 public boolean hasFunction(TExprFunction function) { 036 return functions.containsKey(function.getName()); 037 } 038}