@Override public QueryExpression parseQuery(JsonNode object) { return object == null ? null : QueryExpression.fromJson(object); }
@Override public void putQuery(JsonNode object, String name, QueryExpression q) { if (q != null) { ((ObjectNode) object).set(name, q.toJson()); } }
private boolean isQueried(Path field) { LOGGER.debug("Checking if {} is queried", field); for (QueryExpression q : queries) { if (q.isRequired(field)) { return true; } } return false; }
@Override public String toString() { return query.toString() + " [ " + fieldBindings + " ]"; } }
private static boolean isFieldQueried(Path field, ArrayMatchExpression q, Path context) { LOGGER.debug("Checking if field {} is queried by array expression {}", field, q); if (isFieldQueried(field, q.getArray(), context)) { return true; } else { return q.getElemMatch().isRequired(field, new Path(new Path(context, q.getArray()), Path.ANYPATH)); } } }
List<QueryInContext> bindable=query.getBindableClauses(); LOGGER.debug("Bindable clauses:{}",bindable); boundQuery=query.bind(fb,bindRequest);
@Override public String toString() { return clause.toString(); } }
private static boolean isFieldQueried(Path field, ArrayMatchExpression q, Path context) { LOGGER.debug("Checking if field {} is queried by array expression {}", field, q); if (isFieldQueried(field, q.getArray(), context)) { return true; } else { return q.getElemMatch().isRequired(field, new Path(new Path(context, q.getArray()), Path.ANYPATH)); } } }
@Override public void putQuery(JsonNode object,String name,QueryExpression q) { if(q!=null) ((ObjectNode)object).put(name,q.toJson()); }
@Override public QueryExpression getQuery(JsonNode object, String name) { JsonNode node = object.get(name); return node == null ? null : QueryExpression.fromJson(node); }
/** * Returns if the field is required to evaluate this query * * @param field The field */ public boolean isRequired(Path field) { LOGGER.debug("Checking if {} is queried", field); boolean ret=isRequired(field, Path.EMPTY); LOGGER.debug("{} queried:{}",field,ret); return ret; }
@Override public String toString() { return query.toString() + " [ " + fieldBindings + " ]"; } }
@Override public void putQuery(JsonNode object, String name, QueryExpression q) { if (q != null) { ((ObjectNode) object).set(name, q.toJson()); } }
@Override public QueryExpression getQuery(JsonNode object, String name) { JsonNode node = object.get(name); return node == null ? null : QueryExpression.fromJson(node); }
/** * Returns if the field is required to evaluate this query * * @param field The field */ public boolean isRequired(Path field) { LOGGER.debug("Checking if {} is queried", field); boolean ret=isRequired(field, Path.EMPTY); LOGGER.debug("{} queried:{}",field,ret); return ret; }
@Override public String toString() { return clause.toString(); } }
/** * Returns a Json node representation of the request */ @Override public JsonNode toJson() { ObjectNode node = (ObjectNode) super.toJson(); if (query != null) { node.set("query", query.toJson()); } return node; }
/** * Parses a query expression that can be used in for-each clauses */ public static QueryExpression fromJson(JsonNode node) { if (node instanceof TextNode && "$all".equals(node.asText())) { return new AllMatchExpression(); } else { return QueryExpression.fromJson(node); } } }
private boolean isQueried(Path field) { LOGGER.debug("Checking if {} is queried", field); for (QueryExpression q : queries) { if (q.isRequired(field)) { LOGGER.debug("{} is queried by {}", field, q); return true; } else { LOGGER.debug("{} is not queried by {}", field,q); } } return false; }