private static <T> Predicate<T> getComparator(String field, List<Object> values, RequestScope requestScope, Predicate<Integer> condition) { return (T entity) -> { if (values.size() == 0) { throw new InvalidPredicateException("No value to compare"); } Object fieldVal = getFieldValue(entity, field, requestScope); return fieldVal != null && values.stream() .anyMatch(testVal -> condition.test(compare(fieldVal, testVal))); }; }
private static <T> Predicate<T> getComparator(String field, List<Object> values, RequestScope requestScope, Predicate<Integer> condition) { return (T entity) -> { if (values.size() == 0) { throw new InvalidPredicateException("No value to compare"); } Object fieldVal = getFieldValue(entity, field, requestScope); return fieldVal != null && values.stream() .anyMatch(testVal -> condition.test(compare(fieldVal, testVal))); }; }
private static <T> Predicate<T> infix(String field, List<Object> values, RequestScope requestScope, Function<String, String> transform) { return (T entity) -> { if (values.size() != 1) { throw new InvalidPredicateException("INFIX can only take one argument"); } Object val = getFieldValue(entity, field, requestScope); String valStr = CoerceUtil.coerce(val, String.class); String filterStr = CoerceUtil.coerce(values.get(0), String.class); return valStr != null && filterStr != null && transform.apply(valStr).contains(transform.apply(filterStr)); }; }
private static <T> Predicate<T> prefix(String field, List<Object> values, RequestScope requestScope, Function<String, String> transform) { return (T entity) -> { if (values.size() != 1) { throw new InvalidPredicateException("PREFIX can only take one argument"); } Object val = getFieldValue(entity, field, requestScope); String valStr = CoerceUtil.coerce(val, String.class); String filterStr = CoerceUtil.coerce(values.get(0), String.class); return valStr != null && filterStr != null && transform.apply(valStr).startsWith(transform.apply(filterStr)); }; }
private static <T> Predicate<T> postfix(String field, List<Object> values, RequestScope requestScope, Function<String, String> transform) { return (T entity) -> { if (values.size() != 1) { throw new InvalidPredicateException("POSTFIX can only take one argument"); } Object val = getFieldValue(entity, field, requestScope); String valStr = CoerceUtil.coerce(val, String.class); String filterStr = CoerceUtil.coerce(values.get(0), String.class); return valStr != null && filterStr != null && transform.apply(valStr).endsWith(transform.apply(filterStr)); }; }
private static <T> Predicate<T> prefix(String field, List<Object> values, RequestScope requestScope, Function<String, String> transform) { return (T entity) -> { if (values.size() != 1) { throw new InvalidPredicateException("PREFIX can only take one argument"); } Object val = getFieldValue(entity, field, requestScope); String valStr = CoerceUtil.coerce(val, String.class); String filterStr = CoerceUtil.coerce(values.get(0), String.class); return valStr != null && filterStr != null && transform.apply(valStr).startsWith(transform.apply(filterStr)); }; }
private static <T> Predicate<T> infix(String field, List<Object> values, RequestScope requestScope, Function<String, String> transform) { return (T entity) -> { if (values.size() != 1) { throw new InvalidPredicateException("INFIX can only take one argument"); } Object val = getFieldValue(entity, field, requestScope); String valStr = CoerceUtil.coerce(val, String.class); String filterStr = CoerceUtil.coerce(values.get(0), String.class); return valStr != null && filterStr != null && transform.apply(valStr).contains(transform.apply(filterStr)); }; }
/** * Returns Operator from query parameter operator notation. * * @param string operator notation from query parameter * @return Operator */ public static Operator fromString(final String string) { for (final Operator operator : values()) { if (operator.getNotation().equals(string)) { return operator; } } throw new InvalidPredicateException("Unknown operator in filter: " + string); }
private static <T> Predicate<T> postfix(String field, List<Object> values, RequestScope requestScope, Function<String, String> transform) { return (T entity) -> { if (values.size() != 1) { throw new InvalidPredicateException("POSTFIX can only take one argument"); } Object val = getFieldValue(entity, field, requestScope); String valStr = CoerceUtil.coerce(val, String.class); String filterStr = CoerceUtil.coerce(values.get(0), String.class); return valStr != null && filterStr != null && transform.apply(valStr).endsWith(transform.apply(filterStr)); }; }
private Optional<FilterExpression> buildFilter(String typeName, Optional<String> filter, RequestScope requestScope) { // TODO: Refactor FilterDialect interfaces to accept string or List<String> instead of (or in addition to?) // query params. return filter.map(filterStr -> { MultivaluedMap<String, String> queryParams = new MultivaluedHashMap<String, String>() { { put("filter[" + typeName + "]", Arrays.asList(filterStr)); } }; try { return requestScope.getFilterDialect().parseTypedExpression(typeName, queryParams).get(typeName); } catch (ParseException e) { log.debug("Filter parse exception caught", e); throw new InvalidPredicateException("Could not parse filter for type: " + typeName); } }); } }
/** * Returns Operator from query parameter operator notation. * * @param string operator notation from query parameter * @return Operator */ public static Operator fromString(final String string) { for (final Operator operator : values()) { if (operator.getNotation().equals(string)) { return operator; } } throw new InvalidPredicateException("Unknown operator in filter: " + string); }
private Optional<FilterExpression> buildFilter(String typeName, Optional<String> filter, RequestScope requestScope) { // TODO: Refactor FilterDialect interfaces to accept string or List<String> instead of (or in addition to?) // query params. return filter.map(filterStr -> { MultivaluedMap<String, String> queryParams = new MultivaluedHashMap<String, String>() { { put("filter[" + typeName + "]", Arrays.asList(filterStr)); } }; try { return requestScope.getFilterDialect().parseTypedExpression(typeName, queryParams).get(typeName); } catch (ParseException e) { log.debug("Filter parse exception caught", e); throw new InvalidPredicateException("Could not parse filter for type: " + typeName); } }); } }
private Set<PersistentResource> getRelation(String relationName, Optional<FilterExpression> filterExpression, Optional<Sorting> sorting, Optional<Pagination> pagination, boolean checked) { if (checked && !checkRelation(relationName)) { return Collections.emptySet(); } final Class<?> relationClass = dictionary.getParameterizedType(obj, relationName); if (pagination.isPresent() && !pagination.get().isDefaultInstance() && !CanPaginateVisitor.canPaginate(relationClass, dictionary, requestScope)) { throw new InvalidPredicateException(String.format("Cannot paginate %s", dictionary.getJsonAliasFor(relationClass))); } return getRelationUnchecked(relationName, filterExpression, sorting, pagination); }
private Set<PersistentResource> getRelation(String relationName, Optional<FilterExpression> filterExpression, Optional<Sorting> sorting, Optional<Pagination> pagination, boolean checked) { if (checked && !checkRelation(relationName)) { return Collections.emptySet(); } final Class<?> relationClass = dictionary.getParameterizedType(obj, relationName); if (pagination.isPresent() && !pagination.get().isDefaultInstance() && !CanPaginateVisitor.canPaginate(relationClass, dictionary, requestScope)) { throw new InvalidPredicateException(String.format("Cannot paginate %s", dictionary.getJsonAliasFor(relationClass))); } return getRelationUnchecked(relationName, filterExpression, sorting, pagination); }
throw new InvalidPredicateException("Operator not implemented: " + filterPredicate.getOperator());
throw new InvalidPredicateException(String.format("Cannot paginate %s", dictionary.getJsonAliasFor(loadClass)));
throw new InvalidPredicateException(String.format("Cannot paginate %s", dictionary.getJsonAliasFor(loadClass)));
throw new InvalidPredicateException(errorMessage);
throw new InvalidPredicateException(errorMessage);