public DefaultQLEvaluatorRegistry() { functionDispatchEvaluator = new Net.Vpc.Upa.Impl.Eval.FunctionDispatchEvaluatorQLTypeEvaluator(functionsEvaluators); RegisterTypeEvaluator(null, nullEvaluator); RegisterTypeEvaluator(typeof(Net.Vpc.Upa.Expressions.FunctionExpression), functionDispatchEvaluator); RegisterTypeEvaluator(typeof(Net.Vpc.Upa.Expressions.Literal), Net.Vpc.Upa.Impl.Eval.LiteralTypeEvaluator.INSTANCE); RegisterTypeEvaluator(typeof(Net.Vpc.Upa.Expressions.UnaryOperatorExpression), Net.Vpc.Upa.Impl.Eval.UnaryOperatorExpressionEvaluator.INSTANCE); RegisterTypeEvaluator(typeof(Net.Vpc.Upa.Expressions.If), Net.Vpc.Upa.Impl.Eval.IfExpressionEvaluator.INSTANCE); RegisterTypeEvaluator(typeof(Net.Vpc.Upa.Expressions.BinaryOperatorExpression), Net.Vpc.Upa.Impl.Eval.BinaryOperatorExpressionEvaluator.INSTANCE); RegisterFunctionEvaluator("file_exists", Net.Vpc.Upa.Impl.Eval.Functions.FileExistsEvaluator.INSTANCE); RegisterFunctionEvaluator("coalesce", Net.Vpc.Upa.Impl.Eval.Functions.CoalesceEvaluator.INSTANCE); RegisterFunctionEvaluator("concat", Net.Vpc.Upa.Impl.Eval.Functions.ConcatEvaluator.INSTANCE); RegisterFunctionEvaluator("currentDate", Net.Vpc.Upa.Impl.Eval.Functions.CurrentDateEvaluator.INSTANCE); RegisterFunctionEvaluator("currentTime", Net.Vpc.Upa.Impl.Eval.Functions.CurrentTimeEvaluator.INSTANCE); RegisterFunctionEvaluator("currentTimestamp", Net.Vpc.Upa.Impl.Eval.Functions.CurrentTimestampEvaluator.INSTANCE); RegisterFunctionEvaluator("currentUser", Net.Vpc.Upa.Impl.Eval.Functions.CurrentUserEvaluator.INSTANCE); RegisterFunctionEvaluator("d2v", Net.Vpc.Upa.Impl.Eval.Functions.D2VEvaluator.INSTANCE); RegisterFunctionEvaluator("dateAdd", Net.Vpc.Upa.Impl.Eval.Functions.DateAddEvaluator.INSTANCE); RegisterFunctionEvaluator("datePart", Net.Vpc.Upa.Impl.Eval.Functions.DatePartEvaluator.INSTANCE); RegisterFunctionEvaluator("decode", Net.Vpc.Upa.Impl.Eval.Functions.DecodeEvaluator.INSTANCE); // registerFunctionEvaluator("if", new IfEvaluator()); //already added as special evaluator RegisterFunctionEvaluator("i2v", Net.Vpc.Upa.Impl.Eval.Functions.D2VEvaluator.INSTANCE); RegisterFunctionEvaluator("sign", Net.Vpc.Upa.Impl.Eval.Functions.SignEvaluator.INSTANCE); RegisterFunctionEvaluator("strlen", Net.Vpc.Upa.Impl.Eval.Functions.StrLenEvaluator.INSTANCE); }
public virtual Net.Vpc.Upa.Expressions.Expression EvalObject(Net.Vpc.Upa.Expressions.Expression e, Net.Vpc.Upa.QLEvaluator evaluator, object context) { Net.Vpc.Upa.Expressions.FunctionExpression fct = (Net.Vpc.Upa.Expressions.FunctionExpression)e; Net.Vpc.Upa.QLTypeEvaluator fe = Net.Vpc.Upa.Impl.FwkConvertUtils.GetMapValue <string, Net.Vpc.Upa.QLTypeEvaluator>(functionsEvaluators, fct.GetName().ToLower()); if (fe == null) { throw new System.Exception("function not found " + fct.GetName()); } return(fe.EvalObject(fct, evaluator, context)); }
public virtual Net.Vpc.Upa.QLTypeEvaluator GetTypeEvaluator(System.Type type) { Net.Vpc.Upa.QLTypeEvaluator y = Net.Vpc.Upa.Impl.FwkConvertUtils.GetMapValue <System.Type, Net.Vpc.Upa.QLTypeEvaluator>(typeEvaluators, type); if (y != null) { return(y); } if (type == null) { return(nullEvaluator); } foreach (System.Collections.Generic.KeyValuePair <System.Type, Net.Vpc.Upa.QLTypeEvaluator> en in new System.Collections.Generic.HashSet <System.Collections.Generic.KeyValuePair <System.Type, Net.Vpc.Upa.QLTypeEvaluator> >(typeEvaluators)) { if (!System.Collections.Generic.EqualityComparer <System.Type> .Default.Equals((en).Key, null) && (en).Key.IsAssignableFrom(type)) { return((en).Value); } } return(notFoundEvaluator); }
public virtual void RegisterTypeEvaluator(System.Type type, Net.Vpc.Upa.QLTypeEvaluator t) { typeEvaluators[type] = t; }
public virtual void RegisterFunctionEvaluator(string name, Net.Vpc.Upa.QLTypeEvaluator t) { functionsEvaluators[name] = t; }