in mailbox/lucene/src/main/java/org/apache/james/mailbox/lucene/search/LuceneMessageSearchIndex.java [1187:1236]
private Query createQuery(Criterion criterion, Query inMailboxes, Collection<MessageUid> recentUids) throws MailboxException {
if (criterion instanceof SearchQuery.InternalDateCriterion) {
SearchQuery.InternalDateCriterion crit = (SearchQuery.InternalDateCriterion) criterion;
return createInternalDateQuery(crit);
} else if (criterion instanceof SearchQuery.SaveDateCriterion) {
SearchQuery.SaveDateCriterion crit = (SearchQuery.SaveDateCriterion) criterion;
return createSaveDateQuery(crit);
} else if (criterion instanceof SearchQuery.SizeCriterion) {
SearchQuery.SizeCriterion crit = (SearchQuery.SizeCriterion) criterion;
return createSizeQuery(crit);
} else if (criterion instanceof SearchQuery.MessageIdCriterion) {
SearchQuery.MessageIdCriterion crit = (SearchQuery.MessageIdCriterion) criterion;
return createTermQuery(MESSAGE_ID_FIELD, crit.getMessageId().serialize());
} else if (criterion instanceof SearchQuery.HeaderCriterion) {
HeaderCriterion crit = (HeaderCriterion) criterion;
return createHeaderQuery(crit);
} else if (criterion instanceof SearchQuery.UidCriterion) {
SearchQuery.UidCriterion crit = (SearchQuery.UidCriterion) criterion;
return createUidQuery(crit);
} else if (criterion instanceof SearchQuery.FlagCriterion) {
FlagCriterion crit = (FlagCriterion) criterion;
return createFlagQuery(toString(crit.getFlag()), crit.getOperator().isSet(), inMailboxes, recentUids);
} else if (criterion instanceof SearchQuery.AttachmentCriterion) {
AttachmentCriterion crit = (AttachmentCriterion) criterion;
return createAttachmentQuery(crit.getOperator().isSet());
} else if (criterion instanceof SearchQuery.CustomFlagCriterion) {
CustomFlagCriterion crit = (CustomFlagCriterion) criterion;
return createFlagQuery(crit.getFlag(), crit.getOperator().isSet(), inMailboxes, recentUids);
} else if (criterion instanceof SearchQuery.TextCriterion) {
SearchQuery.TextCriterion crit = (SearchQuery.TextCriterion) criterion;
return createTextQuery(crit);
} else if (criterion instanceof SearchQuery.AllCriterion) {
return createAllQuery((AllCriterion) criterion);
} else if (criterion instanceof SearchQuery.ConjunctionCriterion) {
SearchQuery.ConjunctionCriterion crit = (SearchQuery.ConjunctionCriterion) criterion;
return createConjunctionQuery(crit, inMailboxes, recentUids);
} else if (criterion instanceof SearchQuery.ModSeqCriterion) {
return createModSeqQuery((SearchQuery.ModSeqCriterion) criterion);
} else if (criterion instanceof SearchQuery.MimeMessageIDCriterion) {
SearchQuery.MimeMessageIDCriterion mimeMessageIDCriterion = (SearchQuery.MimeMessageIDCriterion) criterion;
return createHeaderQuery(mimeMessageIDCriterion.asHeaderCriterion());
} else if (criterion instanceof SearchQuery.SubjectCriterion) {
SearchQuery.SubjectCriterion subjectCriterion = (SearchQuery.SubjectCriterion) criterion;
return createHeaderQuery(subjectCriterion.asHeaderCriterion());
} else if (criterion instanceof SearchQuery.ThreadIdCriterion) {
SearchQuery.ThreadIdCriterion threadIdCriterion = (SearchQuery.ThreadIdCriterion) criterion;
return createTermQuery(THREAD_ID_FIELD, threadIdCriterion.getThreadId().serialize());
}
throw new UnsupportedSearchException();
}