return and((AndTerm)term, charset); else if (term instanceof OrTerm) // OR return or((OrTerm)term, charset); else if (term instanceof NotTerm) // NOT return not((NotTerm)term, charset); else if (term instanceof HeaderTerm) // HEADER return header((HeaderTerm)term, charset); else if (term instanceof FlagTerm) // FLAG return flag((FlagTerm)term); else if (term instanceof FromTerm) { // FROM FromTerm fterm = (FromTerm)term; return from(fterm.getAddress().toString(), charset); return from(fterm.getPattern(), charset); return recipient(rterm.getRecipientType(), rterm.getAddress().toString(), charset); return recipient(rterm.getRecipientType(), rterm.getPattern(), charset); return subject((SubjectTerm)term, charset); else if (term instanceof BodyTerm) // BODY return body((BodyTerm)term, charset); else if (term instanceof SizeTerm) // SIZE return size((SizeTerm)term); else if (term instanceof SentDateTerm) // SENTDATE
protected Argument and(AndTerm term, String charset) throws SearchException, IOException { // Combine the sequences for both terms SearchTerm[] terms = term.getTerms(); // Generate the search sequence for the first term Argument result = generateSequence(terms[0], charset); // Append other terms for (int i = 1; i < terms.length; i++) result.append(generateSequence(terms[i], charset)); return result; }
/** * Check if any of the "text" terms in the given SearchTerms contain * non US-ASCII characters. * * @param terms the search terms * @return true if only ASCII */ public static boolean isAscii(SearchTerm[] terms) { for (int i = 0; i < terms.length; i++) if (!isAscii(terms[i])) // outta here ! return false; return true; }
return and((AndTerm)term, charset); else if (term instanceof OrTerm) // OR return or((OrTerm)term, charset); else if (term instanceof NotTerm) // NOT return not((NotTerm)term, charset); else if (term instanceof HeaderTerm) // HEADER return header((HeaderTerm)term, charset); else if (term instanceof FlagTerm) // FLAG return flag((FlagTerm)term); else if (term instanceof FromTerm) { // FROM FromTerm fterm = (FromTerm)term; return from(fterm.getAddress().toString(), charset); return from(fterm.getPattern(), charset); return recipient(rterm.getRecipientType(), rterm.getAddress().toString(), charset); return recipient(rterm.getRecipientType(), rterm.getPattern(), charset); return subject((SubjectTerm)term, charset); else if (term instanceof BodyTerm) // BODY return body((BodyTerm)term, charset); else if (term instanceof SizeTerm) // SIZE return size((SizeTerm)term); else if (term instanceof SentDateTerm) // SENTDATE
protected Argument and(AndTerm term, String charset) throws SearchException, IOException { // Combine the sequences for both terms SearchTerm[] terms = term.getTerms(); // Generate the search sequence for the first term Argument result = generateSequence(terms[0], charset); // Append other terms for (int i = 1; i < terms.length; i++) result.append(generateSequence(terms[i], charset)); return result; }
/** * Check if any of the "text" terms in the given SearchTerms contain * non US-ASCII characters. * * @param terms the search terms * @return true if only ASCII */ public static boolean isAscii(SearchTerm[] terms) { for (int i = 0; i < terms.length; i++) if (!isAscii(terms[i])) // outta here ! return false; return true; }
return and((AndTerm)term, charset); else if (term instanceof OrTerm) // OR return or((OrTerm)term, charset); else if (term instanceof NotTerm) // NOT return not((NotTerm)term, charset); else if (term instanceof HeaderTerm) // HEADER return header((HeaderTerm)term, charset); else if (term instanceof FlagTerm) // FLAG return flag((FlagTerm)term); else if (term instanceof FromTerm) { // FROM FromTerm fterm = (FromTerm)term; return from(fterm.getAddress().toString(), charset); return from(fterm.getPattern(), charset); return recipient(rterm.getRecipientType(), rterm.getAddress().toString(), charset); return recipient(rterm.getRecipientType(), rterm.getPattern(), charset); return subject((SubjectTerm)term, charset); else if (term instanceof BodyTerm) // BODY return body((BodyTerm)term, charset); else if (term instanceof SizeTerm) // SIZE return size((SizeTerm)term); else if (term instanceof SentDateTerm) // SENTDATE
protected Argument not(NotTerm term, String charset) throws SearchException, IOException { Argument result = new Argument(); // Add the NOT search-key result.writeAtom("NOT"); /* If this term is an AND expression, we need to enclose it * within paranthesis. * * AND expressions are either AndTerms or FlagTerms */ SearchTerm nterm = term.getTerm(); if (nterm instanceof AndTerm || nterm instanceof FlagTerm) result.writeArgument(generateSequence(nterm, charset)); else result.append(generateSequence(nterm, charset)); return result; }
/** * Check if the "text" terms in the given SearchTerm contain * non US-ASCII characters. * * @param term the search term * @return true if only ASCII */ public static boolean isAscii(SearchTerm term) { if (term instanceof AndTerm) return isAscii(((AndTerm)term).getTerms()); else if (term instanceof OrTerm) return isAscii(((OrTerm)term).getTerms()); else if (term instanceof NotTerm) return isAscii(((NotTerm)term).getTerm()); else if (term instanceof StringTerm) return isAscii(((StringTerm)term).getPattern()); else if (term instanceof AddressTerm) return isAscii(((AddressTerm)term).getAddress().toString()); // Any other term returns true. return true; }
return and((AndTerm)term, charset); else if (term instanceof OrTerm) // OR return or((OrTerm)term, charset); else if (term instanceof NotTerm) // NOT return not((NotTerm)term, charset); else if (term instanceof HeaderTerm) // HEADER return header((HeaderTerm)term, charset); else if (term instanceof FlagTerm) // FLAG return flag((FlagTerm)term); else if (term instanceof FromTerm) { // FROM FromTerm fterm = (FromTerm)term; return from(fterm.getAddress().toString(), charset); return from(fterm.getPattern(), charset); return recipient(rterm.getRecipientType(), rterm.getAddress().toString(), charset); return recipient(rterm.getRecipientType(), rterm.getPattern(), charset); return subject((SubjectTerm)term, charset); else if (term instanceof BodyTerm) // BODY return body((BodyTerm)term, charset); else if (term instanceof SizeTerm) // SIZE return size((SizeTerm)term); else if (term instanceof SentDateTerm) // SENTDATE
protected Argument not(NotTerm term, String charset) throws SearchException, IOException { Argument result = new Argument(); // Add the NOT search-key result.writeAtom("NOT"); /* If this term is an AND expression, we need to enclose it * within paranthesis. * * AND expressions are either AndTerms or FlagTerms */ SearchTerm nterm = term.getTerm(); if (nterm instanceof AndTerm || nterm instanceof FlagTerm) result.writeArgument(generateSequence(nterm, charset)); else result.append(generateSequence(nterm, charset)); return result; }
/** * Check if the "text" terms in the given SearchTerm contain * non US-ASCII characters. * * @param term the search term * @return true if only ASCII */ public static boolean isAscii(SearchTerm term) { if (term instanceof AndTerm) return isAscii(((AndTerm)term).getTerms()); else if (term instanceof OrTerm) return isAscii(((OrTerm)term).getTerms()); else if (term instanceof NotTerm) return isAscii(((NotTerm)term).getTerm()); else if (term instanceof StringTerm) return isAscii(((StringTerm)term).getPattern()); else if (term instanceof AddressTerm) return isAscii(((AddressTerm)term).getAddress().toString()); // Any other term returns true. return true; }
return and((AndTerm)term, charset); else if (term instanceof OrTerm) // OR return or((OrTerm)term, charset); else if (term instanceof NotTerm) // NOT return not((NotTerm)term, charset); else if (term instanceof HeaderTerm) // HEADER return header((HeaderTerm)term, charset); else if (term instanceof FlagTerm) // FLAG return flag((FlagTerm)term); else if (term instanceof FromTerm) { // FROM FromTerm fterm = (FromTerm)term; return from(fterm.getAddress().toString(), charset); return from(fterm.getPattern(), charset); return recipient(rterm.getRecipientType(), rterm.getAddress().toString(), charset); return recipient(rterm.getRecipientType(), rterm.getPattern(), charset); return subject((SubjectTerm)term, charset); else if (term instanceof BodyTerm) // BODY return body((BodyTerm)term, charset); else if (term instanceof SizeTerm) // SIZE return size((SizeTerm)term); else if (term instanceof SentDateTerm) // SENTDATE
result.writeArgument(generateSequence(terms[0], charset)); else result.append(generateSequence(terms[0], charset)); result.writeArgument(generateSequence(terms[1], charset)); else result.append(generateSequence(terms[1], charset));
private int[] search(String msgSequence, SearchTerm term) throws ProtocolException, SearchException { if (SearchSequence.isAscii(term)) { try { return issueSearch(msgSequence, term, null);
return and((AndTerm)term, charset); else if (term instanceof OrTerm) // OR return or((OrTerm)term, charset); else if (term instanceof NotTerm) // NOT return not((NotTerm)term, charset); else if (term instanceof HeaderTerm) // HEADER return header((HeaderTerm)term, charset); else if (term instanceof FlagTerm) // FLAG return flag((FlagTerm)term); else if (term instanceof FromTerm) { // FROM FromTerm fterm = (FromTerm)term; return from(fterm.getAddress().toString(), charset); return from(fterm.getPattern(), charset); return recipient(rterm.getRecipientType(), rterm.getAddress().toString(), charset); return recipient(rterm.getRecipientType(), rterm.getPattern(), charset); return subject((SubjectTerm)term, charset); else if (term instanceof BodyTerm) // BODY return body((BodyTerm)term, charset); else if (term instanceof SizeTerm) // SIZE return size((SizeTerm)term); else if (term instanceof SentDateTerm) // SENTDATE
result.writeArgument(generateSequence(terms[0], charset)); else result.append(generateSequence(terms[0], charset)); result.writeArgument(generateSequence(terms[1], charset)); else result.append(generateSequence(terms[1], charset));
if (supportsUtf8() || SearchSequence.isAscii(term)) { try { return issueSearch(msgSequence, term, null);
return and((AndTerm)term, charset); else if (term instanceof OrTerm) // OR return or((OrTerm)term, charset); else if (term instanceof NotTerm) // NOT return not((NotTerm)term, charset); else if (term instanceof HeaderTerm) // HEADER return header((HeaderTerm)term, charset); else if (term instanceof FlagTerm) // FLAG return flag((FlagTerm)term); else if (term instanceof FromTerm) { // FROM FromTerm fterm = (FromTerm)term; return from(fterm.getAddress().toString(), charset); return from(fterm.getPattern(), charset); return recipient(rterm.getRecipientType(), rterm.getAddress().toString(), charset); return recipient(rterm.getRecipientType(), rterm.getPattern(), charset); return subject((SubjectTerm)term, charset); else if (term instanceof BodyTerm) // BODY return body((BodyTerm)term, charset); else if (term instanceof SizeTerm) // SIZE return size((SizeTerm)term); else if (term instanceof SentDateTerm) // SENTDATE
Argument args = getSearchSequence().generateSequence(term, charset == null ? null : MimeUtility.javaCharset(charset)