public Argument build() { Argument argument = new Argument(name, value, sourceLocation, comments, ignoredChars); return argument; } }
@Override public Argument deepCopy() { return new Argument(name, deepCopy(value), getSourceLocation(), getComments(), getIgnoredChars()); }
public Argument build() { Argument argument = new Argument(name, value, sourceLocation, comments, ignoredChars); return argument; } }
protected Argument extractArgument(DataFetchingEnvironment environment, Field field, String argumentName, Value defaultValue) { return extractArgument(environment, field, argumentName) .orElse(new Argument(argumentName, defaultValue)); }
protected Predicate getArgumentPredicate(CriteriaBuilder cb, From<?,?> path, DataFetchingEnvironment environment, Argument argument) { ObjectValue whereValue = getValue(argument); if (whereValue.getChildren().isEmpty()) return cb.disjunction(); Logical logical = Optional.of(argument.getName()) .filter(it -> Arrays.asList("AND", "OR").contains(it)) .map(it -> Logical.valueOf(it)) .orElse(Logical.AND); List<Predicate> predicates = new ArrayList<>(); whereValue.getObjectFields().stream() .filter(it -> Arrays.asList("AND", "OR").contains(it.getName())) .map(it -> getArgumentPredicate(cb, path, new ArgumentEnvironment(environment, argument.getName()), new Argument(it.getName(), it.getValue()))) .forEach(predicates::add); whereValue.getObjectFields().stream() .filter(it -> !Arrays.asList("AND", "OR").contains(it.getName())) .map(it -> getFieldPredicate(it.getName(), cb, path, it, new ArgumentEnvironment(environment, argument.getName()), new Argument(it.getName(), it.getValue()))) .filter(predicate -> predicate != null) .forEach(predicates::add); if (predicates.isEmpty()) predicates.add(cb.disjunction()); return (logical == Logical.OR) ? cb.or(predicates.toArray(new Predicate[predicates.size()])) : cb.and(predicates.toArray(new Predicate[predicates.size()])); }
@Override public Argument deepCopy() { return new Argument(name, deepCopy(value), getSourceLocation(), getComments(), getIgnoredChars()); }
.map(it -> getFieldPredicate(fieldName, cb, path, it, new ArgumentEnvironment(environment, argument.getName()), new Argument(it.getName(), it.getValue())) .map(it -> getPredicateFilter(new ObjectField(fieldName, it.getValue()), new ArgumentEnvironment(environment, argument.getName()), new Argument(it.getName(), it.getValue()))
.stream() .filter(it -> !isOrderByArgument(it)) .map(it -> new Argument(selectedField.getName() + "." + it.getName(), it.getValue())) .collect(Collectors.toList()));
Argument where = new Argument("where", argument.getValue()); Map<String, Object> variables = Optional.ofNullable(environment.getContext()) .filter(it -> it instanceof Map)
@SuppressWarnings( "serial" ) protected Predicate getWherePredicate(CriteriaBuilder cb, Root<?> root, From<?,?> path, DataFetchingEnvironment environment, Argument argument) { ObjectValue whereValue = getValue(argument); if(whereValue.getChildren().isEmpty()) return cb.conjunction(); return getArgumentPredicate(cb, (path != null) ? path : root, new DataFetchingEnvironmentImpl( environment.getSource(), new LinkedHashMap<String,Object>() {{ put(Logical.AND.name(), environment.getArguments()); }}, environment.getContext(), environment.getRoot(), environment.getFieldDefinition(), environment.getFields(), environment.getFieldType(), environment.getParentType(), environment.getGraphQLSchema(), environment.getFragmentsByName(), environment.getExecutionId(), environment.getSelectionSet(), environment.getExecutionStepInfo(), environment.getExecutionContext() ), new Argument(Logical.AND.name(), whereValue) ); }
@SuppressWarnings("serial") private PredicateFilter getPredicateFilter(ObjectField objectField, DataFetchingEnvironment environment, Argument argument) { EnumSet<PredicateFilter.Criteria> options = EnumSet.of(PredicateFilter.Criteria.valueOf(argument.getName())); Object filterValue = convertValue( new DataFetchingEnvironmentImpl( environment.getSource(), new LinkedHashMap<String,Object>() {{ put(objectField.getName(), environment.getArgument(argument.getName())); }}, environment.getContext(), environment.getRoot(), environment.getFieldDefinition(), environment.getFields(), environment.getFieldType(), environment.getParentType(), environment.getGraphQLSchema(), environment.getFragmentsByName(), environment.getExecutionId(), environment.getSelectionSet(), environment.getExecutionStepInfo(), environment.getExecutionContext() ), new Argument(objectField.getName(), argument.getValue()), argument.getValue() ); return new PredicateFilter(objectField.getName(), filterValue, options ); }