001package gudusoft.gsqlparser.compiler.util; 002 003import gudusoft.gsqlparser.compiler.IEvaluationContext; 004import gudusoft.gsqlparser.compiler.expr.IExprFunction; 005import gudusoft.gsqlparser.compiler.expr.TExprException; 006import gudusoft.gsqlparser.compiler.expr.TExprFunction; 007import gudusoft.gsqlparser.compiler.expr.function.TExcelFunctionProvider; 008import gudusoft.gsqlparser.compiler.expr.function.TFunctionManager; 009import gudusoft.gsqlparser.nodes.TExpression; 010 011 012import java.util.HashMap; 013import java.util.Map; 014 015public class TSimpleEvaluationContext implements IEvaluationContext { 016 private TFunctionManager functions = new TFunctionManager(); 017 private Map<String, TExpression> variables = new HashMap(); 018 019 public TSimpleEvaluationContext() { 020 functions.add(new TExcelFunctionProvider()); 021 functions.add("SetVar", new SetVarFunction()); 022 } 023 024 public void setVariable(String name, TExpression value) { 025 variables.put(name, value); 026 } 027 028 public Object evaluateFunction(TExprFunction function) throws TExprException { 029 return functions.evaluate(this, function); 030 } 031 032// public Object evaluateVariable(ExprVariable variable) throws ExprException { 033// return variables.get(variable.getName()); 034// } 035 036 private class SetVarFunction implements IExprFunction 037 { 038 public Object evaluate(IEvaluationContext context, TExpression[] args) 039 throws TExprException { 040// assertArgCount(args, 2); 041// String v = asString(context, args[0], false).toUpperCase(); 042// Expr e = evalArg(context, args[1]); 043// variables.put(v, e); 044 045 return null; 046 } 047 048 public boolean isVolatile(){ 049 return false; 050 } 051 } 052 053}