//===============================================
// Author: Josh Larsen Date Revised: $Date: 1996/05/30 14:29:26 $
// Class Name: CurrencyAcceptor Version: $Revision: 1.2 $
// Filename: CurrencyAcceptor.java
// Package: pcm.machine
// Purpose: This class represents the monetary input unit.
//===============================================
package com.nansoft.pcm.machine;
import com.nanosoft.pcm.machine.*;
import java.io.*;
import java.util.*;
public class CurrencyAcceptor extends Object {
MoneyAmount balance;
MoneyAmount cheapestItemPrice;
MoneyAmount depositedMoney;
public CurrencyAcceptor() {
balance = new MoneyAmount();
cheapestItemPrice = new MoneyAmount();
depositedMoney = new MoneyAmount();
}
public CurrencyAcceptor(StorageItem anItem) {
balance = new MoneyAmount();
cheapestItemPrice = anItem.getPrice();
depositedMoney = new MoneyAmount();
}
public Boolean checkForMinimalBalance() {
Boolean temp;
if (balance.getAmount() >= cheapestItemPrice.getAmount()) temp = TRUE;
else temp = FALSE;
return temp;
}
public void clearBalances() {
balance = new MoneyAmount();
depositedMoney = new MoneyAmount();
}
public Boolean completeTransaction(String aSelection) {
MoneyAmount price = StorageUnit.getPrice(aSelection);
if (balance.getAmount() < price.getAmount()) throw new InsufficientFundsError();
MainDisplay.displayAmount(price);
balance = MoneyAmount.subtract(balance, price);
StorageUnit.dispenseItem(aSelection);
return checkForMinimalBalance();
}
public void depositAmount(MoneyAmount money) {
depositedMoney = MoneyAmount.add(depositedMoney, money);
balance = MoneyAmount.add(balance, money);
MainDisplay.displayAmount(money);
}
public MoneyAmount getCurrentAmount() {
return balance;
}
public MoneyAmount getDepositedAmount() {
return depositedMoney;
}
public void updateLowestCostItem(StorageItem anItem) {
cheapestItemPrice = anItem.getPrice();
}
}