private Query createQuery()

in mailbox/lucene/src/main/java/org/apache/james/mailbox/lucene/search/LuceneMessageSearchIndex.java [713:748]


    private Query createQuery(Criterion criterion, Query inMailboxes, Collection<MessageUid> recentUids) throws MailboxException {
        if (criterion instanceof SearchQuery.InternalDateCriterion crit) {
            return createInternalDateQuery(crit);
        } else if (criterion instanceof SearchQuery.SaveDateCriterion crit) {
            return createSaveDateQuery(crit);
        } else if (criterion instanceof SearchQuery.SizeCriterion crit) {
            return createSizeQuery(crit);
        }  else if (criterion instanceof SearchQuery.MessageIdCriterion crit) {
            return new TermQuery(new Term(MESSAGE_ID_FIELD, crit.getMessageId().serialize()));
        } else if (criterion instanceof HeaderCriterion crit) {
            return createHeaderQuery(crit);
        } else if (criterion instanceof UidCriterion crit) {
            return createUidQuery(crit);
        } else if (criterion instanceof FlagCriterion crit) {
            return createFlagQuery(toString(crit.getFlag()), crit.getOperator().isSet(), inMailboxes, recentUids);
        } else if (criterion instanceof AttachmentCriterion crit) {
            return createAttachmentQuery(crit.getOperator().isSet());
        } else if (criterion instanceof CustomFlagCriterion crit) {
            return createFlagQuery(crit.getFlag().toLowerCase(Locale.US), crit.getOperator().isSet(), inMailboxes, recentUids);
        } else if (criterion instanceof SearchQuery.TextCriterion crit) {
            return createTextQuery(crit);
        } else if (criterion instanceof SearchQuery.AllCriterion) {
            return createAllQuery();
        } else if (criterion instanceof SearchQuery.ConjunctionCriterion crit) {
            return createConjunctionQuery(crit, inMailboxes, recentUids);
        } else if (criterion instanceof SearchQuery.ModSeqCriterion) {
            return createModSeqQuery((SearchQuery.ModSeqCriterion) criterion);
        } else if (criterion instanceof SearchQuery.MimeMessageIDCriterion mimeMessageIDCriterion) {
            return createHeaderQuery(mimeMessageIDCriterion.asHeaderCriterion());
        } else if (criterion instanceof SearchQuery.SubjectCriterion subjectCriterion) {
            return createHeaderQuery(subjectCriterion.asHeaderCriterion());
        } else if (criterion instanceof SearchQuery.ThreadIdCriterion threadIdCriterion) {
            return createTermQuery(THREAD_ID_FIELD, threadIdCriterion.getThreadId().serialize());
        }
        throw new UnsupportedSearchException();
    }