示例#1
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");
         }
     }
 }
示例#2
0
 public Net.Vpc.Upa.Impl.Uql.Compiledexpression.CompiledUpdate AddQuery(Net.Vpc.Upa.Impl.Uql.Compiledexpression.CompiledUpdate other)
 {
     if (other == null)
     {
         return(this);
     }
     if (other.entityName != null)
     {
         this.Entity(((Net.Vpc.Upa.Impl.Uql.Compiledexpression.CompiledEntityName)other.entityName).GetName(), other.entityAlias);
     }
     for (int i = 0; i < (other.fields).Count; i++)
     {
         Net.Vpc.Upa.Impl.Uql.Compiledexpression.CompiledVar fvar = other.GetField(i);
         Net.Vpc.Upa.Field field = (Net.Vpc.Upa.Field)fvar.GetReferrer();
         Net.Vpc.Upa.Impl.Uql.Compiledexpression.DefaultCompiledExpression fieldValue = other.GetFieldValue(i);
         Set(field, fieldValue == null ? null : fieldValue.Copy());
     }
     if (other.condition != null)
     {
         if (condition == null)
         {
             Where(other.condition.Copy());
         }
         else
         {
             Where(new Net.Vpc.Upa.Impl.Uql.Compiledexpression.CompiledAnd(condition, other.condition.Copy()));
         }
     }
     return(this);
 }
示例#3
0
 public static Net.Vpc.Upa.Impl.Util.ExprTypeInfo ResolveExprTypeInfo(Net.Vpc.Upa.Impl.Uql.Compiledexpression.DefaultCompiledExpression e, bool byBrother)
 {
     if (e is Net.Vpc.Upa.Impl.Uql.Compiledexpression.CompiledVarOrMethod)
     {
         e = ((Net.Vpc.Upa.Impl.Uql.Compiledexpression.CompiledVarOrMethod)e).GetFinest();
         object r = ((Net.Vpc.Upa.Impl.Uql.Compiledexpression.CompiledVarOrMethod)e).GetReferrer();
         if (r is Net.Vpc.Upa.Field)
         {
             Net.Vpc.Upa.Types.DataTypeTransform tr = GetTypeTransformOrIdentity(((Net.Vpc.Upa.Field)r));
             Net.Vpc.Upa.Impl.Util.ExprTypeInfo  i  = new Net.Vpc.Upa.Impl.Util.ExprTypeInfo();
             i.SetReferrer(r);
             i.SetTransform(tr);
             if (e is Net.Vpc.Upa.Impl.Uql.Compiledexpression.CompiledVar)
             {
                 Net.Vpc.Upa.Impl.Uql.Compiledexpression.CompiledVar cv = (Net.Vpc.Upa.Impl.Uql.Compiledexpression.CompiledVar)e;
                 i.SetOldReferrer(cv.GetOldReferrer());
             }
             return(i);
         }
     }
     if (e is Net.Vpc.Upa.Impl.Uql.Compiledexpression.CompiledVarVal)
     {
         Net.Vpc.Upa.Impl.Uql.Compiledexpression.CompiledVarOrMethod v = ((Net.Vpc.Upa.Impl.Uql.Compiledexpression.CompiledVarVal)e).GetVar();
         return(ResolveExprTypeInfo(v));
     }
     Net.Vpc.Upa.Types.DataTypeTransform typeTransform = e.GetTypeTransform();
     if (e is Net.Vpc.Upa.Impl.Uql.Compiledexpression.CompiledParam || e is Net.Vpc.Upa.Impl.Uql.Compiledexpression.CompiledLiteral)
     {
         Net.Vpc.Upa.Impl.Uql.Compiledexpression.DefaultCompiledExpression p = e.GetParentExpression();
         if (p is Net.Vpc.Upa.Impl.Uql.Compiledexpression.CompiledVarVal)
         {
             return(ResolveExprTypeInfo(p));
         }
         else
         {
             object @object = (e is Net.Vpc.Upa.Impl.Uql.Compiledexpression.CompiledParam) ? ((Net.Vpc.Upa.Impl.Uql.Compiledexpression.CompiledParam)e).GetValue() : ((Net.Vpc.Upa.Impl.Uql.Compiledexpression.CompiledLiteral)e).GetValue();
             Net.Vpc.Upa.Types.DataType          sourceType = typeTransform.GetSourceType();
             Net.Vpc.Upa.Types.DataTypeTransform bestType   = typeTransform;
             if ((p is Net.Vpc.Upa.Impl.Uql.Compiledexpression.CompiledBinaryOperatorExpression) && (((Net.Vpc.Upa.Impl.Uql.Compiledexpression.CompiledBinaryOperatorExpression)p).IsSameOperandsType()))
             {
                 Net.Vpc.Upa.Impl.Uql.Compiledexpression.DefaultCompiledExpression o = ((Net.Vpc.Upa.Impl.Uql.Compiledexpression.CompiledBinaryOperatorExpression)p).GetOther(e);
                 if (byBrother)
                 {
                     return(ResolveExprTypeInfo(o, false));
                 }
             }
             if (@object != null && (typeTransform.Equals(Net.Vpc.Upa.Impl.Transform.IdentityDataTypeTransform.OBJECT) || !sourceType.IsInstance(@object)))
             {
                 bestType = Net.Vpc.Upa.Impl.Transform.IdentityDataTypeTransform.ForNativeType(@object.GetType());
             }
             Net.Vpc.Upa.Impl.Util.ExprTypeInfo typeInfo1 = new Net.Vpc.Upa.Impl.Util.ExprTypeInfo();
             typeInfo1.SetTransform(bestType);
             return(typeInfo1);
         }
     }
     Net.Vpc.Upa.Impl.Util.ExprTypeInfo typeInfo2 = new Net.Vpc.Upa.Impl.Util.ExprTypeInfo();
     typeInfo2.SetTransform(typeTransform);
     return(typeInfo2);
 }
