private DBObject translateValueComparisonExpression(FieldTreeNode context, EntityMetadata md, ValueComparisonExpression expr,MutablePath fullPath) { FieldInfo finfo=resolveFieldForQuery(context,fullPath.immutableCopy(),expr.getField()); Type t = finfo.fieldMd.getType(); Object value = expr.getRvalue().getValue(); if (expr.getOp() == BinaryComparisonOperator._eq || expr.getOp() == BinaryComparisonOperator._neq) { if (!t.supportsEq() && value != null) { throw Error.get(ERR_INVALID_COMPARISON, expr.toString()); } } else if (!t.supportsOrdering()) { throw Error.get(ERR_INVALID_COMPARISON, expr.toString()); } Object valueObject = DocTranslator.filterBigNumbers(t.cast(value)); if (finfo.field.equals(ID_PATH)) { valueObject = DocTranslator.createIdFrom(valueObject); } if (expr.getOp() == BinaryComparisonOperator._eq) { return new BasicDBObject(translatePath(finfo.field), valueObject); } else { return new BasicDBObject(translatePath(finfo.field), new BasicDBObject(BINARY_COMPARISON_OPERATOR_MAP.get(expr.getOp()), valueObject)); } }
private DBObject translateValueComparisonExpression(FieldTreeNode context, ValueComparisonExpression expr) { Type t = resolve(context, expr.getField()).getType(); Object value=expr.getRvalue().getValue(); if (expr.getOp() == BinaryComparisonOperator._eq || expr.getOp() == BinaryComparisonOperator._neq) { if (!t.supportsEq()&&value!=null) { throw Error.get(ERR_INVALID_COMPARISON, expr.toString()); } } else { if (!t.supportsOrdering()) { throw Error.get(ERR_INVALID_COMPARISON, expr.toString()); } } Object valueObject = filterBigNumbers(t.cast(value)); if (expr.getField().equals(ID_PATH)) { valueObject = createIdFrom(valueObject); } if (expr.getOp() == BinaryComparisonOperator._eq) { return new BasicDBObject(translatePath(expr.getField()), valueObject); } else { return new BasicDBObject(translatePath(expr.getField()), new BasicDBObject(BINARY_COMPARISON_OPERATOR_MAP.get(expr.getOp()), valueObject)); } }