private QueryBuilder convertFlag(SearchQuery.FlagCriterion flagCriterion) { SearchQuery.BooleanOperator operator = flagCriterion.getOperator(); Flags.Flag flag = flagCriterion.getFlag(); if (flag.equals(Flags.Flag.DELETED)) { return boolQuery().filter(termQuery(JsonMessageConstants.IS_DELETED, operator.isSet())); } if (flag.equals(Flags.Flag.ANSWERED)) { return boolQuery().filter(termQuery(JsonMessageConstants.IS_ANSWERED, operator.isSet())); } if (flag.equals(Flags.Flag.DRAFT)) { return boolQuery().filter(termQuery(JsonMessageConstants.IS_DRAFT, operator.isSet())); } if (flag.equals(Flags.Flag.SEEN)) { return boolQuery().filter(termQuery(JsonMessageConstants.IS_UNREAD, !operator.isSet())); } if (flag.equals(Flags.Flag.RECENT)) { return boolQuery().filter(termQuery(JsonMessageConstants.IS_RECENT, operator.isSet())); } if (flag.equals(Flags.Flag.FLAGGED)) { return boolQuery().filter(termQuery(JsonMessageConstants.IS_FLAGGED, operator.isSet())); } throw new RuntimeException("Unknown flag used in Flag search criterion"); }
private boolean matches(SearchQuery.FlagCriterion criterion, MailboxMessage message, Collection<MessageUid> recentMessageUids) { SearchQuery.BooleanOperator operator = criterion.getOperator(); boolean isSet = operator.isSet(); Flags.Flag flag = criterion.getFlag(); if (flag == Flags.Flag.ANSWERED) { return isSet == message.isAnswered(); } else if (flag == Flags.Flag.SEEN) { return isSet == message.isSeen(); } else if (flag == Flags.Flag.DRAFT) { return isSet == message.isDraft(); } else if (flag == Flags.Flag.FLAGGED) { return isSet == message.isFlagged(); } else if (flag == Flags.Flag.RECENT) { final MessageUid uid = message.getUid(); return isSet == recentMessageUids.contains(uid); } else if (flag == Flags.Flag.DELETED) { return isSet == message.isDeleted(); } else { return false; } }
private QueryBuilder convertAttachmentCriterion(SearchQuery.AttachmentCriterion criterion) { return termQuery(JsonMessageConstants.HAS_ATTACHMENT, criterion.getOperator().isSet()); }
public static Criterion flag(Flag flag, boolean isSet) { return new FlagCriterion(flag, new BooleanOperator(isSet)); }
private QueryBuilder convertCustomFlagCriterion(SearchQuery.CustomFlagCriterion criterion) { QueryBuilder termQueryBuilder = termQuery(JsonMessageConstants.USER_FLAGS, criterion.getFlag()); if (criterion.getOperator().isSet()) { return termQueryBuilder; } else { return boolQuery().mustNot(termQueryBuilder); } }
/** * Creates a filter on the given flag selecting messages where the given * flag is selected. * * @param flag * <code>Flag</code>, not null * @return <code>Criterion</code>, not null */ public static Criterion flagIsSet(String flag) { return new CustomFlagCriterion(flag, BooleanOperator.set()); }
/** * Creates a filter on the given flag selecting messages where the given * flag is selected. * * @param flag * <code>Flag</code>, not null * @return <code>Criterion</code>, not null */ public static Criterion flagIsSet(Flag flag) { return new FlagCriterion(flag, BooleanOperator.set()); }
private boolean matches(SearchQuery.AttachmentCriterion criterion, MailboxMessage message) throws UnsupportedSearchException { boolean mailHasAttachments = message.getProperties() .stream() .anyMatch(PropertyBuilder.isHasAttachmentProperty()); return mailHasAttachments == criterion.getOperator().isSet(); }
private boolean matches(SearchQuery.CustomFlagCriterion criterion, MailboxMessage message) { SearchQuery.BooleanOperator operator = criterion.getOperator(); boolean isSet = operator.isSet(); String flag = criterion.getFlag(); return isSet == message.createFlags().contains(flag); }
/** * Creates a filter on the given flag selecting messages where the given * flag is not selected. * * @param flag * <code>Flag</code>, not null * @return <code>Criterion</code>, not null */ public static Criterion flagIsUnSet(Flag flag) { return new FlagCriterion(flag, BooleanOperator.unset()); }
/** * Creates a filter on the given flag selecting messages where the given * flag is not selected. * * @param flag * <code>Flag</code>, not null * @return <code>Criterion</code>, not null */ public static Criterion flagIsUnSet(String flag) { return new CustomFlagCriterion(flag, BooleanOperator.unset()); }