示例#4
0
 public virtual Net.Vpc.Upa.Impl.Uql.Compiledexpression.CompiledInsert Set(string key, Net.Vpc.Upa.Impl.Uql.Compiledexpression.DefaultCompiledExpression @value)
 {
     Net.Vpc.Upa.Impl.Uql.Compiledexpression.CompiledVar    fName  = new Net.Vpc.Upa.Impl.Uql.Compiledexpression.CompiledVar(key);
     Net.Vpc.Upa.Impl.Uql.Compiledexpression.CompiledVarVal varVal = new Net.Vpc.Upa.Impl.Uql.Compiledexpression.CompiledVarVal(fName, @value);
     fields.Add(varVal);
     PrepareChildren(varVal);
     return(this);
 }
示例#5
0
 public virtual bool Accept(Net.Vpc.Upa.Impl.Uql.Compiledexpression.DefaultCompiledExpression e)
 {
     if (!(e != null && typeof(Net.Vpc.Upa.Impl.Uql.Compiledexpression.CompiledVar).IsInstanceOfType(e)))
     {
         return(false);
     }
     Net.Vpc.Upa.Impl.Uql.Compiledexpression.CompiledVar v = (Net.Vpc.Upa.Impl.Uql.Compiledexpression.CompiledVar)e;
     return(v.GetChild() == null);
 }
示例#6
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);
 }
示例#7
0
 public override void SetSubExpression(int index, Net.Vpc.Upa.Impl.Uql.Compiledexpression.DefaultCompiledExpression expression)
 {
     if (index == 0)
     {
         alias = (Net.Vpc.Upa.Impl.Uql.Compiledexpression.CompiledVar)expression;
         PrepareChildren(expression);
     }
     else
     {
         throw new System.ArgumentException("Invalid index");
     }
 }
示例#8
0
 public virtual bool Accept(Net.Vpc.Upa.Impl.Uql.Compiledexpression.DefaultCompiledExpression e)
 {
     if (e is Net.Vpc.Upa.Impl.Uql.Compiledexpression.CompiledVar)
     {
         Net.Vpc.Upa.Impl.Uql.Compiledexpression.CompiledVar c = (Net.Vpc.Upa.Impl.Uql.Compiledexpression.CompiledVar)e;
         if (c.GetName().Equals("this"))
         {
             return(true);
         }
     }
     return(false);
 }
示例#9
0
 public virtual bool Visit(Net.Vpc.Upa.Impl.Uql.Compiledexpression.DefaultCompiledExpression e)
 {
     if (e is Net.Vpc.Upa.Impl.Uql.Compiledexpression.CompiledVar)
     {
         Net.Vpc.Upa.Impl.Uql.Compiledexpression.CompiledVar v = (Net.Vpc.Upa.Impl.Uql.Compiledexpression.CompiledVar)e;
         if (v.GetReferrer() is Net.Vpc.Upa.Field)
         {
             usedFields.Add((Net.Vpc.Upa.Field)v.GetReferrer());
         }
     }
     return(true);
 }
示例#10
0
 private static string ResolveName(string alias, Net.Vpc.Upa.Impl.Uql.Compiledexpression.DefaultCompiledExpression expression)
 {
     if (alias != null)
     {
         return(alias);
     }
     if (expression is Net.Vpc.Upa.Impl.Uql.Compiledexpression.CompiledVar)
     {
         Net.Vpc.Upa.Impl.Uql.Compiledexpression.CompiledVar         cv = (Net.Vpc.Upa.Impl.Uql.Compiledexpression.CompiledVar)expression;
         Net.Vpc.Upa.Impl.Uql.Compiledexpression.CompiledVarOrMethod dc = cv.GetDeepChild();
         return((dc == null ? ((Net.Vpc.Upa.Impl.Uql.Compiledexpression.CompiledVarOrMethod)(cv)) : dc).GetName());
     }
     return(null);
 }
