/** * Parses a set expression using the given json object */ public static SetExpression fromJson(ObjectNode node) { if (node.size() == 1) { UpdateOperator op = null; if (node.has(UpdateOperator._add.toString())) { op = UpdateOperator._add; } else if (node.has(UpdateOperator._set.toString())) { op = UpdateOperator._set; } if (op != null) { ObjectNode arg = (ObjectNode) node.get(op.toString()); List<FieldAndRValue> list = new ArrayList<>(); for (Iterator<Map.Entry<String, JsonNode>> itr = arg.fields(); itr.hasNext();) { Map.Entry<String, JsonNode> entry = itr.next(); Path field = new Path(entry.getKey()); RValueExpression rvalue = RValueExpression.fromJson(entry.getValue()); list.add(new FieldAndRValue(field, rvalue)); } return new SetExpression(op, list); } } throw Error.get(QueryConstants.ERR_INVALID_SET_EXPRESSION, node.toString()); }
@Override public JsonNode toJson() { ObjectNode node = getFactory().objectNode(); ObjectNode values = getFactory().objectNode(); for (FieldAndRValue x : fields) { values.set(x.getField().toString(), x.getRValue().toJson()); } node.set(op.toString(), values); return node; }
/** * Parses a primitive expression using the given json object */ public static PrimitiveUpdateExpression fromJson(ObjectNode node) { if (node.has(UpdateOperator._add.toString()) || node.has(UpdateOperator._set.toString())) { return SetExpression.fromJson(node); } else if (node.has(UpdateOperator._unset.toString())) { return UnsetExpression.fromJson(node); } else { throw Error.get(QueryConstants.ERR_INVALID_UPDATE_EXPRESSION, node.toString()); } } }
/** * Parses a primitive expression using the given json object */ public static PrimitiveUpdateExpression fromJson(ObjectNode node) { if (node.has(UpdateOperator._add.toString()) || node.has(UpdateOperator._set.toString())) { return SetExpression.fromJson(node); } else if (node.has(UpdateOperator._unset.toString())) { return UnsetExpression.fromJson(node); } else { throw Error.get(QueryConstants.ERR_INVALID_UPDATE_EXPRESSION, node.toString()); } } }
@Override public JsonNode toJson() { ObjectNode node = getFactory().objectNode(); ObjectNode values = getFactory().objectNode(); for (FieldAndRValue x : fields) { values.set(x.getField().toString(), x.getRValue().toJson()); } node.set(op.toString(), values); return node; }
/** * Parses a set expression using the given json object */ public static SetExpression fromJson(ObjectNode node) { if (node.size() == 1) { UpdateOperator op = null; if (node.has(UpdateOperator._add.toString())) { op = UpdateOperator._add; } else if (node.has(UpdateOperator._set.toString())) { op = UpdateOperator._set; } if (op != null) { ObjectNode arg = (ObjectNode) node.get(op.toString()); List<FieldAndRValue> list = new ArrayList<>(); for (Iterator<Map.Entry<String, JsonNode>> itr = arg.fields(); itr.hasNext();) { Map.Entry<String, JsonNode> entry = itr.next(); Path field = new Path(entry.getKey()); RValueExpression rvalue = RValueExpression.fromJson(entry.getValue()); list.add(new FieldAndRValue(field, rvalue)); } return new SetExpression(op, list); } } throw Error.get(QueryConstants.ERR_INVALID_SET_EXPRESSION, node.toString()); }