/* * ATM Example system - file Deposit.java * * copyright (c) 2001 - Russell C. Bjork * */ package atm.transaction; import atm.ATM; import atm.Session; import atm.physical.*; import banking.AccountInformation; import banking.Card; import banking.Message; import banking.Money; import banking.Status; import banking.Receipt; /** Representation for a deposit transaction */ public class Deposit extends Transaction { /** Constructor * * @param atm the ATM used to communicate with customer * @param session the session in which the transaction is being performed * @param card the customer's card * @param pin the PIN entered by the customer */ public Deposit(ATM atm, Session session, Card card, int pin) { super(atm, session, card, pin); } /** Get specifics for the transaction from the customer * * @return message to bank for initiating this transaction * @exception CustomerConsole.Cancelled if customer cancelled this transaction */ protected Message getSpecificsFromCustomer() throws CustomerConsole.Cancelled { to = atm.getCustomerConsole().readMenuChoice( "Account to deposit to", AccountInformation.ACCOUNT_NAMES); amount = atm.getCustomerConsole().readAmount("Amount to deposit"); return new Message(Message.INITIATE_DEPOSIT, card, pin, serialNumber, -1, to, amount); } /** Complete an approved transaction * * @return receipt to be printed for this transaction * @exception CustomerConsole.Cancelled if customer cancelled or * transaction timed out */ protected Receipt completeTransaction() throws CustomerConsole.Cancelled { atm.getEnvelopeAcceptor().acceptEnvelope(); Status status = atm.getNetworkToBank().sendMessage( new Message(Message.COMPLETE_DEPOSIT, card, pin, serialNumber, -1, to, amount), balances); return new Receipt(this.atm, this.card, this, this.balances) { { detailsPortion = new String[2]; detailsPortion[0] = "DEPOSIT TO: " + AccountInformation.ACCOUNT_ABBREVIATIONS[to]; detailsPortion[1] = "AMOUNT: " + amount.toString(); } }; } /** Account to deposit to */ private int to; /** Amount of money to deposit */ private Money amount; }