/** * Creates a filter on the given flag. * * @param flag * <code>Flag</code>, not null * @param isSet * true if the messages with the flag set should be matched, * false otherwise * @return <code>Criterion</code>, not null */ public static Criterion flagSet(Flag flag, boolean isSet) { final Criterion result; if (isSet) { result = flagIsSet(flag); } else { result = flagIsUnSet(flag); } return result; }
/** * Creates a filter on the given flag. * * @param flag * <code>Flag</code>, not null * @param isSet * true if the messages with the flag set should be matched, * false otherwise * @return <code>Criterion</code>, not null */ public static Criterion flagSet(String flag, boolean isSet) { final Criterion result; if (isSet) { result = flagIsSet(flag); } else { result = flagIsUnSet(flag); } return result; }
@Test public void testAND() throws Exception { expectsGetSelectedMailbox(); List<SearchKey> keys = new ArrayList<>(); keys.add(SearchKey.buildOn(DAY_MONTH_YEAR)); keys.add(SearchKey.buildOld()); keys.add(SearchKey.buildLarger(SIZE)); List<Criterion> criteria = new ArrayList<>(); criteria.add(SearchQuery.internalDateOn(getDate(DAY, MONTH, YEAR), DateResolution.Day)); criteria.add(SearchQuery.flagIsUnSet(Flag.RECENT)); criteria.add(SearchQuery.sizeGreaterThan(SIZE)); check(SearchKey.buildAnd(keys), SearchQuery.and(criteria)); }
@Test public void filterConditionShouldMapWhenNotKeywordWithUserFlag() { SearchQuery expectedSearchQuery = new SearchQuery(); expectedSearchQuery.andCriteria(SearchQuery.flagIsUnSet(FORWARDED)); SearchQuery searchQuery = new FilterToSearchQuery().convert(FilterCondition.builder() .notKeyword(Optional.of(FORWARDED)) .build()); assertThat(searchQuery).isEqualTo(expectedSearchQuery); }
@Test public void filterConditionShouldMapWhenNotKeyword() { SearchQuery expectedSearchQuery = new SearchQuery(); expectedSearchQuery.andCriteria(SearchQuery.flagIsUnSet(Flag.FLAGGED)); SearchQuery searchQuery = new FilterToSearchQuery().convert(FilterCondition.builder() .notKeyword(Optional.of("$Flagged")) .build()); assertThat(searchQuery).isEqualTo(expectedSearchQuery); }
@Test public void testOLD() throws Exception { expectsGetSelectedMailbox(); check(SearchKey.buildOld(), SearchQuery.flagIsUnSet(Flag.RECENT)); }
@Test public void testUNDELETED() throws Exception { expectsGetSelectedMailbox(); check(SearchKey.buildUndeleted(), SearchQuery.flagIsUnSet(Flag.DELETED)); }
@Test public void testUNKEYWORD() throws Exception { expectsGetSelectedMailbox(); check(SearchKey.buildUnkeyword(KEYWORD), SearchQuery .flagIsUnSet(KEYWORD)); }
@Test public void testUNANSWERED() throws Exception { expectsGetSelectedMailbox(); check(SearchKey.buildUnanswered(), SearchQuery .flagIsUnSet(Flag.ANSWERED)); }
@Test public void testUNFLAGGED() throws Exception { expectsGetSelectedMailbox(); check(SearchKey.buildUnflagged(), SearchQuery.flagIsUnSet(Flag.FLAGGED)); }
@Test public void testUNDRAFT() throws Exception { expectsGetSelectedMailbox(); check(SearchKey.buildUndraft(), SearchQuery.flagIsUnSet(Flag.DRAFT)); }
@Test public void testUNSEEN() throws Exception { expectsGetSelectedMailbox(); check(SearchKey.buildUnseen(), SearchQuery.flagIsUnSet(Flag.SEEN)); }
@Test public void filterConditionShouldMapWhenIsNotFlagged() { SearchQuery expectedSearchQuery = new SearchQuery(); expectedSearchQuery.andCriteria(SearchQuery.flagIsUnSet(Flag.FLAGGED)); SearchQuery searchQuery = new FilterToSearchQuery().convert(FilterCondition.builder() .isFlagged(false) .build()); assertThat(searchQuery).isEqualTo(expectedSearchQuery); }
@Test public void filterConditionShouldMapWhenIsNotAnswered() { SearchQuery expectedSearchQuery = new SearchQuery(); expectedSearchQuery.andCriteria(SearchQuery.flagIsUnSet(Flag.ANSWERED)); SearchQuery searchQuery = new FilterToSearchQuery().convert(FilterCondition.builder() .isAnswered(false) .build()); assertThat(searchQuery).isEqualTo(expectedSearchQuery); }
@Test public void filterConditionShouldMapWhenIsUnread() { SearchQuery expectedSearchQuery = new SearchQuery(); expectedSearchQuery.andCriteria(SearchQuery.flagIsUnSet(Flag.SEEN)); SearchQuery searchQuery = new FilterToSearchQuery().convert(FilterCondition.builder() .isUnread(true) .build()); assertThat(searchQuery).isEqualTo(expectedSearchQuery); }
@Test public void filterConditionShouldMapWhenIsNotDraft() { SearchQuery expectedSearchQuery = new SearchQuery(); expectedSearchQuery.andCriteria(SearchQuery.flagIsUnSet(Flag.DRAFT)); SearchQuery searchQuery = new FilterToSearchQuery().convert(FilterCondition.builder() .isDraft(false) .build()); assertThat(searchQuery).isEqualTo(expectedSearchQuery); }
@Test public void testNEW() throws Exception { expectsGetSelectedMailbox(); check(SearchKey.buildNew(), SearchQuery.and(SearchQuery .flagIsSet(Flag.RECENT), SearchQuery.flagIsUnSet(Flag.SEEN))); }
return SearchQuery.sizeGreaterThan(key.getSize()); case SearchKey.TYPE_NEW: return SearchQuery.and(SearchQuery.flagIsSet(Flag.RECENT), SearchQuery.flagIsUnSet(Flag.SEEN)); case SearchKey.TYPE_NOT: return not(key.getKeys(), session); case SearchKey.TYPE_OLD: return SearchQuery.flagIsUnSet(Flag.RECENT); case SearchKey.TYPE_ON: return SearchQuery.internalDateOn(date.toDate(), DateResolution.Day); return uids(key.getUidRanges(), session); case SearchKey.TYPE_UNANSWERED: return SearchQuery.flagIsUnSet(Flag.ANSWERED); case SearchKey.TYPE_UNDELETED: return SearchQuery.flagIsUnSet(Flag.DELETED); case SearchKey.TYPE_UNDRAFT: return SearchQuery.flagIsUnSet(Flag.DRAFT); case SearchKey.TYPE_UNFLAGGED: return SearchQuery.flagIsUnSet(Flag.FLAGGED); case SearchKey.TYPE_UNKEYWORD: return SearchQuery.flagIsUnSet(key.getValue()); case SearchKey.TYPE_UNSEEN: return SearchQuery.flagIsUnSet(Flag.SEEN); case SearchKey.TYPE_OLDER: Date withinDate = createWithinDate(key);
return SearchQuery.sizeGreaterThan(key.getSize()); case SearchKey.TYPE_NEW: return SearchQuery.and(SearchQuery.flagIsSet(Flag.RECENT), SearchQuery.flagIsUnSet(Flag.SEEN)); case SearchKey.TYPE_NOT: return not(key.getKeys(), session); case SearchKey.TYPE_OLD: return SearchQuery.flagIsUnSet(Flag.RECENT); case SearchKey.TYPE_ON: return SearchQuery.internalDateOn(date.toDate(), DateResolution.Day); return sequence(key.getSequenceNumbers(), session, false); case SearchKey.TYPE_UNANSWERED: return SearchQuery.flagIsUnSet(Flag.ANSWERED); case SearchKey.TYPE_UNDELETED: return SearchQuery.flagIsUnSet(Flag.DELETED); case SearchKey.TYPE_UNDRAFT: return SearchQuery.flagIsUnSet(Flag.DRAFT); case SearchKey.TYPE_UNFLAGGED: return SearchQuery.flagIsUnSet(Flag.FLAGGED); case SearchKey.TYPE_UNKEYWORD: return SearchQuery.flagIsUnSet(key.getValue()); case SearchKey.TYPE_UNSEEN: return SearchQuery.flagIsUnSet(Flag.SEEN); case SearchKey.TYPE_OLDER: Date withinDate = createWithinDate(key);
@Test public void testOR() throws Exception { expectsGetSelectedMailbox(); check(SearchKey.buildOr(SearchKey.buildOn(DAY_MONTH_YEAR), SearchKey .buildOld()), SearchQuery.or(SearchQuery.internalDateOn(getDate(DAY, MONTH, YEAR), DateResolution.Day), SearchQuery.flagIsUnSet(Flag.RECENT))); }