@Override protected T itrArrayContainsExpression(ArrayContainsExpression q, Path context) { if(q.getOp()==ContainsOperator._any) { return processAnyExpression(q); } else return null; }
@Override protected T itrArrayContainsExpression(ArrayContainsExpression q, Path context) { if(q.getOp()==ContainsOperator._any) { return processAnyExpression(q); } else return null; }
@Override protected QueryExpression itrArrayContainsExpression(ArrayContainsExpression q, Path context) { return new ArrayContainsExpression(toRelative(q.getArray(), context), q.getOp(), q.getValues()); }
@Override protected QueryExpression itrArrayContainsExpression(ArrayContainsExpression q, Path context) { return new ArrayContainsExpression(toRelative(q.getArray(), context), q.getOp(), q.getValues()); }
protected QueryExpression itrArrayContainsExpression(ArrayContainsExpression q, Path context) { Binder binding = getBoundValue(q.getValues()); if (binding != null) { return new ArrayContainsExpression(q.getArray(), q.getOp(), (List<Value>) binding.getValue()); } else { return q; } }
protected QueryExpression itrArrayContainsExpression(ArrayContainsExpression q, Path context) { Binder binding = getBoundValue(q.getValues()); if (binding != null) { return new ArrayContainsExpression(q.getArray(), q.getOp(), (List<Value>) binding.getValue()); } else { return q; } }
@Override protected QueryExpression itrArrayContainsExpression(ArrayContainsExpression q, Path context) { Path p = rewrite(context, q.getArray()); if (!p.equals(q.getArray())) { return new ArrayContainsExpression(p, q.getOp(), q.getValues()); } else { return q; } }
@Override protected QueryExpression itrArrayContainsExpression(ArrayContainsExpression q, Path context) { Path p = rewrite(context, q.getArray()); if (!p.equals(q.getArray())) { return new ArrayContainsExpression(p, q.getOp(), q.getValues()); } else { return q; } }
@Override protected QueryExpression itrArrayContainsExpression(ArrayContainsExpression q, Path context) { Path p = applyContext(context, q.getArray()); if (p != null) { return new ArrayContainsExpression(removeContext(context, p, q.getArray()), q.getOp(), q.getValues()); } else { return q; } }
@Override protected QueryExpression itrArrayContainsExpression(ArrayContainsExpression q, Path context) { Path p = applyContext(context, q.getArray()); if (p != null) { return new ArrayContainsExpression(removeContext(context, p, q.getArray()), q.getOp(), q.getValues()); } else { return q; } }
@Override protected QueryExpression itrArrayContainsExpression(ArrayContainsExpression q, Path context) { Path p = rewrite(context, q.getArray()); if (!p.equals(q.getArray())) { return new ArrayContainsExpression(p, q.getOp(), q.getValues()); } else { return q; } }
@Override public boolean evaluate(QueryEvaluationContext ctx) { boolean ret = false; JsonNode node = ctx.getNode(expr.getArray()); if (node instanceof ArrayNode) { ArrayNode array = (ArrayNode) node; List<Value> values = expr.getValues(); ContainsOperator op = expr.getOp(); Type t = elem.getType(); int numElementsContained = 0; for (Iterator<JsonNode> itr = array.elements(); itr.hasNext();) { JsonNode valueNode = itr.next(); for (Value value : values) { Object v = value.getValue(); if (isValueInNode(valueNode, v, t)) { numElementsContained++; break; } } } ret = evaluateContainsOperator(op, numElementsContained, values); } ctx.setResult(ret); return ret; }
@Override public boolean evaluate(QueryEvaluationContext ctx) { boolean ret = false; JsonNode node = ctx.getNode(expr.getArray()); if (node instanceof ArrayNode) { ArrayNode array = (ArrayNode) node; List<Value> values = expr.getValues(); ContainsOperator op = expr.getOp(); Type t = elem.getType(); int numElementsContained = 0; for (Iterator<JsonNode> itr = array.elements(); itr.hasNext();) { JsonNode valueNode = itr.next(); for (Value value : values) { Object v = value.getValue(); if (isValueInNode(valueNode, v, t)) { numElementsContained++; break; } } } ret = evaluateContainsOperator(op, numElementsContained, values); } ctx.setResult(ret); return ret; }
@Override public boolean evaluate(QueryEvaluationContext ctx) { boolean ret = false; JsonNode node = ctx.getNode(expr.getArray()); if (node instanceof ArrayNode) { ArrayNode array = (ArrayNode) node; List<Value> values = expr.getValues(); ContainsOperator op = expr.getOp(); Type t = elem.getType(); int numElementsContained = 0; for (Iterator<JsonNode> itr = array.elements(); itr.hasNext();) { JsonNode valueNode = itr.next(); for (Value value : values) { Object v = value.getValue(); if (isValueInNode(valueNode, v, t)) { numElementsContained++; break; } } } ret = evaluateContainsOperator(op, numElementsContained, values); } ctx.setResult(ret); return ret; }
@Override protected QueryExpression itrArrayContainsExpression(ArrayContainsExpression q, Path context) { QueryFieldInfo qfi = findFieldInfo(q.getArray(), q); if (qfi.getFieldEntity() != currentEntity) { return new TruePH(); } else if (qfi.getFieldNameInClause().equals(qfi.getEntityRelativeFieldName()) && nestedFieldPrefix.isEmpty()) { return q; } else { return new ArrayContainsExpression(addPrefix(qfi.getEntityRelativeFieldName()), q.getOp(), q.getValues()); } }
@Override protected QueryExpression itrArrayContainsExpression(ArrayContainsExpression q, Path context) { QueryFieldInfo qfi = findFieldInfo(q.getArray(), q); if (qfi.getFieldEntity() != currentEntity) { return new TruePH(); } else if (qfi.getFieldNameInClause().equals(qfi.getEntityRelativeFieldName()) && nestedFieldPrefix.isEmpty()) { return q; } else { return new ArrayContainsExpression(addPrefix(qfi.getEntityRelativeFieldName()), q.getOp(), q.getValues()); } }
private DBObject translateArrayContains(FieldTreeNode context, EntityMetadata md, ArrayContainsExpression expr,MutablePath fullPath) { DBObject ret = null; FieldInfo finfo=resolveFieldForQuery(context,fullPath.immutableCopy(),expr.getArray()); if (finfo.fieldMd instanceof ArrayField) { Type t = ((ArrayField) finfo.fieldMd).getElement().getType(); switch (expr.getOp()) { case _all: ret = translateArrayContainsAll(t, finfo.field, expr.getValues()); break; case _any: ret = translateArrayContainsAny(t, finfo.field, expr.getValues()); break; case _none: ret = translateArrayContainsNone(t, finfo.field, expr.getValues()); break; } } else { throw Error.get(ERR_INVALID_FIELD, expr.toString()); } return ret; }
private DBObject translateArrayContains(FieldTreeNode context, ArrayContainsExpression expr) { DBObject ret = null; FieldTreeNode arrayNode = resolve(context, expr.getArray()); if (arrayNode instanceof ArrayField) { Type t = ((ArrayField) arrayNode).getElement().getType(); switch (expr.getOp()) { case _all: ret = translateArrayContainsAll(t, expr.getArray(), expr.getValues()); break; case _any: ret = translateArrayContainsAny(t, expr.getArray(), expr.getValues()); break; case _none: ret = translateArrayContainsNone(t, expr.getArray(), expr.getValues()); break; } } else { throw Error.get(ERR_INVALID_FIELD, expr.toString()); } return ret; }
FieldTreeNode fieldMd=ctx.contextNode.resolve(query.getArray()); String valueArr=declareValueArray(ctx,((ArrayField)fieldMd).getElement(),query.getValues()); Block arrayContainsBlock=new Block(ctx.topLevel.newGlobal(ctx,query.getOp()==ContainsOperator._any?"false":"true")); SimpleStatement.S_BREAK)); switch(query.getOp()) { case _any: arrayLoop.add(new IfStatement(new SimpleExpression(arrayLoop.resultVar),