Пример #1
0
        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());
        }
Пример #2
0
        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;
                }
            }
        }
Пример #3
0
 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);
        }
Пример #5
0
        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();
        }
Пример #6
0
        /// <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);
            }
        }
Пример #8
0
        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);
        }
Пример #9
0
 public QueryCollectorStateWhere(QueryPartCollector aggregator) : base(aggregator)
 {
     LogWriter.WriteLine("Entering Where state.");
     _currentFilter = aggregator.Filters;
 }