FileDocCategorySizeDatePackage
Account_Impl.javaAPI DocExample1417Thu Nov 08 00:22:58 GMT 2001com.ora.rmibook.chapter15.jndiaccounts

Account_Impl.java

package com.ora.rmibook.chapter15.jndiaccounts;


import com.ora.rmibook.chapter15.jndiaccounts.valueobjects.*;
import javax.rmi.*;
import java.rmi.*;


public class Account_Impl extends PortableRemoteObject implements Account {
    private Money _balance;
    public Account_Impl(Money startingBalance)
        throws RemoteException {
        _balance = startingBalance;
    }

    public Money getBalance()
        throws RemoteException {
        return _balance;
    }

    public void makeDeposit(Money amount)
        throws RemoteException, NegativeAmountException {
        checkForNegativeAmount(amount);
        _balance.add(amount);
        return;
    }

    public void makeWithdrawal(Money amount)
        throws RemoteException, OverdraftException, NegativeAmountException {
        checkForNegativeAmount(amount);
        checkForOverdraft(amount);
        _balance.subtract(amount);
        return;
    }

    private void checkForNegativeAmount(Money amount)
        throws NegativeAmountException {
        int cents = amount.getCents();

        if (0 > cents) {
            throw new NegativeAmountException();
        }
    }

    private void checkForOverdraft(Money amount)
        throws OverdraftException {
        if (amount.greaterThan(_balance)) {
            throw new OverdraftException(false);
        }
        return;
    }
}