public override void VisitQueryModel(QueryModel queryModel) { if (DefaultAssociatedIdentifier != null) queryModel.MainFromClause.ItemName = DefaultAssociatedIdentifier; this.QueryModel = queryModel; var resultOperator = queryModel.ResultOperators.Count != 0 ? queryModel.ResultOperators[0] : null; var aggregateFunction = resultOperator != null && aggregateResultOperatorFunctions.ContainsKey(resultOperator.GetType()) ? aggregateResultOperatorFunctions[resultOperator.GetType()] : null; if (resultOperator is FirstResultOperator || resultOperator is SingleResultOperator) queryModel.BodyClauses.Add(new SkipTakeClause(Expression.Constant(0), Expression.Constant(1))); if (aggregateFunction != null) QueryText.AppendFormat(" return {0} (( ", aggregateFunction); if (!IgnoreFromClause && queryModel.MainFromClause.ItemType != typeof(AQL)) queryModel.MainFromClause.Accept(this, queryModel); VisitBodyClauses(queryModel.BodyClauses, queryModel); if (CrudState.ModelVisitorHaveCrudOperation) { QueryText.AppendFormat(" in {0} ", CrudState.Collection); if (CrudState.ReturnResult) QueryText.AppendFormat(" let crudResult = {0} return crudResult ", CrudState.ReturnResultKind); } else if(!DontReturn) queryModel.SelectClause.Accept(this, queryModel); if (aggregateFunction != null) QueryText.Append(" )) "); }
public virtual void VisitGroupJoinClause (GroupJoinClause groupJoinClause, QueryModel queryModel, int index) { ArgumentUtility.CheckNotNull ("groupJoinClause", groupJoinClause); ArgumentUtility.CheckNotNull ("queryModel", queryModel); groupJoinClause.JoinClause.Accept (this, queryModel, groupJoinClause); }
public virtual void VisitMainFromClause (MainFromClause fromClause, QueryModel queryModel) { ArgumentUtility.CheckNotNull ("fromClause", fromClause); ArgumentUtility.CheckNotNull ("queryModel", queryModel); // nothing to do here }
public virtual void VisitAdditionalFromClause (AdditionalFromClause fromClause, QueryModel queryModel, int index) { ArgumentUtility.CheckNotNull ("fromClause", fromClause); ArgumentUtility.CheckNotNull ("queryModel", queryModel); // nothing to do here }
public virtual void VisitJoinClause (JoinClause joinClause, QueryModel queryModel, int index) { ArgumentUtility.CheckNotNull ("joinClause", joinClause); ArgumentUtility.CheckNotNull ("queryModel", queryModel); // nothing to do here }
protected override QueryModel ApplyNodeSpecificSemantics(QueryModel queryModel, ClauseGenerationContext clauseGenerationContext) { Utils.CheckNotNull("queryModel", queryModel); queryModel.BodyClauses.Add(new SkipTakeClause(Skip, Take)); return queryModel; }
public void Accept(IQueryModelVisitor visitor, QueryModel queryModel, int index) { var aqlVisotor = visitor as AqlModelVisitor; if (aqlVisotor == null) throw new Exception("QueryModelVisitor should be type of AqlModelVisitor"); aqlVisotor.VisitLetClause(this, queryModel, typeof(object)); }
protected override QueryModel ApplyNodeSpecificSemantics(QueryModel queryModel, ClauseGenerationContext clauseGenerationContext) { Utils.CheckNotNull("queryModel", queryModel); queryModel.BodyClauses.Add(new FilterClause(GetResolvedPredicate(clauseGenerationContext))); return queryModel; }
protected override QueryModel ApplyNodeSpecificSemantics(QueryModel queryModel, ClauseGenerationContext clauseGenerationContext) { Utils.CheckNotNull("queryModel", queryModel); var updateClause = queryModel.BodyClauses.First(x => x as IModifyExpressionNode != null) as IModifyExpressionNode; updateClause.CollectionType = CollectionToModify; return queryModel; }
public virtual void VisitQueryModel (QueryModel queryModel) { ArgumentUtility.CheckNotNull ("queryModel", queryModel); queryModel.MainFromClause.Accept (this, queryModel); VisitBodyClauses (queryModel.BodyClauses, queryModel); queryModel.SelectClause.Accept (this, queryModel); VisitResultOperators (queryModel.ResultOperators, queryModel); }
protected override QueryModel ApplyNodeSpecificSemantics(QueryModel queryModel, ClauseGenerationContext clauseGenerationContext) { Utils.CheckNotNull("queryModel", queryModel); queryModel.BodyClauses.Add(new RemoveAndReturnClause( queryModel.MainFromClause.ItemName, (Type)Collection.Value, KeySelector != null ? GetResolvedKeyPredicate(clauseGenerationContext) : null)); return queryModel; }
protected override QueryModel ApplyNodeSpecificSemantics(QueryModel queryModel, ClauseGenerationContext clauseGenerationContext) { Utils.CheckNotNull("queryModel", queryModel); queryModel.BodyClauses.Add(new UpdateAndReturnClause(GetResolvedPredicate(clauseGenerationContext), queryModel.MainFromClause.ItemName, WithSelector.Parameters[0].Type, KeySelector != null ? GetResolvedKeyPredicate(clauseGenerationContext) : null, Command.Value.ToString())); return queryModel; }
public virtual void Accept(IQueryModelVisitor visitor, QueryModel queryModel, int index) { Utils.CheckNotNull("visitor", visitor); Utils.CheckNotNull("queryModel", queryModel); var aqlVisotor = visitor as AqlModelVisitor; if (aqlVisotor == null) throw new Exception("QueryModelVisitor should be type of AqlModelVisitor"); aqlVisotor.VisitFilterClause(this, queryModel, index); }
protected override QueryModel ApplyNodeSpecificSemantics(QueryModel queryModel, ClauseGenerationContext clauseGenerationContext) { Utils.CheckNotNull("queryModel", queryModel); var lastClause = queryModel.BodyClauses.LastOrDefault(); SkipTakeClause skipTakeClause = lastClause as SkipTakeClause; if (skipTakeClause != null) skipTakeClause.TakeCount = Count; else queryModel.BodyClauses.Add(new SkipTakeClause(null, Count)); return queryModel; }
protected override QueryModel ApplyNodeSpecificSemantics(QueryModel queryModel, ClauseGenerationContext clauseGenerationContext) { Utils.CheckNotNull("queryModel", queryModel); queryModel.BodyClauses.Add(new UpsertAndReturnClause( GetResolvedSearchPredicate(clauseGenerationContext), GetResolvedInsertPredicate(clauseGenerationContext), GetResolvedUpdatePredicate(clauseGenerationContext), queryModel.MainFromClause.ItemName, UpdateType.Value as Type )); return queryModel; }
protected override QueryModel ApplyNodeSpecificSemantics(QueryModel queryModel, ClauseGenerationContext clauseGenerationContext) { Utils.CheckNotNull("queryModel", queryModel); var groupByClause = new GroupByClause(GetResolvedSelector(clauseGenerationContext),Selector,intoIdentifier); queryModel.BodyClauses.Add(groupByClause); clauseGenerationContext.AddContextInfo(this, groupByClause); queryModel.SelectClause.Selector = GetResolvedAdaptedSelector(clauseGenerationContext); return queryModel; }
public virtual void VisitOrdering (Ordering ordering, QueryModel queryModel, OrderByClause orderByClause, int index) { ArgumentUtility.CheckNotNull ("ordering", ordering); ArgumentUtility.CheckNotNull ("queryModel", queryModel); ArgumentUtility.CheckNotNull ("orderByClause", orderByClause); // nothing to do here }
public override void VisitJoinClause(JoinClause joinClause, QueryModel queryModel, int index) { base.VisitJoinClause(joinClause, queryModel, index); }
public override void VisitGroupJoinClause(GroupJoinClause groupJoinClause, QueryModel queryModel, int index) { }
protected virtual void VisitResultOperators (ObservableCollection<ResultOperatorBase> resultOperators, QueryModel queryModel) { ArgumentUtility.CheckNotNull ("queryModel", queryModel); ArgumentUtility.CheckNotNull ("resultOperators", resultOperators); foreach (var indexValuePair in resultOperators.AsChangeResistantEnumerableWithIndex()) indexValuePair.Value.Accept (this, queryModel, indexValuePair.Index); }
protected virtual void VisitOrderings (ObservableCollection<Ordering> orderings, QueryModel queryModel, OrderByClause orderByClause) { ArgumentUtility.CheckNotNull ("queryModel", queryModel); ArgumentUtility.CheckNotNull ("orderByClause", orderByClause); ArgumentUtility.CheckNotNull ("orderings", orderings); foreach (var indexValuePair in orderings.AsChangeResistantEnumerableWithIndex()) indexValuePair.Value.Accept (this, queryModel, orderByClause, indexValuePair.Index); }
protected virtual void VisitBodyClauses (ObservableCollection<IBodyClause> bodyClauses, QueryModel queryModel) { ArgumentUtility.CheckNotNull ("queryModel", queryModel); ArgumentUtility.CheckNotNull ("bodyClauses", bodyClauses); foreach (var indexValuePair in bodyClauses.AsChangeResistantEnumerableWithIndex()) indexValuePair.Value.Accept (this, queryModel, indexValuePair.Index); }
public virtual void VisitResultOperator (ResultOperatorBase resultOperator, QueryModel queryModel, int index) { ArgumentUtility.CheckNotNull ("resultOperator", resultOperator); ArgumentUtility.CheckNotNull ("queryModel", queryModel); // nothing to do here }
public override void VisitOrderByClause(OrderByClause orderByClause, QueryModel queryModel, int index) { QueryText.Append(" sort "); for (int i = 0; i < orderByClause.Orderings.Count; i++) { GetAqlExpression(orderByClause.Orderings[i].Expression, queryModel); QueryText.AppendFormat(" {0} {1} ", orderByClause.Orderings[i].OrderingDirection == OrderingDirection.Asc ? "asc" : "desc", i != orderByClause.Orderings.Count - 1 ? " , " : string.Empty); } base.VisitOrderByClause(orderByClause, queryModel, index); }
private void GetAqlExpression(Expression expression, QueryModel queryModel, bool? treatNewWithoutBracket = false, bool? handleJoin = false, bool? handleLet = false) { var visitor = new AqlExpressionTreeVisitor(this); visitor.TreatNewWithoutBracket = treatNewWithoutBracket.Value; visitor.QueryModel = queryModel; visitor.HandleJoin = handleJoin.Value; visitor.HandleLet = handleLet.Value; visitor.VisitExpression(expression); }
public virtual void VisitWhereClause (WhereClause whereClause, QueryModel queryModel, int index) { ArgumentUtility.CheckNotNull ("whereClause", whereClause); ArgumentUtility.CheckNotNull ("queryModel", queryModel); // nothing to do here }
public virtual void VisitSelectClause (SelectClause selectClause, QueryModel queryModel) { ArgumentUtility.CheckNotNull ("selectClause", selectClause); ArgumentUtility.CheckNotNull ("queryModel", queryModel); // nothing to do here }
public void VisitGroupByClause(GroupByClause groupByClause, QueryModel queryModel, int index) { var parentMVisitor = LinqUtility.FindParentModelVisitor(this); parentMVisitor.GroupByNameCounter++; groupByClause.IntoName = "C" + parentMVisitor.GroupByNameCounter; groupByClause.FuncIntoName = Db.Setting.Linq.TranslateGroupByIntoName; groupByClause.FromParameterName = queryModel.MainFromClause.ItemName; QueryText.Append(" collect "); if(groupByClause.Selector.NodeType != ExpressionType.New) { groupByClause.CollectVariableName = "CV" + parentMVisitor.GroupByNameCounter; QueryText.AppendFormat(" {0} = ", LinqUtility.ResolvePropertyName(groupByClause.CollectVariableName)); } GetAqlExpression(groupByClause.Selector, queryModel, true); QueryText.AppendFormat(" into {0} ", LinqUtility.ResolvePropertyName(groupByClause.TranslateIntoName())); groupByClause.Visited = true; }
public virtual void VisitOrderByClause (OrderByClause orderByClause, QueryModel queryModel, int index) { ArgumentUtility.CheckNotNull ("orderByClause", orderByClause); ArgumentUtility.CheckNotNull ("queryModel", queryModel); VisitOrderings (orderByClause.Orderings, queryModel, orderByClause); }
public override void VisitResultOperator(ResultOperatorBase resultOperator, QueryModel queryModel, int index) { if (resultOperator as GroupResultOperator != null) throw new NotSupportedException("GroupResultOperator"); if (resultOperator as TakeResultOperator != null) throw new NotSupportedException("TakeResultOperator"); base.VisitResultOperator(resultOperator, queryModel, index); }