示例#11
0
 public override Net.Vpc.Upa.Impl.Uql.Compiledexpression.DefaultCompiledExpression Copy()
 {
     Net.Vpc.Upa.Impl.Uql.Compiledexpression.CompiledVar         o = new Net.Vpc.Upa.Impl.Uql.Compiledexpression.CompiledVar(GetName(), GetReferrer());
     Net.Vpc.Upa.Impl.Uql.Compiledexpression.CompiledVarOrMethod c = GetChild();
     if (c != null)
     {
         c = (Net.Vpc.Upa.Impl.Uql.Compiledexpression.CompiledVarOrMethod)c.Copy();
     }
     o.SetChild(c);
     o.SetBinding(GetBinding());
     o.SetDescription(GetDescription());
     o.SetOldReferrer(GetOldReferrer());
     o.GetClientParameters().SetAll(GetClientParameters());
     return(o);
 }
示例#12
0
 public static Net.Vpc.Upa.Impl.Uql.Compiledexpression.CompiledSelect FindEnclosingSelect(Net.Vpc.Upa.Impl.Uql.Compiledexpression.CompiledVar v)
 {
     Net.Vpc.Upa.Impl.Uql.Compiledexpression.DefaultCompiledExpression e = (Net.Vpc.Upa.Impl.Uql.Compiledexpression.DefaultCompiledExpression)v;
     Net.Vpc.Upa.Impl.Uql.Compiledexpression.CompiledVar rv = FindRootVar(v);
     while (e != null)
     {
         if (e is Net.Vpc.Upa.Impl.Uql.Compiledexpression.CompiledSelect)
         {
             Net.Vpc.Upa.Impl.Uql.Compiledexpression.CompiledSelect s = (Net.Vpc.Upa.Impl.Uql.Compiledexpression.CompiledSelect)e;
             string entityAlias = s.GetEntityAlias();
             if (entityAlias != null && (entityAlias).Length > 0)
             {
                 if (rv.GetName().Equals(entityAlias))
                 {
                     return(s);
                 }
             }
             else
             {
                 if (rv.GetName().Equals(s.GetEntityName()))
                 {
                     return(s);
                 }
             }
             foreach (Net.Vpc.Upa.Impl.Uql.Compiledexpression.CompiledJoinCriteria c in s.GetJoins())
             {
                 string joinAlias = c.GetEntityAlias();
                 if (joinAlias != null && (joinAlias).Length > 0)
                 {
                     if (rv.GetName().Equals(joinAlias))
                     {
                         return(s);
                     }
                 }
                 else
                 {
                     if (rv.GetName().Equals(c.GetEntityName()))
                     {
                         return(s);
                     }
                 }
             }
         }
         e = e.GetParentExpression();
     }
     return(null);
 }
示例#13
0
 private static string ResolveBinding(Net.Vpc.Upa.Impl.Uql.Compiledexpression.DefaultCompiledExpression expression)
 {
     if (expression is Net.Vpc.Upa.Impl.Uql.Compiledexpression.CompiledVar)
     {
         Net.Vpc.Upa.Impl.Uql.Compiledexpression.CompiledVar         cv  = (Net.Vpc.Upa.Impl.Uql.Compiledexpression.CompiledVar)expression;
         Net.Vpc.Upa.Impl.Uql.Compiledexpression.CompiledVarOrMethod cv1 = cv.GetDeepChild();
         if (cv1 != null && cv1 is Net.Vpc.Upa.Impl.Uql.Compiledexpression.CompiledVar)
         {
             Net.Vpc.Upa.Impl.Uql.Compiledexpression.DefaultCompiledExpression cv2 = cv1.GetParentExpression();
             if (cv2 != null && cv2 is Net.Vpc.Upa.Impl.Uql.Compiledexpression.CompiledVar)
             {
                 return(((Net.Vpc.Upa.Impl.Uql.Compiledexpression.CompiledVar)cv2).GetChildlessPath());
             }
         }
     }
     return(null);
 }
示例#14
0
        public override void SetSubExpression(int index, Net.Vpc.Upa.Impl.Uql.Compiledexpression.DefaultCompiledExpression expression)
        {
            switch (index)
            {
            case 0:
            {
                var = (Net.Vpc.Upa.Impl.Uql.Compiledexpression.CompiledVar)expression;
                PrepareChildren(var);
                return;
            }

            case 1:
            {
                val = expression;
                PrepareChildren(val);
                return;
            }
            }
            throw new System.Exception("Invalid index");
        }
