/** * Sets {@link OrTerm} searchTerm. * * @param searchTerm {@link SearchTerm} to set as OR. */ protected void or(final SearchTerm searchTerm) { if (this.searchTerm == null) { this.searchTerm = searchTerm; return; } this.searchTerm = new OrTerm(this.searchTerm, searchTerm); }
/** * Sets {@link AndTerm} as searchTerm. * * @param searchTerm {@link SearchTerm} to set as AND. */ protected void and(final SearchTerm searchTerm) { if (this.searchTerm == null) { this.searchTerm = searchTerm; return; } this.searchTerm = new AndTerm(this.searchTerm, searchTerm); }
@Override public boolean hasNext() { return next != null && searchTerm.match( next ); }
@Test void testOr2Alt() { final EmailFilter emailFilter = filter().or() .from(FROM) .to(TO); final SearchTerm expected = new OrTerm( new FromStringTerm(FROM), new RecipientStringTerm(Message.RecipientType.TO, TO) ); assertEquals(expected, emailFilter.searchTerm); }
/** * Defines filter for many flags at once. * * @param flags The {@link Flags} to filter on. * @param value The {@link Flag} setting to check for. * @return this */ public EmailFilter flags(final Flags flags, final boolean value) { final SearchTerm flagTerm = new FlagTerm(flags, value); concat(flagTerm); return this; }
@Test void testAnd2() { final EmailFilter emailFilter = filter() .from(FROM) .to(TO); final SearchTerm expected = new AndTerm( new FromStringTerm(FROM), new RecipientStringTerm(Message.RecipientType.TO, TO) ); assertEquals(expected, emailFilter.searchTerm); }
@Test void testReceivedDate() { final EmailFilter emailFilter = EmailFilter.filter() .receivedDate(EmailFilter.Operator.EQ, 1524575533757L) .sentDate(EmailFilter.Operator.GT, 1524575533757L); final SearchTerm expected = new AndTerm( new ReceivedDateTerm(3, new Date(1524575533757L)), new SentDateTerm(5, new Date(1524575533757L)) ); assertEquals(expected, emailFilter.searchTerm); }
/** * Defines filter for SUBJECT field. * * @param subject The SUBJECT. * @return this */ public EmailFilter subject(final String subject) { final SearchTerm subjectTerm = new SubjectTerm(subject); concat(subjectTerm); return this; }
/** * Defines filter for TO field. * * @param toAddress The TO address. * @return this */ public EmailFilter to(final String toAddress) { final SearchTerm toTerm = new RecipientStringTerm(RecipientType.TO, toAddress); concat(toTerm); return this; }
/** * Defines filter for FROM field. * * @param fromAddress The FROM address * @return this */ public EmailFilter from(final String fromAddress) { final SearchTerm fromTerm = new FromStringTerm(fromAddress); concat(fromTerm); return this; }
/** * Appends single filter as NOT. * * @param emailFilter {@link EmailFilter} to append. * @return this */ public EmailFilter not(final EmailFilter emailFilter) { final SearchTerm searchTerm = new NotTerm(emailFilter.searchTerm); concat(searchTerm); return this; }
/** * Defines filter on a message body. * All parts of the message that are of MIME type "text/*" are searched. * * @param pattern String pattern use in body. * @return this */ public EmailFilter text(final String pattern) { final SearchTerm term = new BodyTerm(pattern); concat(term); return this; }
/** * Defines filter for {@link Header}. * * @param headerName The name of the {@link Header}. * @param pattern String pattern to use for headerName. * @return this */ public EmailFilter header(final String headerName, final String pattern) { final SearchTerm term = new HeaderTerm(headerName, pattern); concat(term); return this; }
/** * Defines filter for message size. * * @param comparison {@link Operator}. * @param size size of message. * @return this */ public EmailFilter size(final Operator comparison, final int size) { final SearchTerm term = new SizeTerm(comparison.value, size); concat(term); return this; }
/** * Defines filteer for message number. * * @param messageNumber The message number. * @return this */ public EmailFilter messageNumber(final int messageNumber) { final SearchTerm msgIdTerm = new MessageNumberTerm(messageNumber); concat(msgIdTerm); return this; }
/** * Defines filter for message id. * * @param messageId The message ID. * @return this */ public EmailFilter messageId(final String messageId) { final SearchTerm msgIdTerm = new MessageIDTerm(messageId); concat(msgIdTerm); return this; }
@Test void testOr2() { final EmailFilter emailFilter = filter().or( filter().from(FROM), filter().to(TO) ); final SearchTerm expected = new OrTerm( new FromStringTerm(FROM), new RecipientStringTerm(Message.RecipientType.TO, TO) ); assertEquals(expected, emailFilter.searchTerm); }
/** * Add search term. * * @param term * search term to add */ private void addSearchTerm( SearchTerm term ) { if ( this.searchTerm != null ) { this.searchTerm = new AndTerm( this.searchTerm, term ); } else { this.searchTerm = term; } }
/** * Defines filter for CC field. * * @param ccAddress CC addreses. * @return this */ public EmailFilter cc(final String ccAddress) { final SearchTerm toTerm = new RecipientStringTerm(RecipientType.CC, ccAddress); concat(toTerm); return this; }
/** * Defines filter for BCC field. * * @param bccAddress BCC address. * @return this */ public EmailFilter bcc(final String bccAddress) { final SearchTerm toTerm = new RecipientStringTerm(RecipientType.BCC, bccAddress); concat(toTerm); return this; }