package bank; public class AccountImpl extends bank.AccountPOA { private String _accNum; public AccountImpl(String accNum) { this._accNum = accNum; } public float balance() { try { return DBUtils.getBalance(_accNum); } catch(Exception e) { return (float)-1.0; } } public String accountNumber() { return _accNum; } public bank.AccountType accountType () { try { return DBUtils.getAccountType(_accNum); } catch(Exception e) { return AccountType.NIL; } } public void deposit (float amt) throws bank.InvalidOperationException, bank.UnknownException { if(amt <= (float)0.0) throw new InvalidOperationException("Invalid deposit amount of " + amt + " dollars."); float balance = balance(); if(balance < 0) throw new bank.UnknownException("Could not retrieve balance for Account " + _accNum); balance += amt; try { DBUtils.setBalance(_accNum,balance); } catch(Exception e) { throw new bank.UnknownException(e.getMessage()); } } public void withdraw (float amt) throws bank.InvalidOperationException, bank.UnknownException { if(amt <= (float)0.0) throw new InvalidOperationException("Invalid withdrawal amount of " + amt + " dollars."); float balance = balance(); if(balance < 0) throw new bank.UnknownException("Could not retrieve balance for Account " + _accNum); if(amt > balance) throw new InvalidOperationException("Cannot withdraw more than account balance."); balance = balance() - amt; // update the balance. try { DBUtils.setBalance(_accNum,balance); } catch(Exception e) { throw new bank.UnknownException(e.getMessage()); } } }