in = null;
}
}
public static void delete(final ODatabaseGraphTx iDatabase, final ODocument iEdge) {
final ODocument sourceVertex = (ODocument) iEdge.field(OGraphDatabase.EDGE_FIELD_OUT);
final ODocument targetVertex = (ODocument) iEdge.field(OGraphDatabase.EDGE_FIELD_IN);
Set<OGraphEdge> edges;
if (sourceVertex != null && iDatabase.existsUserObjectByRID(sourceVertex.getIdentity())) {
// WORK ALSO WITH OGraphDatabase.EDGE_FIELD_IN MEMORY OBJECTS
final OGraphVertex vertex = (OGraphVertex) iDatabase.getUserObjectByRecord(sourceVertex, null);
// REMOVE THE EDGE OBJECT
edges = vertex.getOutEdges();
if (edges != null) {
for (OGraphEdge e : edges)
if (e.getDocument().equals(iEdge)) {
edges.remove(e);
break;
}
}
}
if (targetVertex != null && iDatabase.existsUserObjectByRID(targetVertex.getIdentity())) {
// WORK ALSO WITH OGraphDatabase.EDGE_FIELD_IN MEMORY OBJECTS
final OGraphVertex vertex = (OGraphVertex) iDatabase.getUserObjectByRecord(targetVertex, null);
// REMOVE THE EDGE OBJECT FROM THE TARGET VERTEX
edges = vertex.getInEdges();
if (edges != null) {
for (OGraphEdge e : edges)
if (e.getDocument().equals(iEdge)) {
edges.remove(e);
break;
}
}
}
// REMOVE THE EDGE DOCUMENT
Set<ODocument> docs = sourceVertex.field(OGraphDatabase.VERTEX_FIELD_OUT);
if (docs != null)
docs.remove(iEdge);
sourceVertex.setDirty();
sourceVertex.save();
// REMOVE THE EDGE DOCUMENT FROM THE TARGET VERTEX
docs = targetVertex.field(OGraphDatabase.VERTEX_FIELD_IN);
if (docs != null)
docs.remove(iEdge);
targetVertex.setDirty();
targetVertex.save();
if (iDatabase.existsUserObjectByRID(iEdge.getIdentity())) {
final OGraphEdge edge = (OGraphEdge) iDatabase.getUserObjectByRecord(iEdge, null);
iDatabase.unregisterPojo(edge, iEdge);
}