protected internal virtual object Eval(Net.Vpc.Upa.Impl.Uql.Compiledexpression.DefaultCompiledExpression o) { if (o == null) { return(null); } if (o is Net.Vpc.Upa.Impl.Uql.Compiledexpression.CompiledQLFunctionExpression) { Net.Vpc.Upa.Impl.Uql.Compiledexpression.CompiledQLFunctionExpression s = (Net.Vpc.Upa.Impl.Uql.Compiledexpression.CompiledQLFunctionExpression)o; int argumentsCount = s.GetArgumentsCount(); object[] args = new object[argumentsCount]; for (int i = 0; i < args.Length; i++) { args[i] = Eval(s.GetArgument(i)); } return(s.GetHandler().Eval(new Net.Vpc.Upa.EvalContext(s.GetName(), args, persistenceUnit))); } if (o is Net.Vpc.Upa.Impl.Uql.Compiledexpression.CompiledLiteral) { return(((Net.Vpc.Upa.Impl.Uql.Compiledexpression.CompiledLiteral)o).GetValue()); } if (o is Net.Vpc.Upa.Impl.Uql.Compiledexpression.CompiledParam) { return(((Net.Vpc.Upa.Impl.Uql.Compiledexpression.CompiledParam)o).GetValue()); } return(o); }
protected internal virtual object Eval(Net.Vpc.Upa.Impl.Uql.Compiledexpression.DefaultCompiledExpression o, Net.Vpc.Upa.Persistence.EntityExecutionContext qlContext) { if (o == null) { return(null); } if (o is Net.Vpc.Upa.Impl.Uql.Compiledexpression.CompiledQLFunctionExpression) { Net.Vpc.Upa.Impl.Uql.Compiledexpression.CompiledQLFunctionExpression s = (Net.Vpc.Upa.Impl.Uql.Compiledexpression.CompiledQLFunctionExpression)o; int argumentsCount = s.GetArgumentsCount(); object[] args = new object[argumentsCount]; for (int i = 0; i < args.Length; i++) { args[i] = Eval(s.GetArgument(i), qlContext); } return(s.GetHandler().Eval(new Net.Vpc.Upa.EvalContext(s.GetName(), args, qlContext.GetPersistenceUnit()))); } if (o is Net.Vpc.Upa.Impl.Uql.Compiledexpression.CompiledLiteral) { return(((Net.Vpc.Upa.Impl.Uql.Compiledexpression.CompiledLiteral)o).GetValue()); } if (o is Net.Vpc.Upa.Impl.Uql.Compiledexpression.CompiledParam) { return(((Net.Vpc.Upa.Impl.Uql.Compiledexpression.CompiledParam)o).GetValue()); } throw new System.ArgumentException("Unable to evaluate type " + o.GetType() + " :: " + o); }
public static Net.Vpc.Upa.Impl.Uql.Compiledexpression.DefaultCompiledExpression ToExpression(object e, System.Type defaultInstance) { if (e == null) { return new Net.Vpc.Upa.Impl.Uql.Compiledexpression.CompiledLiteral(null, null); } else if (e is Net.Vpc.Upa.Impl.Uql.Compiledexpression.DefaultCompiledExpression) { return (Net.Vpc.Upa.Impl.Uql.Compiledexpression.DefaultCompiledExpression) e; } else if ((e.GetType()).IsArray) { int l = ((System.Array)(e)).Length; Net.Vpc.Upa.Impl.Uql.Compiledexpression.DefaultCompiledExpression[] eitems = new Net.Vpc.Upa.Impl.Uql.Compiledexpression.DefaultCompiledExpression[l]; for (int i = 0; i < eitems.Length; i++) { eitems[i] = ToExpression(((System.Array)(e)).GetValue(i), defaultInstance); } return eitems.Length == 1 ? ((Net.Vpc.Upa.Impl.Uql.Compiledexpression.DefaultCompiledExpression)(eitems[0])) : new Net.Vpc.Upa.Impl.Uql.Compiledexpression.CompiledUplet(eitems); } else { System.Reflection.ConstructorInfo c = null; try { c = defaultInstance.GetConstructor(new System.Type[] { e.GetType() }); } catch (System.Exception e1) { try { c = defaultInstance.GetConstructor(new System.Type[] { typeof(object) }); } catch (System.Exception e2) { throw new System.ArgumentException ("Could not cast " + e + " as Expression"); } } try { return (Net.Vpc.Upa.Impl.Uql.Compiledexpression.DefaultCompiledExpression) c.Invoke(new object[] { e }); } catch (System.Exception e1) { throw new System.ArgumentException (e1.ToString()); } } }
public virtual Net.Vpc.Upa.Impl.Uql.Compiledexpression.DefaultCompiledExpression TranslateAny(Net.Vpc.Upa.Expressions.Expression o, Net.Vpc.Upa.Impl.Uql.ExpressionDeclarationList declarations) { if (o == null) { return(null); } object o0 = o; while (true) { Net.Vpc.Upa.Impl.Uql.ExpressionTranslator p = expressionProviders.Get(o0.GetType()); if (p == null) { throw new System.ArgumentException("No compiler found for " + o0.GetType()); } Net.Vpc.Upa.Impl.Uql.Compiledexpression.DefaultCompiledExpression e = p.TranslateExpression(o0, this, declarations); if (e == null) { throw new System.NullReferenceException(); } if (e is Net.Vpc.Upa.Impl.Uql.Compiledexpression.CompiledExpandableExpression) { e = ((Net.Vpc.Upa.Impl.Uql.Compiledexpression.CompiledExpandableExpression)e).Expand(persistenceUnit); } if (e == null) { throw new System.NullReferenceException(); } if (e == o0) { return(e); } o0 = e; } }
public override void SetSubExpression(int index, Net.Vpc.Upa.Impl.Uql.Compiledexpression.DefaultCompiledExpression expression) { switch (index) { case 0: { if (left != expression) { left = expression; PrepareChildren(left); } break; } case 1: { if (right != expression) { right = expression; PrepareChildren(right); } break; } default: { throw new System.ArgumentException(); } } }
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); }
public override void SetSubExpression(int index, Net.Vpc.Upa.Impl.Uql.Compiledexpression.DefaultCompiledExpression expression) { switch (index) { case 0: { left = expression; PrepareChildren(expression); break; } case 1: { min = expression; PrepareChildren(expression); break; } case 2: { max = expression; PrepareChildren(expression); break; } default: { throw new System.ArgumentException("Invalid index"); } } }
public virtual Net.Vpc.Upa.Impl.Uql.Compiledexpression.DefaultCompiledExpression CompileExpression(Net.Vpc.Upa.Expressions.Expression expression, Net.Vpc.Upa.Persistence.ExpressionCompilerConfig config) { if (/*IsLoggable=*/ true) { } //expected api 1.2.1 // log.log(Level.FINE,"Compiling Expression " + expression); if (expression == null) { throw new System.NullReferenceException("Null Expression could not be compiled"); } Net.Vpc.Upa.Impl.Uql.ExpressionDeclarationList dec = new Net.Vpc.Upa.Impl.Uql.DefaultExpressionDeclarationList(null); if (config.GetAliasToEntityContext() != null) { foreach (System.Collections.Generic.KeyValuePair <string, string> entry in new System.Collections.Generic.HashSet <System.Collections.Generic.KeyValuePair <string, string> >(config.GetAliasToEntityContext())) { // check entity existence persistenceUnit.GetEntity((entry).Value); dec.ExportDeclaration((entry).Key, Net.Vpc.Upa.Impl.Uql.DecObjectType.ENTITY, (entry).Value, null); } } Net.Vpc.Upa.Impl.Uql.Compiledexpression.DefaultCompiledExpression s = TranslateAny(expression, dec); if (s is Net.Vpc.Upa.Impl.Uql.Compiledexpression.CompiledQueryStatement) { Net.Vpc.Upa.Impl.Uql.Compiledexpression.CompiledQueryStatement qs = (Net.Vpc.Upa.Impl.Uql.Compiledexpression.CompiledQueryStatement)s; System.Collections.Generic.IList <Net.Vpc.Upa.Impl.Uql.Compiledexpression.CompiledQueryField> fields = qs.GetFields(); for (int i = 0; i < (fields).Count; i++) { Net.Vpc.Upa.Impl.Uql.Compiledexpression.CompiledQueryField field = fields[i]; field.SetIndex(i); } } return(s); }
public CompiledBinaryOperatorExpression(Net.Vpc.Upa.Expressions.BinaryOperator @operator, Net.Vpc.Upa.Impl.Uql.Compiledexpression.DefaultCompiledExpression left, Net.Vpc.Upa.Impl.Uql.Compiledexpression.DefaultCompiledExpression right) { this.left = left; this.right = right; Net.Vpc.Upa.Types.DataTypeTransform leftType = null; Net.Vpc.Upa.Types.DataTypeTransform rightType = null; if (left != null && left.GetTypeTransform() != null && !left.GetTypeTransform().GetSourceType().GetPlatformType().Equals(typeof(object))) { leftType = left.GetTypeTransform(); } if (right != null && right.GetTypeTransform() != null && !right.GetTypeTransform().GetSourceType().GetPlatformType().Equals(typeof(object))) { rightType = right.GetTypeTransform(); } if (leftType == null && rightType != null) { left.SetTypeTransform(rightType); } else if (rightType == null && leftType != null) { right.SetTypeTransform(leftType); } this.@operator = @operator; PrepareChildren(left, right); }
public CompiledBetween(Net.Vpc.Upa.Impl.Uql.Compiledexpression.DefaultCompiledExpression expression, Net.Vpc.Upa.Impl.Uql.Compiledexpression.DefaultCompiledExpression min, Net.Vpc.Upa.Impl.Uql.Compiledexpression.DefaultCompiledExpression max) { this.left = expression; this.min = min; this.max = max; PrepareChildren(left, min, max); }
protected internal virtual void AppendWhere(Net.Vpc.Upa.Impl.Uql.Compiledexpression.DefaultCompiledExpression cond, System.Text.StringBuilder sb, Net.Vpc.Upa.Persistence.EntityExecutionContext context, Net.Vpc.Upa.Impl.Persistence.SQLManager sqlManager, Net.Vpc.Upa.Impl.Uql.ExpressionDeclarationList declarations) { if (cond != null && cond.IsValid()) { sb.Append(" Where ").Append(sqlManager.GetSQL(cond, context, declarations)); } }
public override Net.Vpc.Upa.Types.DataTypeTransform GetEffectiveDataType() { Net.Vpc.Upa.Types.DataTypeTransform d = GetTypeTransform(); Net.Vpc.Upa.Impl.Uql.Compiledexpression.DefaultCompiledExpression p = GetParentExpression(); if (p is Net.Vpc.Upa.Impl.Uql.Compiledexpression.CompiledVarVal) { Net.Vpc.Upa.Impl.Uql.Compiledexpression.CompiledVarOrMethod v = ((Net.Vpc.Upa.Impl.Uql.Compiledexpression.CompiledVarVal)p).GetVar(); v = ((Net.Vpc.Upa.Impl.Uql.Compiledexpression.CompiledVarOrMethod)v).GetFinest(); object r = v.GetReferrer(); if (r is Net.Vpc.Upa.Field) { return(Net.Vpc.Upa.Impl.Util.UPAUtils.GetTypeTransformOrIdentity((Net.Vpc.Upa.Field)r)); } } else if ((p is Net.Vpc.Upa.Impl.Uql.Compiledexpression.CompiledEquals) || (p is Net.Vpc.Upa.Impl.Uql.Compiledexpression.CompiledDifferent)) { Net.Vpc.Upa.Impl.Uql.Compiledexpression.DefaultCompiledExpression o = ((Net.Vpc.Upa.Impl.Uql.Compiledexpression.CompiledBinaryOperatorExpression)p).GetOther(this); if (o is Net.Vpc.Upa.Impl.Uql.Compiledexpression.CompiledVarOrMethod) { o = ((Net.Vpc.Upa.Impl.Uql.Compiledexpression.CompiledVarOrMethod)o).GetFinest(); object r = ((Net.Vpc.Upa.Impl.Uql.Compiledexpression.CompiledVarOrMethod)o).GetReferrer(); if (r is Net.Vpc.Upa.Field) { return(Net.Vpc.Upa.Impl.Util.UPAUtils.GetTypeTransformOrIdentity((Net.Vpc.Upa.Field)r)); } } } return(d); }
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); }
protected internal virtual void AppendHaving(Net.Vpc.Upa.Impl.Uql.Compiledexpression.CompiledSelect o, System.Text.StringBuilder sb, Net.Vpc.Upa.Persistence.EntityExecutionContext context, Net.Vpc.Upa.Impl.Persistence.SQLManager sqlManager, Net.Vpc.Upa.Impl.Uql.ExpressionDeclarationList declarations) { Net.Vpc.Upa.Impl.Uql.Compiledexpression.DefaultCompiledExpression hav = o.GetHaving(); if (hav != null && hav.IsValid()) { sb.Append(" Having ").Append(sqlManager.GetSQL(hav, context, declarations)); } }
public virtual bool Visit(Net.Vpc.Upa.Impl.Uql.Compiledexpression.DefaultCompiledExpression e) { if (filter == null || filter.Accept(e)) { expressions.Add(e); } return(true); }
public override void SetSubExpression(int index, Net.Vpc.Upa.Impl.Uql.Compiledexpression.DefaultCompiledExpression expression) { if (index == 0) { SetChild((Net.Vpc.Upa.Impl.Uql.Compiledexpression.CompiledVarOrMethod)expression); } throw new System.Exception(); }
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); }
public void SetCondition(Net.Vpc.Upa.Impl.Uql.Compiledexpression.DefaultCompiledExpression expression) { if (this.condition != null) { this.condition.UnsetParent(); } this.condition = expression; PrepareChildren(expression); }
public IsHierarchyDescendentCompiled(Net.Vpc.Upa.Impl.Uql.Compiledexpression.DefaultCompiledExpression ancestorExpression, Net.Vpc.Upa.Impl.Uql.Compiledexpression.DefaultCompiledExpression childExpression, Net.Vpc.Upa.Impl.Uql.Compiledexpression.CompiledEntityName entityName) : base("treeAncestor") { this.ancestorExpression = ancestorExpression; this.childExpression = childExpression; this.entityName = entityName; ProtectedAddArgument(ancestorExpression); ProtectedAddArgument(childExpression); ProtectedAddArgument(entityName); }
protected internal virtual void ProtectedAddArgument(Net.Vpc.Upa.Impl.Uql.Compiledexpression.DefaultCompiledExpression e) { if (e == null) { throw new System.ArgumentException(); } expressions.Add(e); PrepareChildren(e); }
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.CompiledPlus o = (Net.Vpc.Upa.Impl.Uql.Compiledexpression.CompiledPlus)oo; System.Type t1 = o.GetLeft().GetTypeTransform().GetTargetType().GetPlatformType(); System.Type t2 = o.GetRight().GetTypeTransform().GetTargetType().GetPlatformType(); bool s0 = o.GetTypeTransform().GetTargetType().GetPlatformType().Equals(typeof(string)); bool s1 = t1.Equals(typeof(string)); bool s2 = t2.Equals(typeof(string)); if (s0 || s1 || s2) { Net.Vpc.Upa.Impl.Uql.Compiledexpression.DefaultCompiledExpression c1 = o.GetLeft().Copy(); Net.Vpc.Upa.Impl.Uql.Compiledexpression.DefaultCompiledExpression c2 = o.GetRight().Copy(); c1.SetParentExpression(null); c2.SetParentExpression(null); if (!s1) { if (Net.Vpc.Upa.Impl.Util.PlatformUtils.IsAnyInteger(t1)) { c1 = new Net.Vpc.Upa.Impl.Uql.Compiledexpression.CompiledI2V(c1.Copy()); } else if (Net.Vpc.Upa.Impl.Util.PlatformUtils.IsAnyFloat(t1)) { c1 = new Net.Vpc.Upa.Impl.Uql.Compiledexpression.CompiledI2V(c1.Copy()); } else { throw new System.ArgumentException("Unsupported"); } } if (!s2) { if (Net.Vpc.Upa.Impl.Util.PlatformUtils.IsAnyInteger(t2)) { c2 = new Net.Vpc.Upa.Impl.Uql.Compiledexpression.CompiledI2V(c2.Copy()); } else if (Net.Vpc.Upa.Impl.Util.PlatformUtils.IsAnyFloat(t2)) { c2 = new Net.Vpc.Upa.Impl.Uql.Compiledexpression.CompiledI2V(c2.Copy()); } else { throw new System.ArgumentException("Unsupported"); } } Net.Vpc.Upa.Impl.Uql.Compiledexpression.CompiledConcat cc = new Net.Vpc.Upa.Impl.Uql.Compiledexpression.CompiledConcat(c1, c2); return(sqlManager.GetSQL(cc, qlContext, declarations)); } string leftValue = o.GetLeft() != null?sqlManager.GetSQL(o.GetLeft(), qlContext, declarations) : "NULL"; string rightValue = o.GetRight() != null?sqlManager.GetSQL(o.GetRight(), qlContext, declarations) : "NULL"; string s = null; s = leftValue + " + " + rightValue; return("(" + s + ")"); }
public virtual Net.Vpc.Upa.Impl.Uql.Compiledexpression.DefaultCompiledExpression ReplaceExpressions(Net.Vpc.Upa.Impl.Uql.CompiledExpressionFilter filter, Net.Vpc.Upa.Impl.Uql.CompiledExpressionReplacer replacer) { Net.Vpc.Upa.Impl.Uql.Compiledexpression.DefaultCompiledExpression t = (Net.Vpc.Upa.Impl.Uql.Compiledexpression.DefaultCompiledExpression)((filter == null || filter.Accept(this)) ? replacer.Update(this) : null); bool updated = false; if (t != null) { updated = true; } else { t = this; } if (!updated) { System.Collections.Generic.IList <Net.Vpc.Upa.Impl.Uql.Compiledexpression.ReplacementPosition> replacementPositions = new System.Collections.Generic.List <Net.Vpc.Upa.Impl.Uql.Compiledexpression.ReplacementPosition>(); int i = 0; Net.Vpc.Upa.Impl.Uql.Compiledexpression.DefaultCompiledExpression[] subExpressions = t.GetSubExpressions(); if (subExpressions != null) { foreach (Net.Vpc.Upa.Impl.Uql.Compiledexpression.DefaultCompiledExpression expression in subExpressions) { replacementPositions.Add(new Net.Vpc.Upa.Impl.Uql.Compiledexpression.ReplacementPosition(t, expression, i)); i++; } } foreach (Net.Vpc.Upa.Impl.Uql.Compiledexpression.ReplacementPosition r in replacementPositions) { if (r.GetChild() == null) { } else { Net.Vpc.Upa.Impl.Uql.Compiledexpression.DefaultCompiledExpression c = r.GetChild().ReplaceExpressions(filter, replacer); if (c != null) { int pos = r.GetPos(); // if (!updated) { // t = t.copy(); // } if (subExpressions[pos] != c) { subExpressions[pos].SetParentExpression(null); t.SetSubExpression(pos, c); } updated = true; } } } } if (updated) { return(t); } return(null); }
public virtual Net.Vpc.Upa.Impl.Persistence.RebuildExpressionInfo RebuildExpression(Net.Vpc.Upa.ExpressionFormula persistFormula) { Net.Vpc.Upa.Expressions.Expression e = ((Net.Vpc.Upa.ExpressionFormula)persistFormula).GetExpression(); Net.Vpc.Upa.Impl.Persistence.RebuildExpressionInfo rr = new Net.Vpc.Upa.Impl.Persistence.RebuildExpressionInfo(); rr.initialFormula = ((Net.Vpc.Upa.ExpressionFormula)persistFormula); Net.Vpc.Upa.Expressions.Expression e0 = e; Net.Vpc.Upa.Persistence.ExpressionCompilerConfig config = new Net.Vpc.Upa.Persistence.ExpressionCompilerConfig(); config.SetExpandEntityFilter(false); //this is needed not to fire "this" alias usage exception config.SetThisAlias("this"); config.BindAliastoEntity("this", field.GetEntity().GetName()); Net.Vpc.Upa.Impl.Uql.Compiledexpression.DefaultCompiledExpression ce = null; Net.Vpc.Upa.ExpressionManager expressionManager = field.GetEntity().GetPersistenceUnit().GetExpressionManager(); try { ce = (Net.Vpc.Upa.Impl.Uql.Compiledexpression.DefaultCompiledExpression)expressionManager.CompileExpression(e, config); } catch (System.ArgumentException ex) { if ((ex).Message.StartsWith("No enclosing Select found for")) { Net.Vpc.Upa.Expressions.Select ss = new Net.Vpc.Upa.Expressions.Select(); ss.Field(e).From(field.GetEntity().GetName(), "this2"); Net.Vpc.Upa.Expressions.Expression w = null; foreach (Net.Vpc.Upa.Field primaryField in field.GetEntity().GetPrimaryFields()) { Net.Vpc.Upa.Expressions.Expression pfe = new Net.Vpc.Upa.Expressions.Equals(new Net.Vpc.Upa.Expressions.UserExpression("this." + primaryField.GetName()), new Net.Vpc.Upa.Expressions.UserExpression("this2." + primaryField.GetName())); if (w == null) { w = pfe; } else { w = new Net.Vpc.Upa.Expressions.And(w, pfe); } } Net.Vpc.Upa.Impl.Uql.Util.UQLUtils.ReplaceThisVar(ss, "this2", expressionManager); ss.Where(w); e = ss; } else { throw ex; } } //throw new IllegalArgumentException("No enclosing Select found for " + v) if (ce == null) { ce = (Net.Vpc.Upa.Impl.Uql.Compiledexpression.DefaultCompiledExpression)expressionManager.CompileExpression(e, config); rr.compiledExpression = ce; rr.rebuiltFormula = (new Net.Vpc.Upa.ExpressionFormula(e)); } else { rr.compiledExpression = ce; } rr.expression = e; return(rr); }
public override void SetSubExpression(int index, Net.Vpc.Upa.Impl.Uql.Compiledexpression.DefaultCompiledExpression expression) { if (index < left.Length) { left[index] = expression; } else { query = (Net.Vpc.Upa.Impl.Uql.Compiledexpression.CompiledSelect)expression; } }
public virtual Net.Vpc.Upa.Impl.Uql.Compiledexpression.DefaultCompiledExpression[] GetArguments() { int max = GetArgumentsCount(); Net.Vpc.Upa.Impl.Uql.Compiledexpression.DefaultCompiledExpression[] p = new Net.Vpc.Upa.Impl.Uql.Compiledexpression.DefaultCompiledExpression[max]; for (int i = 0; i < max; i++) { p[i] = GetArgument(i); } return(p); }
public virtual int IndexOf(Net.Vpc.Upa.Impl.Uql.Compiledexpression.DefaultCompiledExpression field) { for (int i = 0; i < (items).Count; i++) { if (items[i].GetExpression().Equals(field)) { return(i); } } return(-1); }
protected internal virtual Net.Vpc.Upa.Impl.Uql.Compiledexpression.CompiledURShift CompileURShift(Net.Vpc.Upa.Expressions.URShift v, Net.Vpc.Upa.Impl.Uql.ExpressionTranslationManager manager, Net.Vpc.Upa.Impl.Uql.ExpressionDeclarationList declarations) { if (v == null) { return(null); } Net.Vpc.Upa.Impl.Uql.Compiledexpression.DefaultCompiledExpression left = manager.TranslateAny(v.GetLeft(), declarations); Net.Vpc.Upa.Impl.Uql.Compiledexpression.DefaultCompiledExpression right = manager.TranslateAny(v.GetRight(), declarations); Net.Vpc.Upa.Impl.Uql.Compiledexpression.CompiledURShift s = new Net.Vpc.Upa.Impl.Uql.Compiledexpression.CompiledURShift(left, right); // s.setDeclarationList(new ExpressionDeclarationList(declarations)); return(s); }
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); }
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); }
public override Net.Vpc.Upa.Impl.Uql.Compiledexpression.DefaultCompiledExpression Copy() { Net.Vpc.Upa.Impl.Uql.Compiledexpression.DefaultCompiledExpression[] expressions1 = new Net.Vpc.Upa.Impl.Uql.Compiledexpression.DefaultCompiledExpression[expressions.Length]; for (int i = 0; i < expressions.Length; i++) { expressions1[i] = expressions[i].Copy(); } Net.Vpc.Upa.Impl.Uql.Compiledexpression.CompiledStrFormat o = new Net.Vpc.Upa.Impl.Uql.Compiledexpression.CompiledStrFormat((string)pattern.GetValue(), expressions1); o.SetDescription(GetDescription()); o.GetClientParameters().SetAll(GetClientParameters()); return(o); }