/* This could be optimized by grouping modifications by Fqn, and
* performing a single database operation for each Fqn (record). */
for (Iterator i = modifications.iterator(); i.hasNext();) {
Modification mod = (Modification) i.next();
Fqn name = mod.getFqn();
Object oldVal;
switch (mod.getType()) {
case Modification.PUT_KEY_VALUE:
oldVal = doPut(txn, name, mod.getKey(), mod.getValue());
mod.setOldValue(oldVal);
break;
case Modification.PUT_DATA:
doPut(txn, name, mod.getData());
break;
case Modification.PUT_DATA_ERASE:
doPutErase(txn, name, mod.getData());
break;
case Modification.REMOVE_KEY_VALUE:
oldVal = doRemove(txn, name, mod.getKey());
mod.setOldValue(oldVal);
break;
case Modification.REMOVE_NODE:
doRemove(txn, name);
break;
case Modification.REMOVE_DATA:
doRemoveData(txn, name);
break;
default:
throw new IllegalArgumentException(
"Unknown Modification type: " + mod.getType());
}
}
}