private Predicate<User> andToPredicate(QuotaClause clause) { QuotaClause.And and = (QuotaClause.And) clause; return andToPredicate(and); }
@Override public List<User> search(QuotaQuery query) { Stream<User> results = Iterators.toStream(listUsers()) .map(User::fromUsername) .filter(clauseConverter.andToPredicate(query.getClause())) .sorted(Comparator.comparing(User::asString)) .skip(query.getOffset().getValue()); return limit(results, query.getLimit()) .collect(Guavate.toImmutableList()); }
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(); }