Esempio n. 1
0
        private static void TestFilterByName(string expected, IEnumerable<C> items, string operation, object value)
        {
            var genericFilter = new FilterCriteria("Name", operation, value);
            Console.WriteLine("genericFilter: " + genericFilter.Property + " " + genericFilter.Operation + " " + genericFilter.Value);

            var genericFilterHelper = new GenericFilterHelper(new DomainObjectModelMock());
            var filterObject = genericFilterHelper.ToFilterObjects(new FilterCriteria[] { genericFilter }).Single();
            Console.WriteLine("filterObject.FilterType: " + filterObject.FilterType.FullName);
            var filterExpression = genericFilterHelper.ToExpression<C>((IEnumerable<PropertyFilter>)filterObject.Parameter);

            var filteredItems = items.AsQueryable().Where(filterExpression).ToList();
            Assert.AreEqual(expected, TestUtility.DumpSorted(filteredItems, item => item.Name ?? "<null>"), "Testing '" + operation + " " + value + "'.");
        }
        public static bool OptimizeFiltersUnion(FilterCriteria a, FilterCriteria b, out FilterCriteria union)
        {
            if (a.Filter == b.Filter && a.Property == b.Property && a.Operation == b.Operation)
            {
                if (a.Value == b.Value)
                {
                    union = a;
                    return(true);
                }
                if (string.Equals(a.Operation, "In", StringComparison.OrdinalIgnoreCase) &&
                    a.Value is IList <Guid> && b.Value is IList <Guid> )
                {
                    var listUnion = ((IList <Guid>)a.Value).Union((IList <Guid>)b.Value).ToList();
                    union = new FilterCriteria(a.Property, a.Operation, listUnion);
                    return(true);
                }
            }

            union = null;
            return(false);
        }
Esempio n. 3
0
        private void ValidateAndPrepare(FilterCriteria filter)
        {
            if (!string.IsNullOrEmpty(filter.Property) && !string.IsNullOrEmpty(filter.Filter))
            {
                throw new ClientException("Invalid generic filter criteria: both property filter and predefined filter are set. (Property = '" + filter.Property + "', Filter = '" + filter.Filter + "')");
            }

            if (string.IsNullOrEmpty(filter.Property) && string.IsNullOrEmpty(filter.Filter))
            {
                throw new ClientException("Invalid generic filter criteria: both property filter and predefined filter are null.");
            }

            if (!string.IsNullOrEmpty(filter.Property))
            {
                // Property filter:

                if (string.IsNullOrEmpty(filter.Operation))
                {
                    throw new ClientException("Invalid generic filter criteria: Operation is not set. (Property = '" + filter.Property + "')");
                }
            }

            if (!string.IsNullOrEmpty(filter.Filter))
            {
                // Specific filter:

                if (string.IsNullOrEmpty(filter.Operation))
                {
                    filter.Operation = FilterOperationMatches;
                }

                if (!string.Equals(filter.Operation, FilterOperationMatches, StringComparison.OrdinalIgnoreCase) &&
                    !string.Equals(filter.Operation, FilterOperationNotMatches, StringComparison.OrdinalIgnoreCase))
                {
                    throw new ClientException(string.Format(
                                                  "Invalid generic filter criteria: Supported predefined filter operations are '{0}' and '{1}'. (Filter = '{2}', Operation = '{3}')",
                                                  FilterOperationMatches, FilterOperationNotMatches, filter.Filter, filter.Operation));
                }
            }
        }
Esempio n. 4
0
        public void InvalidPropertyNameError()
        {
            using (var executionContext = new CommonTestExecutionContext())
            {
                var repository = new Common.DomRepository(executionContext);
                var childQuery = repository.TestGenericFilter.Child.Query();
                FilterCriteria filter;

                filter = new FilterCriteria { Property = "Parentt", Operation = "equal", Value = null };
                TestUtility.ShouldFail(() => GenericFilterWithPagingUtility.Filter(childQuery, new[] { filter }).ToList(),
                    "generic filter", "property 'Parentt'", "Type 'TestGenericFilter.Child'", "UserException");
            }
        }
Esempio n. 5
0
 private bool IsPropertyFilter(FilterCriteria filter)
 {
     return(!string.IsNullOrEmpty(filter.Property));
 }
 /// <summary>
 /// Compares only filters without parameters.
 /// Note: This method will not detected same filter types if they differ in namespace usage, since <see cref="FilterCriteria.Filter"/>
 /// should always have full namespace declared (FullName or AssemblyQualifiedName).
 /// </summary>
 public static bool EqualsSimpleFilter(FilterCriteria filter, string filterName)
 {
     return(filter.Value == null &&
            (string.IsNullOrEmpty(filter.Operation) || string.Equals(filter.Operation, FilterOperationMatches, StringComparison.OrdinalIgnoreCase)) &&
            IsSameType(filter.Filter, filterName));
 }