SearchQuery.address(AddressType.Cc, text), SearchQuery.address(AddressType.Bcc, text), SearchQuery.headerContains("Subject", text), SearchQuery.attachmentContains(text), SearchQuery.bodyContains(text), filter.getCc().ifPresent(cc -> searchQuery.andCriteria(SearchQuery.address(AddressType.Cc, cc))); filter.getBcc().ifPresent(bcc -> searchQuery.andCriteria(SearchQuery.address(AddressType.Bcc, bcc))); filter.getSubject().ifPresent(subject -> searchQuery.andCriteria(SearchQuery.headerContains("Subject", subject))); filter.getAttachments().ifPresent(attachments -> searchQuery.andCriteria(SearchQuery.attachmentContains(attachments))); filter.getBody().ifPresent(body -> searchQuery.andCriteria(SearchQuery.bodyContains(body))); filter.getAfter().ifPresent(after -> searchQuery.andCriteria(SearchQuery.sentDateAfter(Date.from(after.toInstant()), DateResolution.Second))); filter.getBefore().ifPresent(before -> searchQuery.andCriteria(SearchQuery.sentDateBefore(Date.from(before.toInstant()), DateResolution.Second))); filter.getHeader().ifPresent(header -> searchQuery.andCriteria(SearchQuery.headerContains(header.getName(), header.getValue().orElse(null)))); filter.getIsAnswered().ifPresent(isAnswered -> searchQuery.andCriteria(SearchQuery.flag(Flag.ANSWERED, isAnswered))); filter.getIsDraft().ifPresent(isDraft -> searchQuery.andCriteria(SearchQuery.flag(Flag.DRAFT, isDraft)));
@Test public void testSUBJECT() throws Exception { expectsGetSelectedMailbox(); check(SearchKey.buildSubject(SUBJECT), SearchQuery.headerContains( ImapConstants.RFC822_SUBJECT, SUBJECT)); }
@Test public void testHEADER() throws Exception { expectsGetSelectedMailbox(); check(SearchKey.buildHeader(ImapConstants.RFC822_IN_REPLY_TO, ADDRESS), SearchQuery.headerContains(ImapConstants.RFC822_IN_REPLY_TO, ADDRESS)); }
@Test public void filterConditionShouldMapWhenHeaderWithTwoElements() { String headerName = "name"; String headerValue = "value"; SearchQuery expectedSearchQuery = new SearchQuery(); expectedSearchQuery.andCriteria(SearchQuery.headerContains(headerName, headerValue)); SearchQuery searchQuery = new FilterToSearchQuery().convert(FilterCondition.builder() .header(Header.from(ImmutableList.of(headerName, headerValue))) .build()); assertThat(searchQuery).isEqualTo(expectedSearchQuery); }
@Test public void filterConditionShouldMapWhenSubject() { String subject = "subject"; SearchQuery expectedSearchQuery = new SearchQuery(); expectedSearchQuery.andCriteria(SearchQuery.headerContains("Subject", subject)); SearchQuery searchQuery = new FilterToSearchQuery().convert(FilterCondition.builder() .subject(subject) .build()); assertThat(searchQuery).isEqualTo(expectedSearchQuery); }
@Test public void filterConditionShouldMapWhenAndOperator() { String from = "sender@james.org"; String to = "recipient@james.org"; String subject = "subject"; SearchQuery expectedSearchQuery = new SearchQuery(); expectedSearchQuery.andCriteria(SearchQuery.and(ImmutableList.of( SearchQuery.address(AddressType.From, from), SearchQuery.address(AddressType.To, to), SearchQuery.headerContains("Subject", subject)))); Filter complexFilter = FilterOperator.and( FilterCondition.builder() .from(from) .to(to) .subject(subject) .build()); SearchQuery searchQuery = new FilterToSearchQuery().convert(complexFilter); assertThat(searchQuery).isEqualTo(expectedSearchQuery); }
@Test public void filterConditionShouldMapWhenOrOperator() { String from = "sender@james.org"; String to = "recipient@james.org"; String subject = "subject"; SearchQuery expectedSearchQuery = new SearchQuery(); expectedSearchQuery.andCriteria(SearchQuery.or(ImmutableList.of( SearchQuery.address(AddressType.From, from), SearchQuery.address(AddressType.To, to), SearchQuery.headerContains("Subject", subject)))); Filter complexFilter = FilterOperator.or( FilterCondition.builder() .from(from) .to(to) .subject(subject) .build()); SearchQuery searchQuery = new FilterToSearchQuery().convert(complexFilter); assertThat(searchQuery).isEqualTo(expectedSearchQuery); }
@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 filterConditionShouldMapWhenText() { String text = "text"; SearchQuery expectedSearchQuery = new SearchQuery(); expectedSearchQuery.andCriteria(SearchQuery.or(ImmutableList.of( SearchQuery.address(AddressType.From, text), SearchQuery.address(AddressType.To, text), SearchQuery.address(AddressType.Cc, text), SearchQuery.address(AddressType.Bcc, text), SearchQuery.headerContains("Subject", text), SearchQuery.bodyContains(text), SearchQuery.attachmentContains(text), SearchQuery.attachmentFileName(text)))); SearchQuery searchQuery = new FilterToSearchQuery().convert(FilterCondition.builder() .text(text) .build()); assertThat(searchQuery).isEqualTo(expectedSearchQuery); }
return SearchQuery.headerExists(key.getName()); } else { return SearchQuery.headerContains(key.getName(), value); return SearchQuery.sizeLessThan(key.getSize()); case SearchKey.TYPE_SUBJECT: return SearchQuery.headerContains(ImapConstants.RFC822_SUBJECT, key.getValue()); case SearchKey.TYPE_TEXT: return SearchQuery.mailContains(key.getValue());
return SearchQuery.headerExists(key.getName()); } else { return SearchQuery.headerContains(key.getName(), value); return SearchQuery.sizeLessThan(key.getSize()); case SearchKey.TYPE_SUBJECT: return SearchQuery.headerContains(ImapConstants.RFC822_SUBJECT, key.getValue()); case SearchKey.TYPE_TEXT: return SearchQuery.mailContains(key.getValue());