/** * Creates a Mongo Bson object for field-based search criteria. * * @param expression the expression to create a filter for. * @param predicateFunction the function for creating the predicate-part (e.g. "eq", "ne", ...) of the criteria * @return the complete Bson for the field-based search criteria */ public static Bson apply(final FilterFieldExpression expression, final Function<String, Bson> predicateFunction) { return expression.acceptFilterVisitor(new GetFilterBsonVisitor(predicateFunction)); }
@Override public Function<Boolean, Optional<Bson>> visitField(final FilterFieldExpression fieldExpression, final Predicate predicate) { return isPositive -> fieldExpression.accept(new CreateUnwoundBsonFieldVisitor(predicate)); }
/** * Creates a Mongo Bson object for field-based search criteria. * * @param expression the expression to create a filter for. * @param predicateFunction the function for creating the predicate-part (e.g. "eq", "ne", ...) of the criteria * @return the complete Bson for the field-based search criteria */ public static Bson apply(final FilterFieldExpression expression, final Function<String, Bson> predicateFunction) { return expression.acceptFilterVisitor(new GetFilterBsonVisitor(predicateFunction)); }
@Override public Function<Boolean, Optional<Bson>> visitField(final FilterFieldExpression fieldExpression, final Predicate predicate) { return isPositive -> fieldExpression.accept(new CreateUnwoundBsonFieldVisitor(predicate)); }
public static Predicate<Thing> apply(final FilterFieldExpression expression, final Function<String, Predicate<Thing>> predicateFunction) { return expression.acceptFilterVisitor(new FilterThingPredicateVisitor(predicateFunction)); }
@Override public Predicate<Document> visitField(final FilterFieldExpression fieldExpression, final org.eclipse.ditto.model.query.criteria.Predicate predicate) { return thingResult -> { final java.util.function.Predicate<Document> javaPredicate = fieldExpression.accept(new IsInternalViewVisitor()); final List<?> internalList = thingResult.get(PersistenceConstants.FIELD_INTERNAL, List.class); return internalList.stream() .anyMatch(element -> element instanceof Document && javaPredicate.test((Document) element)); }; }
@Override public Predicate<Document> visitField(final FilterFieldExpression fieldExpression, final org.eclipse.ditto.model.query.criteria.Predicate predicate) { return thingResult -> { final java.util.function.Predicate<Document> javaPredicate = fieldExpression.accept(new IsInternalViewVisitor()); final List<?> internalList = thingResult.get(PersistenceConstants.FIELD_INTERNAL, List.class); return internalList.stream() .anyMatch(element -> element instanceof Document && javaPredicate.test((Document) element)); }; }