Ejemplo n.º 1
0
        public static bool Evaluate(QueryFilter filter, IReadOnlyPropertyBag propertyBag, bool shouldThrow)
        {
            AndFilter andFilter = filter as AndFilter;

            if (andFilter != null)
            {
                return(EvaluatableFilter.EvaluateAndFilter(andFilter, propertyBag, shouldThrow));
            }
            OrFilter orFilter = filter as OrFilter;

            if (orFilter != null)
            {
                return(EvaluatableFilter.EvaluateOrFilter(orFilter, propertyBag, shouldThrow));
            }
            NotFilter notFilter = filter as NotFilter;

            if (notFilter != null)
            {
                return(!EvaluatableFilter.Evaluate(notFilter.Filter, propertyBag, shouldThrow));
            }
            TextFilter textFilter = filter as TextFilter;

            if (textFilter != null)
            {
                return(EvaluatableFilter.EvaluateTextFilter(textFilter, propertyBag, shouldThrow));
            }
            ComparisonFilter comparisonFilter = filter as ComparisonFilter;

            if (comparisonFilter != null)
            {
                return(EvaluatableFilter.EvaluateComparisonFilter(comparisonFilter, propertyBag, shouldThrow));
            }
            if (filter is TrueFilter)
            {
                return(true);
            }
            if (filter is FalseFilter)
            {
                return(false);
            }
            CommentFilter commentFilter = filter as CommentFilter;

            if (commentFilter != null)
            {
                return(EvaluatableFilter.Evaluate(commentFilter.Filter, propertyBag, shouldThrow));
            }
            BitMaskFilter bitMaskFilter = filter as BitMaskFilter;

            if (bitMaskFilter != null)
            {
                return(EvaluatableFilter.EvaluateBitMaskFilter(bitMaskFilter, propertyBag, shouldThrow));
            }
            ExistsFilter existsFilter = filter as ExistsFilter;

            if (existsFilter != null)
            {
                return(EvaluatableFilter.EvaluateExistsFilter(existsFilter, propertyBag));
            }
            PropertyComparisonFilter propertyComparisonFilter = filter as PropertyComparisonFilter;

            if (propertyComparisonFilter != null)
            {
                return(EvaluatableFilter.EvaluatePropertyComparisonFilter(propertyComparisonFilter, propertyBag, shouldThrow));
            }
            throw new NotImplementedException();
        }