private QueryBuilder createNumericFilter(String fieldName, SearchQuery.NumericOperator operator) { switch (operator.getType()) { case EQUALS: return boolQuery().filter(rangeQuery(fieldName).gte(operator.getValue()).lte(operator.getValue())); case GREATER_THAN: return boolQuery().filter(rangeQuery(fieldName).gte(operator.getValue())); case LESS_THAN: return boolQuery().filter(rangeQuery(fieldName).lte(operator.getValue())); default: throw new RuntimeException("A non existing numeric operator was triggered"); } }
private boolean matches(SearchQuery.SizeCriterion criterion, MailboxMessage message) throws UnsupportedSearchException { SearchQuery.NumericOperator operator = criterion.getOperator(); long size = message.getFullContentOctets(); long value = operator.getValue(); switch (operator.getType()) { case LESS_THAN: return size < value; case GREATER_THAN: return size > value; case EQUALS: return size == value; default: throw new UnsupportedSearchException(); } }
private boolean matches(SearchQuery.ModSeqCriterion criterion, MailboxMessage message) throws UnsupportedSearchException { SearchQuery.NumericOperator operator = criterion.getOperator(); long modSeq = message.getModSeq(); long value = operator.getValue(); switch (operator.getType()) { case LESS_THAN: return modSeq < value; case GREATER_THAN: return modSeq > value; case EQUALS: return modSeq == value; default: throw new UnsupportedSearchException(); } }