if (invsm == null)
return;
ValueMapping elem = field.getElementMapping();
ForeignKey fk = elem.getForeignKey();
ColumnIO io = elem.getColumnIO();
Column order = field.getOrderColumn();
int action;
boolean writeable;
boolean orderWriteable;
if (invsm.isNew() && !invsm.isFlushed()) {
// no need to null inverse columns of new instance
if (sm == null || sm.isDeleted())
return;
writeable = io.isAnyInsertable(fk, false);
orderWriteable = _orderInsert;
action = Row.ACTION_INSERT;
} else if (invsm.isDeleted()) {
// no need to null inverse columns of deleted instance
if (invsm.isFlushed() || sm == null || !sm.isDeleted())
return;
writeable = true;
orderWriteable = false;
action = Row.ACTION_DELETE;
} else {
if (sm != null && sm.isDeleted())
sm = null;
writeable = io.isAnyUpdatable(fk, sm == null);
orderWriteable = field.getOrderColumnIO().isUpdatable
(order, sm == null);
action = Row.ACTION_UPDATE;
}
if (!writeable && !orderWriteable)