@TransactionAttribute(TransactionAttributeType.REQUIRED) public float withdraw(long accountNumber, float amount) throws NegativeBalanceException, InsufficientBalanceException, AccountNotFoundException { checkForPositiveBalance(amount); Account account = findAccount(accountNumber); if (account.getBalance() < amount) { throw new InsufficientBalanceException(); } float newBalance = account.getBalance() - amount; account.setBalance(newBalance); entityManager.merge(account); return newBalance; }
@TransactionAttribute(TransactionAttributeType.REQUIRED) public float close(long accountNumber) throws InsufficientBalanceException, AccountNotFoundException { Account account = findAccount(accountNumber); float remainingBalance = account.getBalance(); entityManager.remove(account); return remainingBalance; }
@TransactionAttribute(TransactionAttributeType.REQUIRED) public float deposit(long accountNumber, float amount) throws NegativeBalanceException, AccountNotFoundException { checkForPositiveBalance(amount); Account account = findAccount(accountNumber); float newBalance = account.getBalance() + amount; account.setBalance(newBalance); entityManager.merge(account); return newBalance; }