Exemple #1
0
        protected LuceneFilter GetFilter(Salary salary, bool excludeNoSalary)
        {
            int minSalary, maxSalary;

            //Ensure salary is yearly before filtering
            if (salary != null)
            {
                salary = salary.ToRate(SalaryRate.Year);
            }

            if (salary == null || !GetFilterFieldValues(salary.LowerBound, salary.UpperBound, out minSalary, out maxSalary) || (minSalary == 0 && maxSalary == int.MaxValue))
            {
                return(excludeNoSalary
                    ? _nonNullSalaryFilter
                    : null);
            }

            var boundaryFilters = new List <LuceneFilter>(2);

            if (minSalary != 0)
            {
                boundaryFilters.Add(FieldCacheRangeFilter.newIntRange(_maxFieldName, new java.lang.Integer(minSalary), null, true, true));
            }

            if (maxSalary != int.MaxValue)
            {
                boundaryFilters.Add(FieldCacheRangeFilter.newIntRange(_minFieldName, new java.lang.Integer(1), new java.lang.Integer(maxSalary), true, true));
            }

            var salaryFilter = new ChainedFilter(boundaryFilters.ToArray(), ChainedFilter.AND);

            return(!excludeNoSalary
                ? new ChainedFilter(new[] { salaryFilter, _nullSalaryFilter }, ChainedFilter.OR)
                : salaryFilter);
        }
 protected LuceneFilter GetFilter(DateTime?minTimestamp)
 {
     return(minTimestamp == null
         ? null
         : FieldCacheRangeFilter.newIntRange(_fieldName, new java.lang.Integer(minTimestamp.Value.ToFieldValue(_timeGranularity)), null, true, true));
 }