private SearchTerm createFieldSearchTerm(String f) { switch (f.toLowerCase()) { case "from": return new FromStringTerm(matchingText); case "cc": return new RecipientStringTerm(Message.RecipientType.CC, matchingText); case "to": return new RecipientStringTerm(Message.RecipientType.TO, matchingText); case "body": return new BodyTerm(matchingText); case "subject": return new SubjectTerm(matchingText); default: return null; } }
@Test public void multipleFieldsShouldReturnOrTerm() { final Set fields = new HashSet(); fields.add("to"); fields.add("from"); fields.add("cc"); Rule rule = Rule.create() .sourceFolder("INBOX") .matchingText("testText") .fields(fields); SearchTerm term = rule.getSearchTerm(); Assert.assertTrue(term instanceof OrTerm); SearchTerm[] terms = ((OrTerm) term).getTerms(); for (SearchTerm t : terms) { Assert.assertTrue(t instanceof FromStringTerm || (t instanceof RecipientStringTerm && ((RecipientStringTerm) t).getRecipientType() == Message.RecipientType.CC) || (t instanceof RecipientStringTerm && ((RecipientStringTerm) t).getRecipientType() == Message.RecipientType.TO)); } }
/** * Set filter on message sender. * @param sender messages will be filtered on sender * @param notTerm negate condition */ public void setSenderTerm(String sender, boolean notTerm) { if (!Const.isEmpty(sender)) { if(notTerm) addSearchTerm(new NotTerm(new FromStringTerm(sender))); else addSearchTerm(new FromStringTerm(sender)); } }
/** * Set filter on message sender. * * @param sender * messages will be filtered on sender * @param notTerm * negate condition */ public void setSenderTerm( String sender, boolean notTerm ) { if ( !Utils.isEmpty( sender ) ) { if ( notTerm ) { addSearchTerm( new NotTerm( new FromStringTerm( sender ) ) ); } else { addSearchTerm( new FromStringTerm( sender ) ); } } }
public SearchTermBuilder from(Op op, String pattern) { SearchTerm st = new FromStringTerm(pattern); addTerm(op, st); return this; }