Exemplo n.º 1
0
        private static CompositeFilterDescriptor ConvertDescriptor(
            CompositeFilterDescriptor compositeFilter,
            CompositeFilterDescriptor.DescriptorType type,
            Type dataType)
        {
            if (compositeFilter == null)
            {
                throw new ArgumentNullException(nameof(compositeFilter));
            }
            if (type == CompositeFilterDescriptor.DescriptorType.Unknown)
            {
                throw new InvalidOperationException("You cannot convert the filter descriptor to unknown type.");
            }
            CompositeFilterDescriptor filterDescriptor1 = compositeFilter.Clone() as CompositeFilterDescriptor;

            while (filterDescriptor1.FilterDescriptors.Count > 2)
            {
                int index = filterDescriptor1.FilterDescriptors.Count - 1;
                filterDescriptor1.FilterDescriptors.RemoveAt(index);
            }
            while (filterDescriptor1.FilterDescriptors.Count < 2)
            {
                if ((object)dataType == (object)typeof(DateTime))
                {
                    filterDescriptor1.FilterDescriptors.Add((FilterDescriptor) new DateFilterDescriptor());
                }
                else
                {
                    filterDescriptor1.FilterDescriptors.Add(new FilterDescriptor());
                }
            }
            if (type == CompositeFilterDescriptor.DescriptorType.Between || type == CompositeFilterDescriptor.DescriptorType.NotBetween)
            {
                filterDescriptor1.LogicalOperator = FilterLogicalOperator.And;
                FilterDescriptor filterDescriptor2 = filterDescriptor1.FilterDescriptors[0];
                filterDescriptor2.PropertyName = filterDescriptor1.PropertyName;
                filterDescriptor2.Operator     = FilterOperator.IsGreaterThanOrEqualTo;
                FilterDescriptor filterDescriptor3 = filterDescriptor1.FilterDescriptors[1];
                filterDescriptor3.PropertyName = filterDescriptor1.PropertyName;
                filterDescriptor3.Operator     = FilterOperator.IsLessThanOrEqualTo;
                filterDescriptor1.NotOperator  = type == CompositeFilterDescriptor.DescriptorType.NotBetween;
            }
            return(filterDescriptor1);
        }
Exemplo n.º 2
0
        private static CompositeFilterDescriptor ConvertDescriptor(CompositeFilterDescriptor compositeFilter, DescriptorType type)
        {
            if (compositeFilter == null)
            {
                throw new ArgumentNullException("compositeFilter");
            }

            if (type == DescriptorType.Unknown)
            {
                throw new InvalidOperationException("You cannot convert the filter descriptor to unknown type.");
            }

            CompositeFilterDescriptor result = compositeFilter.Clone() as CompositeFilterDescriptor;

            while (result.FilterDescriptors.Count > 2)
            {
                int lastIndex = result.FilterDescriptors.Count - 1;
                result.FilterDescriptors.RemoveAt(lastIndex);
            }

            while (result.FilterDescriptors.Count < 2)
            {
                result.FilterDescriptors.Add(new FilterDescriptor());
            }

            if (type == DescriptorType.Between || type == DescriptorType.NotBetween)
            {
                result.LogicalOperator = FilterLogicalOperator.And;

                FilterDescriptor firstFilterDescriptor = result.FilterDescriptors[0];
                firstFilterDescriptor.PropertyName = result.PropertyName;
                firstFilterDescriptor.Operator     = FilterOperator.IsGreaterThanOrEqualTo;

                FilterDescriptor secondFilterDescriptor = result.FilterDescriptors[1];
                secondFilterDescriptor.PropertyName = result.PropertyName;
                secondFilterDescriptor.Operator     = FilterOperator.IsLessThanOrEqualTo;

                result.NotOperator = type == DescriptorType.NotBetween;
            }

            return(result);
        }