示例#15
0
        public override string GetSQL(object oo, Net.Vpc.Upa.Persistence.EntityExecutionContext qlContext, Net.Vpc.Upa.Impl.Persistence.SQLManager sqlManager, Net.Vpc.Upa.Impl.Uql.ExpressionDeclarationList declarations) /* throws Net.Vpc.Upa.Exceptions.UPAException */
        {
            Net.Vpc.Upa.Impl.Uql.Compiledexpression.CompiledVar o = (Net.Vpc.Upa.Impl.Uql.Compiledexpression.CompiledVar)oo;
            Net.Vpc.Upa.Persistence.PersistenceStore            persistenceStore = qlContext.GetPersistenceStore();
            object referrer = o.GetReferrer();

            System.Text.StringBuilder sb = new System.Text.StringBuilder();
            if (referrer is Net.Vpc.Upa.Field)
            {
                Net.Vpc.Upa.Field field = (Net.Vpc.Upa.Field)referrer;
                string            name  = persistenceStore.GetPersistenceName(field);
                sb.Append(persistenceStore.GetValidIdentifier(name));
            }
            else if (referrer is Net.Vpc.Upa.Entity)
            {
                Net.Vpc.Upa.Entity entity = (Net.Vpc.Upa.Entity)referrer;
                //            if ("this".equals(o.getName())) {
                //                throw new IllegalArgumentException("Unexpected this alias");
                //                //this must be resolved to the ancestor alias
                //                ExpressionDeclarationList declarationList = o.getDeclarationList();
                //                name = persistenceManager.getPersistenceName(declarationList.getValue(null).getName(), PersistenceNameStrategyNames.ALIAS);
                //            } else {
                string name = persistenceStore.GetPersistenceName(o.GetName(), Net.Vpc.Upa.Persistence.PersistenceNameType.ALIAS);
                sb.Append(persistenceStore.GetValidIdentifier(name));
            }
            else
            {
                string name = persistenceStore.GetPersistenceName(o.GetName(), Net.Vpc.Upa.Persistence.PersistenceNameType.ALIAS);
                sb.Append(persistenceStore.GetValidIdentifier(name));
            }
            if (o.GetChild() != null)
            {
                string cc = GetSQL(o.GetChild(), qlContext, sqlManager, declarations);
                sb.Append(".").Append(cc);
            }
            return(sb.ToString());
        }
示例#16
0
        public override string GetSQL(object oo, Net.Vpc.Upa.Persistence.EntityExecutionContext context, Net.Vpc.Upa.Impl.Persistence.SQLManager sqlManager, Net.Vpc.Upa.Impl.Uql.ExpressionDeclarationList declarations) /* throws Net.Vpc.Upa.Exceptions.UPAException */
        {
            Net.Vpc.Upa.Impl.Uql.Compiledexpression.CompiledUpdate o  = (Net.Vpc.Upa.Impl.Uql.Compiledexpression.CompiledUpdate)oo;
            Net.Vpc.Upa.Persistence.PersistenceStore persistenceStore = context.GetPersistenceStore();
            Net.Vpc.Upa.PersistenceUnit pu     = context.GetPersistenceUnit();
            Net.Vpc.Upa.Entity          entity = pu.GetEntity(o.GetEntity().GetName());
            //        String persistenceName = persistenceStore.getPersistenceName(entity);
            System.Text.StringBuilder sb = new System.Text.StringBuilder("Update " + sqlManager.GetSQL(new Net.Vpc.Upa.Impl.Uql.Compiledexpression.CompiledEntityName(entity.GetName()), context, declarations));
            string tableAlias            = o.GetEntityAlias();

            if (tableAlias != null)
            {
                sb.Append(" ");
                sb.Append(sqlManager.GetSQL(new Net.Vpc.Upa.Impl.Uql.Compiledexpression.CompiledVar(tableAlias), context, declarations));
            }
            sb.Append(" Set ");
            bool isFirst = true;
            int  max     = o.CountFields();

            for (int i = 0; i < max; i++)
            {
                Net.Vpc.Upa.Impl.Uql.Compiledexpression.CompiledVar vv = o.GetField(i);
                Net.Vpc.Upa.Impl.Uql.Compiledexpression.CompiledVar ev = null;
                Net.Vpc.Upa.Impl.Uql.Compiledexpression.CompiledVar fv = null;
                if (vv.GetChild() == null)
                {
                    ev = null;
                    fv = vv;
                }
                else
                {
                    ev = vv;
                    fv = (Net.Vpc.Upa.Impl.Uql.Compiledexpression.CompiledVar)vv.GetChild();
                }
                Net.Vpc.Upa.Impl.Uql.Compiledexpression.DefaultCompiledExpression fieldValue = o.GetFieldValue(i);
                //            Object referrer = vv.getReferrer();
                Net.Vpc.Upa.Field  f             = ((Net.Vpc.Upa.Field)fv.GetReferrer());
                Net.Vpc.Upa.Entity entityManager = f.GetEntity();
                System.Collections.Generic.IList <Net.Vpc.Upa.PrimitiveField> primFields = entityManager.ToPrimitiveFields <Net.Vpc.Upa.EntityPart>(new System.Collections.Generic.List <Net.Vpc.Upa.EntityPart>(new[] { (Net.Vpc.Upa.EntityPart)f }));
                foreach (Net.Vpc.Upa.PrimitiveField primField in primFields)
                {
                    if (isFirst)
                    {
                        isFirst = false;
                    }
                    else
                    {
                        sb.Append(", ");
                    }
                    if (ev != null)
                    {
                        sb.Append(sqlManager.GetSQL(new Net.Vpc.Upa.Impl.Uql.Compiledexpression.CompiledVar(ev.GetName()), context, declarations)).Append(".");
                    }
                    sb.Append(sqlManager.GetSQL(new Net.Vpc.Upa.Impl.Uql.Compiledexpression.CompiledVar(primField), context, declarations));
                    sb.Append("=").Append("(").Append(sqlManager.GetSQL(fieldValue, context, declarations)).Append(")");
                }
            }
            if (o.GetCondition() != null && o.GetCondition().IsValid())
            {
                sb.Append(" Where ").Append(sqlManager.GetSQL(o.GetCondition(), context, declarations));
            }
            if (persistenceStore.IsViewSupported() && entity.NeedsView() && o.GetEntity().IsUseView())
            {
                string implicitTableAlias = persistenceStore.GetPersistenceName("IT_" + entity.GetName(), Net.Vpc.Upa.Persistence.PersistenceNameType.ALIAS);
                sb.Append(" ");
                sb.Append(sqlManager.GetSQL(new Net.Vpc.Upa.Impl.Uql.Compiledexpression.CompiledEntityName(entity.GetName()), context, declarations)).Append(" ").Append(implicitTableAlias).Append(",").Append(sqlManager.GetSQL(new Net.Vpc.Upa.Impl.Uql.Compiledexpression.CompiledEntityName(entity.GetName(), true), context, declarations)).Append(" ").Append(sqlManager.GetSQL(new Net.Vpc.Upa.Impl.Uql.Compiledexpression.CompiledVar(tableAlias), context, declarations));
            }
            //            if (extraFrom != null)
            return(sb.ToString());
        }
 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);
 }
