예제 #1
0
        public override RandomAccessFilter BuildRandomAccessFilter(string value, IDictionary <string, string> props)
        {
            int  depth  = GetDepth(props);
            bool strict = IsStrict(props);
            PathValueConverter valConverter = new PathValueConverter(depth, strict, _separator);

            string[] vals = new string[] { value };

            if (_multiValue)
            {
                return(new MultiValueORFacetFilter(this, vals, valConverter, false));
            }
            return(new FacetOrFilter(this, vals, false, valConverter));

            //return _multiValue ? new MultiValueORFacetFilter(this, vals, valConverter, false) : new FacetOrFilter(this, vals, false, valConverter);
        }
예제 #2
0
        public override RandomAccessFilter BuildRandomAccessOrFilter(string[] vals, IDictionary <string, string> prop, bool isNot)
        {
            if (vals.Length > 1)
            {
                if (vals.Length > 0)
                {
                    int  depth  = GetDepth(prop);
                    bool strict = IsStrict(prop);
                    PathValueConverter valConverter = new PathValueConverter(depth, strict, _separator);

                    if (_multiValue)
                    {
                        return(new MultiValueORFacetFilter(this, vals, valConverter, isNot));
                    }
                    return(new FacetOrFilter(this, vals, isNot, valConverter));
                }
                else
                {
                    if (isNot)
                    {
                        return(null);
                    }
                    else
                    {
                        return(EmptyFilter.Instance);
                    }
                }
            }
            else
            {
                RandomAccessFilter f = BuildRandomAccessFilter(vals[0], prop);
                if (f == null)
                {
                    return(f);
                }
                if (isNot)
                {
                    f = new RandomAccessNotFilter(f);
                }
                return(f);
            }
        }