public virtual Net.Vpc.Upa.Expressions.CompiledExpression Update(Net.Vpc.Upa.Expressions.CompiledExpression e)
        {
            Net.Vpc.Upa.Impl.Uql.Compiledexpression.CompiledQLFunctionExpression o = (Net.Vpc.Upa.Impl.Uql.Compiledexpression.CompiledQLFunctionExpression)e;
            int argumentsCount = o.GetArgumentsCount();

            object[] args = new object[argumentsCount];
            for (int i = 0; i < args.Length; i++)
            {
                args[i] = Eval(o.GetArgument(i));
            }
            object v = o.GetHandler().Eval(new Net.Vpc.Upa.EvalContext(o.GetName(), args, persistenceUnit));

            if (v != null)
            {
                if (v is Net.Vpc.Upa.Expressions.CompiledExpression)
                {
                    return((Net.Vpc.Upa.Expressions.CompiledExpression)v);
                }
                if (v is Net.Vpc.Upa.Expressions.Expression)
                {
                    throw new System.ArgumentException("Function should return literals of compiled expressions (CompiledExpression type)");
                }
                return(new Net.Vpc.Upa.Impl.Uql.Compiledexpression.CompiledParam(v, null, o.GetTypeTransform(), false));
            }
            else
            {
                return(new Net.Vpc.Upa.Impl.Uql.Compiledexpression.CompiledLiteral(null, null));
            }
        }
示例#2
0
 protected internal virtual Net.Vpc.Upa.Impl.Uql.Compiledexpression.CompiledVar CompileVar(Net.Vpc.Upa.Expressions.Var v, Net.Vpc.Upa.Impl.Uql.ExpressionTranslationManager manager, Net.Vpc.Upa.Impl.Uql.ExpressionDeclarationList declarations)
 {
     if (v == null)
     {
         return(null);
     }
     Net.Vpc.Upa.Expressions.CompiledExpression p = null;
     if (v.GetApplier() != null)
     {
         p = manager.TranslateAny(v.GetApplier(), declarations);
     }
     if (p == null)
     {
         return(new Net.Vpc.Upa.Impl.Uql.Compiledexpression.CompiledVar(v.GetName()));
     }
     else
     {
         Net.Vpc.Upa.Impl.Uql.Compiledexpression.CompiledVar r = new Net.Vpc.Upa.Impl.Uql.Compiledexpression.CompiledVar(v.GetName());
         if (p is Net.Vpc.Upa.Impl.Uql.Compiledexpression.CompiledVar)
         {
             ((Net.Vpc.Upa.Impl.Uql.Compiledexpression.CompiledVar)((Net.Vpc.Upa.Impl.Uql.Compiledexpression.CompiledVar)p).GetFinest()).SetChild(r);
             return((Net.Vpc.Upa.Impl.Uql.Compiledexpression.CompiledVar)p);
         }
         else
         {
             throw new Net.Vpc.Upa.Exceptions.UPAException("Unsupported");
         }
     }
 }
示例#3
0
 public virtual Net.Vpc.Upa.Expressions.CompiledExpression Update(Net.Vpc.Upa.Expressions.CompiledExpression e)
 {
     Net.Vpc.Upa.Impl.Uql.Compiledexpression.CompiledVar implicitParent = new Net.Vpc.Upa.Impl.Uql.Compiledexpression.CompiledVar(thisAlias);
     //                        e2 = (CompiledVar) ((CompiledVar) e).copy();
     Net.Vpc.Upa.Impl.Uql.Compiledexpression.CompiledVar e2 = (Net.Vpc.Upa.Impl.Uql.Compiledexpression.CompiledVar)e;
     e2.UnsetParent();
     implicitParent.SetChild(e2);
     return(implicitParent);
 }
示例#4
0
 public virtual Net.Vpc.Upa.Expressions.CompiledExpression CompileExpression(Net.Vpc.Upa.Expressions.Expression expression, Net.Vpc.Upa.Persistence.ExpressionCompilerConfig config)
 {
     if (config == null)
     {
         config = new Net.Vpc.Upa.Persistence.ExpressionCompilerConfig();
     }
     Net.Vpc.Upa.Expressions.CompiledExpression qe = translationManager.CompileExpression(expression, config);
     qe = CompileExpression(qe, config);
     return(qe);
 }
