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}