示例#18
0
 public override string GetSQL(object o, Net.Vpc.Upa.Persistence.EntityExecutionContext qlContext, Net.Vpc.Upa.Impl.Persistence.SQLManager sqlManager, Net.Vpc.Upa.Impl.Uql.ExpressionDeclarationList declarations)
 {
     Net.Vpc.Upa.Impl.Uql.Compiledexpression.CompiledKeyEnumerationExpression ee = (Net.Vpc.Upa.Impl.Uql.Compiledexpression.CompiledKeyEnumerationExpression)o;
     Net.Vpc.Upa.Entity entity = null;
     Net.Vpc.Upa.Impl.Uql.Compiledexpression.CompiledVar compiledVar = null;
     if (ee.GetAlias() != null)
     {
         compiledVar = ee.GetAlias();
         entity      = (compiledVar.GetReferrer() is Net.Vpc.Upa.Entity) ? ((Net.Vpc.Upa.Entity)compiledVar.GetReferrer()) : null;
     }
     else
     {
         //check if alias
         System.Collections.Generic.IList <Net.Vpc.Upa.Impl.Uql.ExpressionDeclaration> dvalues = ee.GetDeclarations(null);
         if (dvalues != null)
         {
             foreach (Net.Vpc.Upa.Impl.Uql.ExpressionDeclaration @ref in dvalues)
             {
                 switch (@ref.GetReferrerType())
                 {
                 case Net.Vpc.Upa.Impl.Uql.DecObjectType.ENTITY:
                 {
                     entity = qlContext.GetPersistenceUnit().GetEntity((string)@ref.GetReferrerName());
                     break;
                 }
                 }
             }
         }
     }
     if (entity == null)
     {
         throw new System.ArgumentException("Key enumeration must by associated to and entity");
     }
     if ((ee.GetKeys().Count == 0))
     {
         return(sqlManager.GetSQL(new Net.Vpc.Upa.Impl.Uql.Compiledexpression.CompiledEquals(new Net.Vpc.Upa.Impl.Uql.Compiledexpression.CompiledLiteral(1), new Net.Vpc.Upa.Impl.Uql.Compiledexpression.CompiledLiteral(2)), qlContext, declarations));
     }
     System.Collections.Generic.IList <Net.Vpc.Upa.Field> pfs             = entity.GetPrimaryFields();
     Net.Vpc.Upa.Impl.Uql.Compiledexpression.DefaultCompiledExpression o2 = null;
     foreach (object key in ee.GetKeys())
     {
         Net.Vpc.Upa.Impl.Uql.Compiledexpression.DefaultCompiledExpression a = null;
         bool processed = false;
         if (entity.GetPersistenceUnit().ContainsEntity(entity.GetIdType()))
         {
             if (!entity.GetIdType().IsInstanceOfType(key))
             {
                 //primitive seen as entity?
                 // A's id is A.b where b is an entity
                 //TODO fix all cases!
                 if ((entity.GetPrimaryFields()).Count == 1)
                 {
                     Net.Vpc.Upa.Types.ManyToOneType et = (Net.Vpc.Upa.Types.ManyToOneType)entity.GetPrimaryFields()[0].GetDataType();
                     System.Collections.Generic.IList <Net.Vpc.Upa.Field> ff = et.GetRelationship().GetSourceRole().GetFields();
                     Net.Vpc.Upa.Key key2 = et.GetRelationship().GetTargetEntity().GetBuilder().IdToKey(key);
                     for (int j = 0; j < (ff).Count; j++)
                     {
                         Net.Vpc.Upa.Field f = ff[j];
                         Net.Vpc.Upa.Impl.Uql.Compiledexpression.CompiledVar rr = new Net.Vpc.Upa.Impl.Uql.Compiledexpression.CompiledVar(f);
                         Net.Vpc.Upa.Impl.Uql.Compiledexpression.CompiledVar p2 = compiledVar == null ? null : (Net.Vpc.Upa.Impl.Uql.Compiledexpression.CompiledVar)compiledVar.Copy();
                         if (p2 == null)
                         {
                             p2 = rr;
                         }
                         else
                         {
                             p2.SetChild(rr);
                         }
                         Net.Vpc.Upa.Impl.Uql.Compiledexpression.CompiledEquals v = new Net.Vpc.Upa.Impl.Uql.Compiledexpression.CompiledEquals(p2, new Net.Vpc.Upa.Impl.Uql.Compiledexpression.CompiledLiteral(key2.GetObjectAt(j), Net.Vpc.Upa.Impl.Util.UPAUtils.GetTypeTransformOrIdentity(f)));
                         if (a == null)
                         {
                             a = v;
                         }
                         else
                         {
                             a = new Net.Vpc.Upa.Impl.Uql.Compiledexpression.CompiledAnd(a, v);
                         }
                     }
                     if (o2 == null)
                     {
                         o2 = a;
                     }
                     else
                     {
                         o2 = new Net.Vpc.Upa.Impl.Uql.Compiledexpression.CompiledOr(o2, a);
                     }
                     processed = true;
                 }
             }
         }
         if (!processed)
         {
             Net.Vpc.Upa.Key uKey = entity.GetBuilder().IdToKey(key);
             for (int j = 0; j < (pfs).Count; j++)
             {
                 Net.Vpc.Upa.Field f = pfs[j];
                 Net.Vpc.Upa.Impl.Uql.Compiledexpression.CompiledVar rr = new Net.Vpc.Upa.Impl.Uql.Compiledexpression.CompiledVar(f);
                 Net.Vpc.Upa.Impl.Uql.Compiledexpression.CompiledVar p2 = compiledVar == null ? null : (Net.Vpc.Upa.Impl.Uql.Compiledexpression.CompiledVar)compiledVar.Copy();
                 if (p2 == null)
                 {
                     p2 = rr;
                 }
                 else
                 {
                     p2.SetChild(rr);
                 }
                 Net.Vpc.Upa.Impl.Uql.Compiledexpression.CompiledEquals v = new Net.Vpc.Upa.Impl.Uql.Compiledexpression.CompiledEquals(p2, new Net.Vpc.Upa.Impl.Uql.Compiledexpression.CompiledLiteral(uKey.GetObjectAt(j), Net.Vpc.Upa.Impl.Util.UPAUtils.GetTypeTransformOrIdentity(f)));
                 if (a == null)
                 {
                     a = v;
                 }
                 else
                 {
                     a = new Net.Vpc.Upa.Impl.Uql.Compiledexpression.CompiledAnd(a, v);
                 }
             }
             if (o2 == null)
             {
                 o2 = a;
             }
             else
             {
                 o2 = new Net.Vpc.Upa.Impl.Uql.Compiledexpression.CompiledOr(o2, a);
             }
         }
     }
     return(sqlManager.GetSQL(o2, qlContext, declarations));
 }
