public void commit(Transaction transaction) {
ObjectId objectInstanceId = transaction.objectInstanceId;
if (!transaction.addedFieldNames.isEmpty()) {
String[] takeAddedFieldNames = transaction.takeAddedFieldNames();
OpaqueFieldValue[] takeAddedValues = transaction.takeAddedValues();
String[] fields = Arrays.copyOf(takeAddedFieldNames, takeAddedFieldNames.length + 1);
fields[fields.length - 1] = "deleted";
concurrencyStore.updated(transaction.tenantIdAndCentricId, objectInstanceId, fields, transaction.addAtTimestamp - 1);
eventValueStore.multiAdd(
transaction.tenantIdAndCentricId,
objectInstanceId,
takeAddedFieldNames,
takeAddedValues,
null, new ConstantTimestamper(transaction.addAtTimestamp));
concurrencyStore.updated(transaction.tenantIdAndCentricId, objectInstanceId, fields, transaction.addAtTimestamp);
}
if (!transaction.removedFieldNames.isEmpty()) {
String[] takeRemovedFieldNames = transaction.takeRemovedFieldNames();
String[] fields = Arrays.copyOf(takeRemovedFieldNames, takeRemovedFieldNames.length + 1);
fields[fields.length - 1] = "deleted";
concurrencyStore.updated(transaction.tenantIdAndCentricId, objectInstanceId, fields, transaction.removeAtTimestamp - 1);
eventValueStore.multiRemove(
transaction.tenantIdAndCentricId,
objectInstanceId,
takeRemovedFieldNames,
new ConstantTimestamper(transaction.removeAtTimestamp));
concurrencyStore.updated(transaction.tenantIdAndCentricId, objectInstanceId, fields, transaction.removeAtTimestamp);
}
}