private string GetFilter(QueryFilterCollection queryFilterCollection) { StringBuilder builder = new StringBuilder(); if (queryFilterCollection.QueryFilters.Count > 0) { builder.AppendLine() .Append("Filter("); int index; for (index = 0; index < queryFilterCollection.QueryFilters.Count; index++) { SetQueryFilter(builder, queryFilterCollection.QueryFilters[index], index, queryFilterCollection.QueryFilters.Count - 1); } for (var f = 0; f < queryFilterCollection.Groups.Count; f++) { builder.Append(" ").Append(queryFilterCollection.Groups[f].GroupingOperator != EGroupOperator.None ? queryFilterCollection.Groups[f].GroupingOperator : EGroupOperator.And).Append(" ("); for (index = 0; index < queryFilterCollection.Groups[f].QueryFilters.Count; index++) { SetQueryFilter(builder, queryFilterCollection.Groups[f].QueryFilters[index], index, queryFilterCollection.Groups[f].QueryFilters.Count - 1); } builder.Append(")"); } builder.Append(")"); } return(builder.ToString()); }
public void UserExceptionTest() { try { var filters = new QueryFilterCollection(); filters.QueryFilters.Add(new QueryFilter() { FieldName = "RandomName", GroupOperator = EGroupOperator.And, SearchingOperator = EFilterOperator.Contains, SearchingValue = 2 }); var sort = new SortingName[] { new SortingName() { ItemName = "OtherRandomName", Order = "DESC" } }; var parameters = base.GetDataParameters(ItemName, EQueryType.GridView, 0, 0, filters, sort); var result = base.Execute(() => SchemaData.GetDataAsync(parameters).Result, (t) => this.GetResultString(t), this.GetType()); } catch (AggregateException ex) { if (!(ex.InnerException is ALexException)) { throw ex; } } }
public override void PushFilter(LogicalOperationStrict?operation) { _currentFilter = _currentFilter.PushCollection(); if (operation.HasValue) { _currentFilter.LogicalOperation = operation.Value; } }
public void Initialize() { var queryFilterCollection = new QueryFilterCollection { new QueryFilter(x => x.Name, "Food") }; string json = JsonConvert.SerializeObject(queryFilterCollection); StringAssert.Contains("{\"item_name\":\"Food\"}", json); }
public override void PopFilter() { // handle situations with boolean columns being used as logical operation, e.g.: // .Where(item => item.Column<bool>("IsActive")) // since no comparison operator is set up re-linq will not call VisitBinary() if (null == _currentFilter.Current && !string.IsNullOrEmpty(_filterColumn)) { _currentFilter.AddFilter(new QueryFilterData(_filterColumn, true, FilterComparisonType.Equal)); } _currentFilter = _currentFilter.TryUniteWithParent(); }
/// <summary> /// Gets the object to user with a String and parameters collection. /// </summary> /// <param name="filters">Entity to get the parameters.</param> /// <typeparam name="E">Entity type.</typeparam> /// <returns></returns> internal static FilterParameters GetFilterExpression <E>(QueryFilterCollection filters) { // Object array for parameters. var objects = new object[0]; // Filter statements. System.Text.StringBuilder filterExpressionBuilder = new System.Text.StringBuilder(); if (filters != null && filters.QueryFilters != null) { // Gets the properties contained in the entity and match with the filter statement in requets. var properties = (from property in typeof(E).GetProperties() join filter in filters.QueryFilters on property.Name equals filter.FieldName select new { Name = property.Name, Type = property.PropertyType, DeclaredValue = filter.SearchingValue, Operator = filter.SearchingOperator }).ToArray(); // Looks for the whole array. for (int i = 0; i < properties.Length; i++) { // Gets the value from the property in the filter statement. var value = EntityHelper.GetConvertedValue(properties[i].DeclaredValue, properties[i].Type); // Appends the string statement. filterExpressionBuilder.Append(EntityHelper.GetFilterStatement(properties[i].Name, properties[i].Operator, value, i)); if (i + 1 < properties.Length) { filterExpressionBuilder.AppendFormat(" {0} ", filters.GroupingOperator.ToString().ToUpper()); } // Changes the array size and adds the new value. System.Array.Resize(ref objects, objects.Length + 1); objects[objects.Length - 1] = value; } } var result = new FilterParameters() { FilterExpression = filterExpressionBuilder.ToString(), Parameters = objects }; return(result); }
/// <summary> /// Recursively applies filters to ESQ. /// </summary> private static void ApplyFilters( EntitySchemaQuery esq, EntitySchemaQueryFilterCollection rootFilter, QueryFilterCollection filters) { rootFilter.IsNot = filters.Negative; // apply filters foreach (var filter in filters.Filters) { rootFilter.Add(ConvertFilter(esq, filter)); } // recursively apply nested filters foreach (var filterCollection in filters.ChildFilters) { var group = new EntitySchemaQueryFilterCollection(esq, filterCollection.LogicalOperation); ApplyFilters(esq, group, filterCollection); rootFilter.Add(group); } }
protected DataParameters GetDataParameters(string itemName, EQueryType queryType, int rowCount = 3, int page = 0, QueryFilterCollection queryFilterCollection = null, IEnumerable <SortingName> sortingNames = null) { var result = new DataParameters() { ItemName = itemName, PageIndex = page, QueryType = queryType, RecordsCount = rowCount }; if (sortingNames != null) { result.SortingNames.AddRange(sortingNames); } if (queryFilterCollection != null) { result.FilterCollection.Groups.AddRange(queryFilterCollection.Groups); result.FilterCollection.QueryFilters.AddRange(queryFilterCollection.QueryFilters); result.FilterCollection.GroupingOperator = queryFilterCollection.GroupingOperator; } return(result); }
public QueryCollectorStateWhere(QueryPartCollector aggregator) : base(aggregator) { LogWriter.WriteLine("Entering Where state."); _currentFilter = aggregator.Filters; }