示例#19
0
 public CompiledVarVal(Net.Vpc.Upa.Impl.Uql.Compiledexpression.CompiledVar var, Net.Vpc.Upa.Impl.Uql.Compiledexpression.DefaultCompiledExpression val)
 {
     this.var = var;
     this.val = val;
     PrepareChildren(var, val);
 }
 public virtual Net.Vpc.Upa.Expressions.CompiledExpression CreateConditionForDeepSearch(Net.Vpc.Upa.Impl.Uql.Compiledexpression.DefaultCompiledExpression alias, Net.Vpc.Upa.Impl.Uql.Compiledexpression.DefaultCompiledExpression id, bool includeId, Net.Vpc.Upa.Field field, string pathSep) /* throws Net.Vpc.Upa.Exceptions.UPAException */
 {
     alias = alias.Copy();
     if (alias is Net.Vpc.Upa.Impl.Uql.Compiledexpression.CompiledVar)
     {
         Net.Vpc.Upa.Impl.Uql.Compiledexpression.CompiledVar cv = (Net.Vpc.Upa.Impl.Uql.Compiledexpression.CompiledVar)alias;
         if (cv.GetReferrer() is Net.Vpc.Upa.Entity)
         {
             Net.Vpc.Upa.Impl.Uql.Compiledexpression.CompiledVar v = new Net.Vpc.Upa.Impl.Uql.Compiledexpression.CompiledVar(field.GetName());
             ((Net.Vpc.Upa.Impl.Uql.Compiledexpression.CompiledVar)alias).SetChild(v);
         }
         else
         {
             throw new System.ArgumentException("Expected " + field.GetEntity().GetName() + " var name");
         }
     }
     else
     {
         throw new System.ArgumentException("Expected " + field.GetEntity().GetName() + " var name");
     }
     id = id.Copy();
     System.Collections.Generic.IList <Net.Vpc.Upa.Field> primaryFields = field.GetEntity().GetPrimaryFields();
     if ((primaryFields).Count > 1)
     {
         throw new System.ArgumentException("Composite ID unsupported for function treeancestor");
     }
     Net.Vpc.Upa.Types.DataType pkType = primaryFields[0].GetDataType();
     Net.Vpc.Upa.Impl.Uql.Compiledexpression.DefaultCompiledExpression strId = null;
     if (pkType is Net.Vpc.Upa.Types.IntType)
     {
         strId = new Net.Vpc.Upa.Impl.Uql.Compiledexpression.CompiledI2V(id);
     }
     else if (pkType is Net.Vpc.Upa.Types.LongType)
     {
         strId = new Net.Vpc.Upa.Impl.Uql.Compiledexpression.CompiledI2V(id);
     }
     else if (pkType is Net.Vpc.Upa.Types.ShortType)
     {
         strId = new Net.Vpc.Upa.Impl.Uql.Compiledexpression.CompiledI2V(id);
     }
     else if (pkType is Net.Vpc.Upa.Types.ByteType)
     {
         strId = new Net.Vpc.Upa.Impl.Uql.Compiledexpression.CompiledI2V(id);
     }
     else if (pkType is Net.Vpc.Upa.Types.FloatType)
     {
         strId = new Net.Vpc.Upa.Impl.Uql.Compiledexpression.CompiledD2V(id);
     }
     else if (pkType is Net.Vpc.Upa.Types.DoubleType)
     {
         strId = new Net.Vpc.Upa.Impl.Uql.Compiledexpression.CompiledD2V(id);
     }
     else if (pkType is Net.Vpc.Upa.Types.StringType)
     {
         strId = id;
     }
     else
     {
         strId = new Net.Vpc.Upa.Impl.Uql.Compiledexpression.CompiledCast(id, Net.Vpc.Upa.Impl.Transform.IdentityDataTypeTransform.STRING);
     }
     if (includeId)
     {
         return(new Net.Vpc.Upa.Impl.Uql.Compiledexpression.CompiledOr(new Net.Vpc.Upa.Impl.Uql.Compiledexpression.CompiledLike(alias.Copy(), new Net.Vpc.Upa.Impl.Uql.Compiledexpression.CompiledConcat(new Net.Vpc.Upa.Impl.Uql.Compiledexpression.CompiledLiteral("%" + pathSep), strId.Copy())), new Net.Vpc.Upa.Impl.Uql.Compiledexpression.CompiledLike(alias.Copy(), new Net.Vpc.Upa.Impl.Uql.Compiledexpression.CompiledConcat(new Net.Vpc.Upa.Impl.Uql.Compiledexpression.CompiledLiteral("%" + pathSep), strId.Copy(), new Net.Vpc.Upa.Impl.Uql.Compiledexpression.CompiledLiteral(pathSep + "%")))));
     }
     else
     {
         return(new Net.Vpc.Upa.Impl.Uql.Compiledexpression.CompiledLike(alias.Copy(), new Net.Vpc.Upa.Impl.Uql.Compiledexpression.CompiledConcat(new Net.Vpc.Upa.Impl.Uql.Compiledexpression.CompiledLiteral("%" + pathSep), strId.Copy(), new Net.Vpc.Upa.Impl.Uql.Compiledexpression.CompiledLiteral(pathSep + "%"))));
     }
 }
