private IModificationOperationCallback createIndexModificationCallback(Operation indexOp,
ITransactionContext txnCtx, IMetadataIndex metadataIndex) {
switch (indexOp) {
case INSERT:
case DELETE:
return new SecondaryIndexModificationOperationCallback(metadataIndex.getDatasetId(),
metadataIndex.getPrimaryKeyIndexes(), txnCtx, transactionSubsystem.getLockManager(),
transactionSubsystem, metadataIndex.getResourceId(), metadataStoragePartition,
ResourceType.LSM_BTREE, indexOp);
case UPSERT:
return new UpsertOperationCallback(metadataIndex.getDatasetId(), metadataIndex.getPrimaryKeyIndexes(),
txnCtx, transactionSubsystem.getLockManager(), transactionSubsystem,
metadataIndex.getResourceId(), metadataStoragePartition, ResourceType.LSM_BTREE, indexOp);
default:
throw new IllegalStateException("Unknown operation type: " + indexOp);
}
}