// ...and put the old, invalid vertices aside for later deletion.
Set<Edge> edgesToRemove = new HashSet<Edge>();
// Add previous edges
for (Edge e : previousEdges) {
Vertex inVertex = e.getVertex(Direction.IN);
if (allVertices.values().contains(inVertex)) {
if (!savedEdges.containsKey(inVertex))
savedEdges.put(inVertex, new LinkedList<Edge>());
savedEdges.get(inVertex).add(e);
} else {
edgesToRemove.add(e);
}
}
// And previous properties
String propertyNamePrefix = GraphUtils.getEdgeNameFor(p);
Collection<String> suspectProperties = new TreeSet<String>();
for(String propertyName : rootVertex.getPropertyKeys()) {
if(propertyName.startsWith(propertyNamePrefix)) {
suspectProperties.add(propertyName);
}
}
// Delete the edges that we don't need anymore.
for (Edge edge : edgesToRemove) {
GraphUtils.removeSafely(database, edge);
}
// Then, go through the updated Vertices. Create edges if necessary,
// then always set the order property.
// This is possible since #createCollectionVerticesFor maintains the
// ordering.
int order = 0;
for(Object element : value) {
if(allVertices.containsKey(element)) {
Vertex vertex = allVertices.get(element);
Edge edgeForVertex;
if (savedEdges.containsKey(vertex)) {
List<Edge> edges = savedEdges.get(vertex);
edgeForVertex = edges.remove(0);
if (edges.size() == 0)