public virtual IJqlClause VisitJql(JqlExpression clause) { var changed = false; IJqlClause filter = null; OrderByExpression orderBy = null; if (clause.Filter != null) { filter = Visit(clause.Filter); changed |= filter != clause.Filter; } if (clause.OrderBy != null) { orderBy = (OrderByExpression)Visit(clause.OrderBy); changed |= orderBy != clause.OrderBy; } return(changed ? new JqlExpression { Filter = filter, OrderBy = orderBy } : clause); }
public virtual IJqlClause VisitOrderBy(OrderByExpression clause) { var changed = false; var fieldOrderings = new FieldOrdering[clause.Fields.Length]; for (var i = 0; i < clause.Fields.Length; ++i) { var field = clause.Fields[i]; fieldOrderings[i] = new FieldOrdering { Field = Visit(field.Field), Order = field.Order }; changed |= fieldOrderings[i].Field != field.Field; } return(changed ? new OrderByExpression { Fields = fieldOrderings } : clause); }