/** * <pre> * { field:<field>, op:<op>, rvalue:<value> } * { field:<field>, op:<op>, values:[values] } * </pre> */ public static Query withValue(String expression) { String[] parts = split(expression); if (parts != null) { String field = parts[0]; String operator = parts[1]; String value = parts[2]; BinOp binOp = BinOp.getOp(operator); if (binOp != null) { return withValue(field, binOp, value); } NaryOp naryOp = NaryOp.getOp(operator); if (naryOp != null) { Literal[] values = Literal.values(value.substring(1, value.length() - 1).split("\\s*,\\s*")); return withValues(field, naryOp, values); } } throw new IllegalArgumentException("'" + expression + "' is incorrect"); }
/** * <pre> * { field:<field>, op:<op>, rfield:<rfield> } * </pre> */ public static Query withField(String expression) { String[] parts = split(expression); if (parts != null) { String field = parts[0]; String operator = parts[1]; String rfield = parts[2]; BinOp binOp = BinOp.getOp(operator); if (binOp != null) { return withField(field, binOp, rfield); } NaryOp naryOp = NaryOp.getOp(operator); if (naryOp != null) { return withFieldValues(field, naryOp, rfield); } } throw new IllegalArgumentException("'" + expression + "' is incorrect"); }
/** * <pre> * { field: <field>, op: <in/nin>, values: [ values ] } * </pre> */ public static Query withValues(String field, NaryOp op, Literal... values) { Query q = new Query(false); q.add("field", field).add("op", op.toString()).add("values", Literal.toJson(values)); return q; }
/** * <pre> * { field: <field>, op: <in/nin>, rfield: <rfield> } * </pre> */ public static Query withFieldValues(String field, NaryOp op, String rfield) { Query q = new Query(false); q.add("field", field).add("op", op.toString()).add("rfield", rfield); return q; }