node = map.get(id);
} else if (label != null && map.get(label) != null && labelmatching) {
node = map.get(label);
}
TimeInterval timeInterval = null;
if (node == null) {
//Node is new
node = factory.newNode(draftNode.isAutoId() ? null : draftNode.getId());
flushToNode(draftNode, node);
draftNode.setNode(node);
newNodeCount++;
} else {
timeInterval = (TimeInterval) node.getNodeData().getAttributes().getValue(nodeDynamicColumn.getIndex());
flushToNodeAttributes(draftNode, node);
draftNode.setNode(node);
}
nodesInDraft.add(node);
//Add Point
node.getNodeData().getAttributes().setValue(nodeDynamicColumn.getIndex(), addPoint(timeInterval, point));
}
//Push nodes in data structure
for (NodeDraftGetter draftNode : container.getNodes()) {
Node n = draftNode.getNode();
NodeDraftGetter[] parents = draftNode.getParents();
if (parents != null) {
for (int i = 0; i < parents.length; i++) {
Node parent = parents[i].getNode();
graph.addNode(n, parent);
}
} else {
graph.addNode(n);
}
}
//Remove point from all nodes not in draft
for (Node node : graph.getNodes()) {
if (!nodesInDraft.contains(node)) {
TimeInterval timeInterval = (TimeInterval) node.getNodeData().getAttributes().getValue(nodeDynamicColumn.getIndex());
node.getNodeData().getAttributes().setValue(nodeDynamicColumn.getIndex(), removePoint(timeInterval, point));
}
}
//Create all edges and push to data structure
Set<Edge> edgesInDraft = new HashSet<Edge>();
int newEdgeCount = 0;
for (EdgeDraftGetter draftEdge : container.getEdges()) {
Node source = draftEdge.getSource().getNode();
Node target = draftEdge.getTarget().getNode();
Edge edge = graph.getEdge(source, target);
TimeInterval timeInterval = null;
if (edge == null) {
//Edge is new
switch (container.getEdgeDefault()) {
case DIRECTED:
edge = factory.newEdge(draftEdge.isAutoId() ? null : draftEdge.getId(), source, target, draftEdge.getWeight(), true);
break;
case UNDIRECTED:
edge = factory.newEdge(draftEdge.isAutoId() ? null : draftEdge.getId(), source, target, draftEdge.getWeight(), false);
break;
case MIXED:
edge = factory.newEdge(draftEdge.isAutoId() ? null : draftEdge.getId(), source, target, draftEdge.getWeight(), draftEdge.getType().equals(EdgeType.UNDIRECTED) ? false : true);
break;
}
newEdgeCount++;
graph.addEdge(edge);
flushToEdge(draftEdge, edge);
} else {
timeInterval = (TimeInterval) edge.getEdgeData().getAttributes().getValue(edgeDynamicColumn.getIndex());
flushToEdgeAttributes(draftEdge, edge);
}
edgesInDraft.add(edge);
//Add Point
edge.getEdgeData().getAttributes().setValue(edgeDynamicColumn.getIndex(), addPoint(timeInterval, point));
}
//Remove point from all edges not in draft
for (Edge edge : graph.getEdges()) {
if (!edgesInDraft.contains(edge)) {
TimeInterval timeInterval = (TimeInterval) edge.getEdgeData().getAttributes().getValue(edgeDynamicColumn.getIndex());
edge.getEdgeData().getAttributes().setValue(edgeDynamicColumn.getIndex(), removePoint(timeInterval, point));
}
}
System.out.println("# New Nodes loaded: " + newNodeCount + "\n# New Edges loaded: " + newEdgeCount);