deleteEdgeIfAny((OIdentifiable) fieldValue);
} else if (fieldValue instanceof OMVRBTreeRIDSet) {
// COLLECTION OF RECORDS: REMOVE THE ENTRY
final OMVRBTreeRIDSet set = (OMVRBTreeRIDSet) fieldValue;
if (iVertexToRemove != null) {
if (!set.remove(iVertexToRemove)) {
// SEARCH SEQUENTIALLY (SLOWER)
boolean found = false;
for (OLazyIterator<OIdentifiable> it = set
.iterator(false); it.hasNext(); ) {
final ODocument curr = it.next().getRecord();
if (iVertexToRemove.equals(curr)) {
// FOUND AS VERTEX
it.remove();
if (iAlsoInverse)
removeInverseEdge(iVertex, iFieldName,
iVertexToRemove, curr,
useVertexFieldsForEdgeLabels);
found = true;
break;
} else if (curr.getSchemaClass().isSubClassOf(
OrientEdge.CLASS_NAME)) {
// EDGE
if (curr.getSchemaClass().isSubClassOf(
OrientEdge.CLASS_NAME)) {
final Direction direction = getConnectionDirection(
iFieldName,
useVertexFieldsForEdgeLabels);
// EDGE, REMOVE THE EDGE
if (iVertexToRemove.equals(OrientEdge
.getConnection(curr,
direction.opposite()))) {
it.remove();
if (iAlsoInverse)
removeInverseEdge(iVertex,
iFieldName,
iVertexToRemove, curr,
useVertexFieldsForEdgeLabels);
found = true;
break;
}
}
}
}
if (!found)
OLogManager
.instance()
.warn(null,
"[OrientVertex.removeEdges] edge %s not found in field %s",
iVertexToRemove, iFieldName);
}
deleteEdgeIfAny(iVertexToRemove);
} else {
// DELETE ALL THE EDGES
for (OLazyIterator<OIdentifiable> it = set.iterator(false); it
.hasNext(); ) {
final OIdentifiable edge = it.next();
if (iAlsoInverse)
removeInverseEdge(iVertex, iFieldName, null, edge,
useVertexFieldsForEdgeLabels);
deleteEdgeIfAny(edge);
}
}
if (set.isEmpty())
// FORCE REMOVAL OF ENTIRE FIELD
iVertex.removeField(iFieldName);
}
iVertex.save();