/** * 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); }
/** * 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 AND group of filters. * * @param emailFilters array of {@link EmailFilter}s to AND. * @return this */ public EmailFilter and(final EmailFilter... emailFilters) { final SearchTerm[] searchTerms = new SearchTerm[emailFilters.length]; for (int i = 0; i < emailFilters.length; i++) { searchTerms[i] = emailFilters[i].searchTerm; } concat(new AndTerm(searchTerms)); return this; }
public void setReceivedDateTermBetween( Date beginDate, Date endDate ) { if ( this.protocol == MailConnectionMeta.PROTOCOL_POP3 ) { log.logError( BaseMessages.getString( PKG, "MailConnection.Error.ReceivedDatePOP3Unsupported" ) ); } else { addSearchTerm( new AndTerm( new ReceivedDateTerm( ComparisonTerm.LT, endDate ), new ReceivedDateTerm( ComparisonTerm.GT, beginDate ) ) ); } }
@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); }
@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 testAndOrNot() { final EmailFilter emailFilter = filter() .from(FROM) .to(TO) .or() .not() .subject(SUBJECT) .from(FROM_2); final SearchTerm expected = new OrTerm( new OrTerm( new AndTerm( new FromStringTerm(FROM), new RecipientStringTerm(Message.RecipientType.TO, TO) ), new NotTerm( new SubjectTerm(SUBJECT) ) ), new FromStringTerm(FROM_2) ); assertEquals(expected, emailFilter.searchTerm); }
@Test void testAndOrNotAlt() { final EmailFilter emailFilter = filter() .or( filter().and( filter().from(FROM), filter().to(TO) ), filter().not(filter().subject(SUBJECT)), filter().from(FROM_2) ); final SearchTerm expected = new OrTerm( new SearchTerm[]{ new AndTerm( new FromStringTerm(FROM), new RecipientStringTerm(Message.RecipientType.TO, TO) ), new NotTerm( new SubjectTerm(SUBJECT) ), new FromStringTerm(FROM_2) } ); assertEquals(expected, emailFilter.searchTerm); }
private SearchTerm fromAndNotSeenTerm(Flags supportedFlags, Folder folder) { try { FromTerm fromTerm = new FromTerm(new InternetAddress("bar@baz")); return new AndTerm(fromTerm, new FlagTerm(new Flags(Flags.Flag.SEEN), false)); } catch (AddressException e) { throw new RuntimeException(e); } }
private SearchTerm applyTermsWhenNoRecentFlag(Folder folder, SearchTerm searchTerm) { NotTerm notFlagged = null; if (folder.getPermanentFlags().contains(Flag.USER)) { if (logger.isDebugEnabled()) { logger.debug("This email server does not support RECENT flag, but it does support " + "USER flags which will be used to prevent duplicates during email fetch." + " This receiver instance uses flag: " + getUserFlag()); } Flags siFlags = new Flags(); siFlags.add(getUserFlag()); notFlagged = new NotTerm(new FlagTerm(siFlags, true)); } else { logger.debug("This email server does not support RECENT or USER flags. " + "System flag 'Flag.FLAGGED' will be used to prevent duplicates during email fetch."); notFlagged = new NotTerm(new FlagTerm(new Flags(Flag.FLAGGED), true)); } if (searchTerm == null) { return notFlagged; } else { return new AndTerm(searchTerm, notFlagged); } }
/** * 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); }
@Test public void testIdleWithServerCustomSearch() throws Exception { ImapMailReceiver receiver = new ImapMailReceiver("imap://user:pw@localhost:" + this.imapIdleServer.getPort() + "/INBOX"); receiver.setSearchTermStrategy((supportedFlags, folder) -> { try { FromTerm fromTerm = new FromTerm(new InternetAddress("bar@baz")); return new AndTerm(fromTerm, new FlagTerm(new Flags(Flag.SEEN), false)); } catch (AddressException e) { throw new RuntimeException(e); } }); testIdleWithServerGuts(receiver, false); }
/** * Defines AND group of filters. * * @param emailFilters array of {@link EmailFilter}s to AND. * @return this */ public EmailFilter and(final EmailFilter... emailFilters) { final SearchTerm[] searchTerms = new SearchTerm[emailFilters.length]; for (int i = 0; i < emailFilters.length; i++) { searchTerms[i] = emailFilters[i].searchTerm; } concat(new AndTerm(searchTerms)); return this; }
private void addTerm(Op op, SearchTerm newTerm) { if (term == null) { term = newTerm; } else if (op == Op.and) { term = new AndTerm(term, newTerm); } else if (op == Op.or) { term = new OrTerm(term, newTerm); } else { // need to and the existing with the not term = new AndTerm(term, new NotTerm(newTerm)); } } }
private SearchTerm fromAndNotSeenTerm(Flags supportedFlags, Folder folder) { try { FromTerm fromTerm = new FromTerm(new InternetAddress("bar@baz")); return new AndTerm(fromTerm, new FlagTerm(new Flags(Flags.Flag.SEEN), false)); } catch (AddressException e) { throw new RuntimeException(e); } }
/** * MNT-12773 * @throws AddressException */ public void testSearchTerms() throws AddressException { List<AlfrescoImapFolder> mf = imapService.listMailboxes(user, IMAP_ROOT+"/"+TEST_IMAP_FOLDER_NAME+"/_*", false); ArrayList<Long> res = new ArrayList<Long>(); SearchTerm st = null; st = new SentDateTerm(ComparisonTerm.LT, new Date()); extractSearchTermResultsToList(mf, st, res); assertEquals("Size of mails isn't correct. Search by sent date", 3, res.size()); res.clear(); st = new SubjectTerm("For Test"); extractSearchTermResultsToList(mf, st, res); assertEquals("Size of mails isn't correct. Search by subject", 1, res.size()); res.clear(); st = new FromTerm(new InternetAddress("admin@alfresco.com")); extractSearchTermResultsToList(mf, st, res); assertEquals("Size of mails isn't correct. Search by \"From\" term", 1, res.size()); res.clear(); st = new AndTerm(st, new SubjectTerm("For Test")); extractSearchTermResultsToList(mf, st, res); assertEquals("Size of mails isn't correct. Search by \"From\" and \"Subject\" terms", 1, res.size()); }