private static void removeInverseEdge(final ODocument iVertex,
final String iFieldName, final OIdentifiable iVertexToRemove,
final Object iFieldValue, final boolean useVertexFieldsForEdgeLabels) {
final ODocument r = ((OIdentifiable) iFieldValue).getRecord();
if (r == null)
return;
final String inverseFieldName = getInverseConnectionFieldName(
iFieldName, useVertexFieldsForEdgeLabels);
if (r.getSchemaClass().isSubClassOf(CLASS_NAME)) {
removeEdges(r, inverseFieldName, iVertex, false,
useVertexFieldsForEdgeLabels);
} else if (r.getSchemaClass().isSubClassOf(OrientEdge.CLASS_NAME)) {
final OIdentifiable otherVertex = OrientEdge.getConnection(
r,
getConnectionDirection(inverseFieldName,
useVertexFieldsForEdgeLabels));
if (otherVertex != null) {
if (iVertexToRemove == null
|| otherVertex.equals(iVertexToRemove))
removeEdges((ODocument) otherVertex.getRecord(),
inverseFieldName, (OIdentifiable) iFieldValue,
false, useVertexFieldsForEdgeLabels);
} else
throw new IllegalStateException("Invalid content found in "
+ iFieldName + " field");
}
}