private Criterion not(List<SearchKey> keys, ImapSession session) throws MessageRangeException { final SearchKey key = keys.get(0); final Criterion criterion = toCriterion(key, session); return SearchQuery.not(criterion); }
private Criterion not(List<SearchKey> keys, final ImapSession session) throws MessageRangeException { final SearchKey key = keys.get(0); final Criterion criterion = toCriterion(key, session); final Criterion result = SearchQuery.not(criterion); return result; }
private Criterion convertOperator(FilterOperator filter) { switch (filter.getOperator()) { case AND: return SearchQuery.and(convertCriterias(filter)); case OR: return SearchQuery.or(convertCriterias(filter)); case NOT: return SearchQuery.not(convertCriterias(filter)); } throw new RuntimeException("Unknown operator"); }
@Test public void testNOT() throws Exception { expectsGetSelectedMailbox(); check(SearchKey.buildNot(SearchKey.buildOn(DAY_MONTH_YEAR)), SearchQuery.not(SearchQuery.internalDateOn(getDate(DAY, MONTH, YEAR), DateResolution.Day))); }
@Test public void filterConditionShouldMapWhenNotOperator() { String from = "sender@james.org"; String to = "recipient@james.org"; String subject = "subject"; SearchQuery expectedSearchQuery = new SearchQuery(); expectedSearchQuery.andCriteria(SearchQuery.not(ImmutableList.of( SearchQuery.address(AddressType.From, from), SearchQuery.address(AddressType.To, to), SearchQuery.headerContains("Subject", subject)))); Filter complexFilter = FilterOperator.not( FilterCondition.builder() .from(from) .to(to) .subject(subject) .build()); SearchQuery searchQuery = new FilterToSearchQuery().convert(complexFilter); assertThat(searchQuery).isEqualTo(expectedSearchQuery); }
@Test public void filterConditionShouldMapWhenComplexFilterTree() { String from = "sender@james.org"; String to = "recipient@james.org"; String cc = "copy@james.org"; SearchQuery expectedSearchQuery = new SearchQuery(); expectedSearchQuery.andCriteria(SearchQuery.and(ImmutableList.of( SearchQuery.address(AddressType.From, from), SearchQuery.or(ImmutableList.of( SearchQuery.not(SearchQuery.address(AddressType.To, to)), SearchQuery.address(AddressType.Cc, cc)) ) ))); Filter complexFilter = FilterOperator.and( FilterCondition.builder() .from(from) .build(), FilterOperator.or( FilterOperator.not( FilterCondition.builder() .to(to) .build()), FilterCondition.builder() .cc(cc) .build() )); SearchQuery searchQuery = new FilterToSearchQuery().convert(complexFilter); assertThat(searchQuery).isEqualTo(expectedSearchQuery); }