private Predicate<User> moreThanToPredicate(QuotaClause clause) { QuotaClause.MoreThan moreThan = (QuotaClause.MoreThan) clause; return user -> retrieveUserRatio(user) >= moreThan.getQuotaBoundary().getRatio(); }
private Predicate<User> lessThanToPredicate(QuotaClause clause) { QuotaClause.LessThan lessThan = (QuotaClause.LessThan) clause; return user -> retrieveUserRatio(user) <= lessThan.getQuotaBoundary().getRatio(); }
@Test void fromShouldReturnQuotaRatioMatchWhenMoreThan() { QuotaQuery query = QuotaQuery.builder().moreThan(new QuotaBoundary(0.1)).build(); QueryBuilder expected = rangeQuery(QUOTA_RATIO).gte(0.1); QueryBuilder actual = testee.from(query); assertThat(actual).isEqualToComparingFieldByField(expected); }
public QueryBuilder from(QuotaQuery query) { List<QuotaClause> clauses = query.getClause().getClauses(); if (clauses.isEmpty()) { return matchAllQuery(); } if (clauses.size() == 1) { return singleClauseAsESQuery(clauses.get(0)); } return clausesAsAndESQuery(clauses); }
public QuotaQuery build() { return new QuotaQuery( QuotaClause.and(clauses.build()), limit.orElse(Limit.unlimited()), offset.orElse(Offset.none())); } }
private RangeQueryBuilder convertLessThan(QuotaClause clause) { LessThan lessThan = (LessThan) clause; return rangeQuery(QUOTA_RATIO).lte(lessThan.getQuotaBoundary().getRatio()); }
private RangeQueryBuilder convertMoreThan(QuotaClause clause) { MoreThan moreThan = (MoreThan) clause; return rangeQuery(QUOTA_RATIO).gte(moreThan.getQuotaBoundary().getRatio()); }
private Stream<User> limit(Stream<User> results, Limit limit) { return limit.getValue() .map(results::limit) .orElse(results); }
public static Offset of(int value) { return new Offset(value); }
static And and(List<QuotaClause> clauses) { return new And(clauses); }
static HasDomain hasDomain(Domain domain) { return new HasDomain(domain); }
static MoreThan moreThan(QuotaBoundary quotaBoundary) { return new MoreThan(quotaBoundary); }
static LessThan lessThan(QuotaBoundary quotaBoundary) { return new LessThan(quotaBoundary); }
public static Builder builder() { return new Builder(); }
public Builder hasDomain(Domain domain) { clauses.add(QuotaClause.hasDomain(domain)); return this; }
public Builder lessThan(QuotaBoundary quotaBoundary) { clauses.add(QuotaClause.lessThan(quotaBoundary)); return this; }
public Builder moreThan(QuotaBoundary quotaBoundary) { clauses.add(QuotaClause.moreThan(quotaBoundary)); return this; }
public static Offset none() { return new Offset(0); }
static And and(QuotaClause... clauses) { return new And(ImmutableList.copyOf(clauses)); } }