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");
}