示例#21
0
 public static Net.Vpc.Upa.Impl.Uql.Compiledexpression.CompiledQueryField FindRootCompiledQueryField(Net.Vpc.Upa.Impl.Uql.Compiledexpression.CompiledVar v)
 {
     Net.Vpc.Upa.Impl.Uql.Compiledexpression.DefaultCompiledExpression e = v;
     while (e != null)
     {
         if (e is Net.Vpc.Upa.Impl.Uql.Compiledexpression.CompiledQueryField)
         {
             return((Net.Vpc.Upa.Impl.Uql.Compiledexpression.CompiledQueryField)e);
         }
         e = e.GetParentExpression();
     }
     return(null);
 }
示例#22
0
 public static Net.Vpc.Upa.Impl.Uql.Compiledexpression.CompiledVar FindRootVar(Net.Vpc.Upa.Impl.Uql.Compiledexpression.CompiledVar v)
 {
     while (v != null)
     {
         if (v.GetParentExpression() is Net.Vpc.Upa.Impl.Uql.Compiledexpression.CompiledVar)
         {
             v = (Net.Vpc.Upa.Impl.Uql.Compiledexpression.CompiledVar)v.GetParentExpression();
         }
         else
         {
             break;
         }
     }
     return(v);
 }
示例#23
0
 public virtual Net.Vpc.Upa.Impl.Uql.Compiledexpression.DefaultCompiledExpression TranslateExpression(object x, Net.Vpc.Upa.Impl.Uql.ExpressionTranslationManager manager, Net.Vpc.Upa.Impl.Uql.ExpressionDeclarationList declarations) /* throws Net.Vpc.Upa.Exceptions.UPAException */
 {
     Net.Vpc.Upa.Expressions.IdExpression o = (Net.Vpc.Upa.Expressions.IdExpression)x;
     Net.Vpc.Upa.Impl.Uql.Compiledexpression.DefaultCompiledExpression ret = null;
     Net.Vpc.Upa.Entity entity = null;
     if (o.GetEntity() != null)
     {
         entity = o.GetEntity();
     }
     Net.Vpc.Upa.PersistenceUnit persistenceUnit = manager.GetPersistenceUnit();
     if (entity == null && o.GetEntityName() != null)
     {
         entity = persistenceUnit.GetEntity(o.GetEntityName());
     }
     if (entity == null && o.GetAlias() != null)
     {
         //check if alias
         System.Collections.Generic.IList <Net.Vpc.Upa.Impl.Uql.ExpressionDeclaration> dvalues = declarations.GetDeclarations(null);
         if (dvalues != null)
         {
             foreach (Net.Vpc.Upa.Impl.Uql.ExpressionDeclaration @ref in dvalues)
             {
                 switch (@ref.GetReferrerType())
                 {
                 case Net.Vpc.Upa.Impl.Uql.DecObjectType.ENTITY:
                 {
                     entity = persistenceUnit.GetEntity((string)@ref.GetReferrerName());
                     break;
                 }
                 }
             }
         }
     }
     if (entity == null && o.GetAlias() != null)
     {
         //check if entity
         if (persistenceUnit.ContainsEntity(o.GetAlias()))
         {
             entity = persistenceUnit.GetEntity(o.GetAlias());
         }
     }
     if (entity == null)
     {
         throw new System.ArgumentException("Key enumeration must by associated to and entity");
     }
     Net.Vpc.Upa.Key    key     = entity.GetBuilder().IdToKey(o.GetId());
     object[]           values  = key == null ? null : key.GetValue();
     Net.Vpc.Upa.Entity entity1 = o.GetEntity();
     System.Collections.Generic.IList <Net.Vpc.Upa.PrimitiveField> f = entity1.ToPrimitiveFields <Net.Vpc.Upa.Field>(entity1.GetPrimaryFields());
     for (int i = 0; i < (f).Count; i++)
     {
         Net.Vpc.Upa.Impl.Uql.Compiledexpression.CompiledVar ppp = o.GetAlias() == null ? null : new Net.Vpc.Upa.Impl.Uql.Compiledexpression.CompiledVar(o.GetAlias());
         if (ppp == null)
         {
             ppp = new Net.Vpc.Upa.Impl.Uql.Compiledexpression.CompiledVar(f[i].GetName());
         }
         else
         {
             ppp.SetChild(new Net.Vpc.Upa.Impl.Uql.Compiledexpression.CompiledVar(f[i].GetName()));
         }
         Net.Vpc.Upa.Impl.Uql.Compiledexpression.CompiledEquals e = new Net.Vpc.Upa.Impl.Uql.Compiledexpression.CompiledEquals(ppp, new Net.Vpc.Upa.Impl.Uql.Compiledexpression.CompiledLiteral(values == null ? null : values[i], Net.Vpc.Upa.Impl.Util.UPAUtils.GetTypeTransformOrIdentity(f[i])));
         ret = (ret == null) ? ((Net.Vpc.Upa.Impl.Uql.Compiledexpression.DefaultCompiledExpression)(e)) : new Net.Vpc.Upa.Impl.Uql.Compiledexpression.CompiledAnd(ret, e);
     }
     if (ret == null)
     {
         ret = new Net.Vpc.Upa.Impl.Uql.Compiledexpression.CompiledEquals(new Net.Vpc.Upa.Impl.Uql.Compiledexpression.CompiledLiteral(1), new Net.Vpc.Upa.Impl.Uql.Compiledexpression.CompiledLiteral(1));
     }
     return(ret);
 }
示例#24
0
 public CompiledKeyEnumerationExpression(System.Collections.Generic.IList <object> keys, Net.Vpc.Upa.Impl.Uql.Compiledexpression.CompiledVar alias)
 {
     this.keys  = keys;
     this.alias = alias;
     PrepareChildren(alias);
 }