示例#5
0
 public virtual Net.Vpc.Upa.Expressions.CompiledExpression CompileExpression(Net.Vpc.Upa.Expressions.CompiledExpression expression, Net.Vpc.Upa.Persistence.ExpressionCompilerConfig config)
 {
     if (config == null)
     {
         config = new Net.Vpc.Upa.Persistence.ExpressionCompilerConfig();
     }
     if (config.IsValidate() || config.IsExpandFields())
     {
         expression = validationManager.ValidateExpression(expression, config);
     }
     return(expression);
 }
示例#6
0
 public virtual T FindFirstExpression <T>(Net.Vpc.Upa.Impl.Uql.CompiledExpressionFilter filter) where  T : Net.Vpc.Upa.Expressions.CompiledExpression
 {
     if (filter.Accept(this))
     {
         //this double casting is needed in C#
         return((T)(object)this);
     }
     Net.Vpc.Upa.Impl.Uql.Compiledexpression.DefaultCompiledExpression[] subExpressions = GetSubExpressions();
     if (subExpressions != null)
     {
         foreach (Net.Vpc.Upa.Impl.Uql.Compiledexpression.DefaultCompiledExpression subExpression in subExpressions)
         {
             if (subExpression != null)
             {
                 Net.Vpc.Upa.Expressions.CompiledExpression e = ((Net.Vpc.Upa.Impl.Uql.Compiledexpression.DefaultCompiledExpressionImpl)subExpression).FindFirstExpression <T>(filter);
                 if (e != null)
                 {
                     return((T)e);
                 }
             }
         }
     }
     return(default(T));
 }
 public virtual Net.Vpc.Upa.Expressions.CompiledExpression Update(Net.Vpc.Upa.Expressions.CompiledExpression e)
 {
     Net.Vpc.Upa.Impl.Uql.Compiledexpression.CompiledVar t = (Net.Vpc.Upa.Impl.Uql.Compiledexpression.CompiledVar)e;
     t.SetName(thisAlias);
     return(t);
 }
 public virtual Net.Vpc.Upa.Expressions.CompiledExpression Update(Net.Vpc.Upa.Expressions.CompiledExpression e)
 {
     return(@value);
 }
 public ValueCompiledExpressionReplacer(Net.Vpc.Upa.Expressions.CompiledExpression @value)
 {
     this.@value = @value;
 }
 public RefEqualCompiledExpressionFilter(Net.Vpc.Upa.Expressions.CompiledExpression @value)
 {
     this.@value = @value;
 }
