private Query convertFlag()

in mailbox/opensearch/src/main/java/org/apache/james/mailbox/opensearch/query/CriterionConverter.java [291:355]


    private Query convertFlag(SearchQuery.FlagCriterion flagCriterion) {
        SearchQuery.BooleanOperator operator = flagCriterion.getOperator();
        Flags.Flag flag = flagCriterion.getFlag();
        if (flag.equals(Flags.Flag.DELETED)) {
            return new BoolQuery.Builder()
                .filter(new TermQuery.Builder()
                    .field(JsonMessageConstants.IS_DELETED)
                    .value(new FieldValue.Builder().booleanValue(operator.isSet()).build())
                    .build()
                    ._toQuery())
                .build()
                ._toQuery();
        }
        if (flag.equals(Flags.Flag.ANSWERED)) {
            return new BoolQuery.Builder()
                .filter(new TermQuery.Builder()
                    .field(JsonMessageConstants.IS_ANSWERED)
                    .value(new FieldValue.Builder().booleanValue(operator.isSet()).build())
                    .build()
                    ._toQuery())
                .build()
                ._toQuery();
        }
        if (flag.equals(Flags.Flag.DRAFT)) {
            return new BoolQuery.Builder()
                .filter(new TermQuery.Builder()
                    .field(JsonMessageConstants.IS_DRAFT)
                    .value(new FieldValue.Builder().booleanValue(operator.isSet()).build())
                    .build()
                    ._toQuery())
                .build()
                ._toQuery();
        }
        if (flag.equals(Flags.Flag.SEEN)) {
            return new BoolQuery.Builder()
                .filter(new TermQuery.Builder()
                    .field(JsonMessageConstants.IS_UNREAD)
                    .value(new FieldValue.Builder().booleanValue(!operator.isSet()).build())
                    .build()
                    ._toQuery())
                .build()
                ._toQuery();
        }
        if (flag.equals(Flags.Flag.RECENT)) {
            return new BoolQuery.Builder()
                .filter(new TermQuery.Builder()
                    .field(JsonMessageConstants.IS_RECENT)
                    .value(new FieldValue.Builder().booleanValue(operator.isSet()).build())
                    .build()
                    ._toQuery())
                .build()
                ._toQuery();
        }
        if (flag.equals(Flags.Flag.FLAGGED)) {
            return new BoolQuery.Builder()
                .filter(new TermQuery.Builder()
                    .field(JsonMessageConstants.IS_FLAGGED)
                    .value(new FieldValue.Builder().booleanValue(operator.isSet()).build())
                    .build()
                    ._toQuery())
                .build()
                ._toQuery();
        }
        throw new RuntimeException("Unknown flag used in Flag search criterion");
    }