public TransactionSimulator(IResource resource, IResourceManager resourceMgr)
     throws ACIDException {
   String id = "nc1";
   transactionProvider = new TransactionSubsystem(id, null);
   transactionManager = transactionProvider.getTransactionManager();
   logManager = transactionProvider.getLogManager();
   lockManager = transactionProvider.getLockManager();
   recoveryManager = transactionProvider.getRecoveryManager();
   transactionProvider
       .getTransactionalResourceRepository()
       .registerTransactionalResourceManager(resourceMgr.getResourceManagerId(), resourceMgr);
   this.resourceMgr = resourceMgr;
   this.logger = resource.getLogger();
   this.resource = resource;
   memLSN = LogUtil.getDummyLogicalLogLocator(transactionProvider.getLogManager());
 }
 public void executeTransactionOperation(
     TransactionContext txnContext, FileResource.CounterOperation operation) throws ACIDException {
   // lockManager.lock(txnContext, resourceId, 0);
   ILogManager logManager = transactionProvider.getLogManager();
   int currentValue = ((FileResource) resource).getMemoryCounter();
   int finalValue;
   switch (operation) {
     case INCREMENT:
       finalValue = currentValue + 1;
       int logRecordLength =
           ((FileLogger) logger).generateLogRecordContent(currentValue, finalValue);
       logManager.log(
           LogType.UPDATE, txnContext, 1, -1, 1, ResourceType.LSM_BTREE, 0, null, logger, memLSN);
       ((FileResource) resource).increment();
       break;
     case DECREMENT:
       finalValue = currentValue - 1;
       logRecordLength = ((FileLogger) logger).generateLogRecordContent(currentValue, finalValue);
       logManager.log(
           LogType.UPDATE, txnContext, 1, -1, 1, ResourceType.LSM_BTREE, 0, null, logger, memLSN);
       ((FileResource) resource).decrement();
       break;
   }
 }