private Operator operator(FilterExpression expression) { return expression instanceof FilterPredicate ? ((FilterPredicate) expression).getOperator() : null; }
private Operator operator(FilterExpression expression) { return expression instanceof FilterPredicate ? ((FilterPredicate) expression).getOperator() : null; }
private Serializable extractId(FilterExpression filterExpression, String idFieldName, Class<?> relationClass) { Collection<FilterPredicate> predicates = filterExpression.accept(new PredicateExtractionVisitor()); return predicates.stream() .filter(p -> p.getEntityType() == relationClass && p.getOperator() == Operator.IN) .filter(p -> p.getValues().size() == 1) .filter(p -> p.getField().equals(idFieldName)) .findFirst() .map(p -> (Serializable) p.getValues().get(0)) .orElse(null); } }
/** * Applies a filter predicate to the object in question. * * @param object object returned from datastore * @param filterPredicate A predicate from filterExpressionCheck * @param requestScope Request scope object * @return true if the object pass evaluation against Predicate. */ public boolean applyPredicateToObject(T object, FilterPredicate filterPredicate, RequestScope requestScope) { try { String fieldPath = filterPredicate.getFieldPath(); com.yahoo.elide.core.RequestScope scope = coreScope(requestScope); Predicate fn = filterPredicate.getOperator().contextualize(fieldPath, filterPredicate.getValues(), scope); return fn.test(object); } catch (Exception e) { log.error("Failed to apply predicate {}", filterPredicate, e); return false; } }
/** * Applies a filter predicate to the object in question. * * @param object object returned from datastore * @param filterPredicate A predicate from filterExpressionCheck * @param requestScope Request scope object * @return true if the object pass evaluation against Predicate. */ public boolean applyPredicateToObject(T object, FilterPredicate filterPredicate, RequestScope requestScope) { try { String fieldPath = filterPredicate.getFieldPath(); com.yahoo.elide.core.RequestScope scope = coreScope(requestScope); Predicate fn = filterPredicate.getOperator().contextualize(fieldPath, filterPredicate.getValues(), scope); return fn.test(object); } catch (Exception e) { log.error("Failed to apply predicate {}", filterPredicate, e); return false; } }
switch (filterPredicate.getOperator()) { case IN: Preconditions.checkState(!filterPredicate.getValues().isEmpty()); throw new InvalidPredicateException("Operator not implemented: " + filterPredicate.getOperator());
/** * Given a collection of filter predicates and a Hibernate query, populates the named parameters in the * Hibernate query. * * @param query The HQL query * @param predicates The predicates to extract named parameter values from */ protected void supplyFilterQueryParameters(Query query, Collection<FilterPredicate> predicates) { for (FilterPredicate filterPredicate : predicates) { if (filterPredicate.getOperator().isParameterized()) { boolean shouldEscape = filterPredicate.isMatchingOperator(); filterPredicate.getParameters().forEach(param -> { query.setParameter(param.getName(), shouldEscape ? param.escapeMatching() : param.getValue()); }); } } }