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);
 }
Exemplo n.º 2
0
 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;
 }