示例#11
0
 public static System.Collections.Generic.IList <Net.Vpc.Upa.Impl.Uql.Compiledexpression.CompiledVar> FindChildrenLeafVars(Net.Vpc.Upa.Expressions.CompiledExpression v)
 {
     return(((Net.Vpc.Upa.Impl.Uql.Compiledexpression.DefaultCompiledExpression)v).FindExpressionsList <T>(Net.Vpc.Upa.Impl.Uql.Compiledfilters.CompiledExpressionFilterLeafVar.INSTANCE));
 }
        public virtual Net.Vpc.Upa.Expressions.CompiledExpression Update(Net.Vpc.Upa.Expressions.CompiledExpression e)
        {
            Net.Vpc.Upa.Impl.Uql.Compiledexpression.IsHierarchyDescendentCompiled o = (Net.Vpc.Upa.Impl.Uql.Compiledexpression.IsHierarchyDescendentCompiled)e;
            Net.Vpc.Upa.Impl.Uql.Compiledexpression.DefaultCompiledExpression     c = o.GetChildExpression();
            Net.Vpc.Upa.Impl.Uql.Compiledexpression.DefaultCompiledExpression     p = o.GetAncestorExpression();
            Net.Vpc.Upa.Impl.Uql.Compiledexpression.CompiledEntityName            n = o.GetEntityName();
            Net.Vpc.Upa.Entity treeEntity = null;
            Net.Vpc.Upa.Field  treeField  = null;
            if (c is Net.Vpc.Upa.Impl.Uql.Compiledexpression.CompiledVar)
            {
                object childReferrer = ((Net.Vpc.Upa.Impl.Uql.Compiledexpression.CompiledVar)c).GetFinest().GetReferrer();
                if (childReferrer != null)
                {
                    if (childReferrer is Net.Vpc.Upa.Entity)
                    {
                        if (treeEntity == null)
                        {
                            treeEntity = (Net.Vpc.Upa.Entity)childReferrer;
                        }
                        else
                        {
                            if (!treeEntity.GetName().Equals(((Net.Vpc.Upa.Entity)childReferrer).GetName()))
                            {
                                throw new System.ArgumentException("Ambiguous or Invalid Type " + treeEntity.GetName() + " in TreeEntity near " + e);
                            }
                        }
                    }
                }
            }
            else if (c is Net.Vpc.Upa.Impl.Uql.Compiledexpression.CompiledParam)
            {
                object co = ((Net.Vpc.Upa.Impl.Uql.Compiledexpression.CompiledParam)c).GetValue();
                if (co != null && persistenceUnit.ContainsEntity(co.GetType()))
                {
                    Net.Vpc.Upa.Entity rr = persistenceUnit.GetEntity(co.GetType());
                    if (treeEntity == null)
                    {
                        treeEntity = rr;
                    }
                    ((Net.Vpc.Upa.Impl.Uql.Compiledexpression.CompiledParam)c).SetValue(rr.GetBuilder().ObjectToId(co));
                }
            }
            //            Object co = ((CompiledParam) c).getEffectiveDataType();
            if (p is Net.Vpc.Upa.Impl.Uql.Compiledexpression.CompiledVar)
            {
                object parentReferrer = ((Net.Vpc.Upa.Impl.Uql.Compiledexpression.CompiledVar)p).GetFinest().GetReferrer();
                if (parentReferrer != null)
                {
                    if (parentReferrer is Net.Vpc.Upa.Entity)
                    {
                        if (treeEntity == null)
                        {
                            treeEntity = (Net.Vpc.Upa.Entity)parentReferrer;
                        }
                        else
                        {
                            if (!treeEntity.GetName().Equals(((Net.Vpc.Upa.Entity)parentReferrer).GetName()))
                            {
                                throw new System.ArgumentException("Ambiguous or Invalid Type " + treeEntity.GetName() + " in TreeEntity near " + e);
                            }
                        }
                    }
                }
            }
            else if (p is Net.Vpc.Upa.Impl.Uql.Compiledexpression.CompiledParam)
            {
                object co = ((Net.Vpc.Upa.Impl.Uql.Compiledexpression.CompiledParam)p).GetValue();
                if (co != null && persistenceUnit.ContainsEntity(co.GetType()))
                {
                    Net.Vpc.Upa.Entity rr = persistenceUnit.FindEntity(co.GetType());
                    if (treeEntity == null)
                    {
                        treeEntity = rr;
                    }
                    ((Net.Vpc.Upa.Impl.Uql.Compiledexpression.CompiledParam)p).SetValue(rr.GetBuilder().ObjectToId(co));
                    if ((rr.GetPrimaryFields()).Count > 1)
                    {
                        throw new System.ArgumentException("Not supported");
                    }
                    ((Net.Vpc.Upa.Impl.Uql.Compiledexpression.CompiledParam)p).SetTypeTransform(Net.Vpc.Upa.Impl.Util.UPAUtils.GetTypeTransformOrIdentity(rr.GetPrimaryFields()[0]));
                }
            }
            //            Object co = ((CompiledParam) c).getEffectiveDataType();
            if (treeEntity == null)
            {
                treeEntity = persistenceUnit.GetEntity(n.GetName());
            }
            Net.Vpc.Upa.Relationship t = Net.Vpc.Upa.Impl.Extension.HierarchicalRelationshipSupport.GetTreeRelationName(treeEntity);
            if (t == null)
            {
                throw new System.ArgumentException("Hierarchy Relationship not found");
            }
            Net.Vpc.Upa.Extensions.HierarchyExtension s = t.GetHierarchyExtension();
            if (s == null)
            {
                throw new System.ArgumentException("Not a valid TreeEntity");
            }
            Net.Vpc.Upa.Field pathField = treeEntity.GetField(s.GetHierarchyPathField());
            string            pathSep   = s.GetHierarchyPathSeparator();

            return(CreateConditionForDeepSearch(c, (Net.Vpc.Upa.Impl.Uql.Compiledexpression.DefaultCompiledExpression)p, true, pathField, pathSep));
        }