neo4j :: NeoBatch :: finalize_batch
# Associate data from response in original nodes and edges
private fun finalize_batch(response: Serializable): List[NeoError] do
var errors = new List[NeoError]
if not response isa JsonArray then
errors.add(new NeoError("Unexpected batch response format.", "Neo4jError"))
return errors
end
# print " {res.length} jobs executed"
for res in response do
if not res isa JsonObject then
errors.add(new NeoError("Unexpected job format in batch response.", "Neo4jError"))
continue
end
var id = res["id"].as(Int)
var job = jobs[id]
if job.action == create_node_action then
var node = job.entity.as(NeoNode)
node.batch_id = null
node.url = res["location"].to_s
else if job.action == create_edge_action then
var edge = job.entity.as(NeoEdge)
edge.batch_id = null
edge.url = res["location"].to_s
else if job.action == load_node_data_action then
var node = job.entity.as(NeoNode)
node.internal_properties = res["body"].as(JsonObject)["data"].as(JsonObject)
else if job.action == load_node_labels_action then
var node = job.entity.as(NeoNode)
var labels = new Array[String]
for l in res["body"].as(JsonArray) do labels.add l.to_s
node.internal_labels = labels
else if job.action == load_node_in_edges_action then
var node = job.entity.as(NeoNode)
var edges = res["body"].as(JsonArray)
node.internal_in_edges = new List[NeoEdge]
for edge in edges do
node.internal_in_edges.add client.load_edge(edge.as(JsonObject)["self"].to_s)
end
else if job.action == load_node_out_edges_action then
var node = job.entity.as(NeoNode)
var edges = res["body"].as(JsonArray)
node.internal_out_edges = new List[NeoEdge]
for edge in edges do
node.internal_out_edges.add client.load_edge(edge.as(JsonObject)["self"].to_s)
end
end
end
return errors
end
lib/neo4j/neo4j.nit:913,2--961,4