001package headfirst.proxy.gumball;
002
003@SuppressWarnings("serial")
004public class SoldState implements State {
005        transient GumballMachine gumballMachine;
006
007        public SoldState(GumballMachine gumballMachine) {
008                this.gumballMachine = gumballMachine;
009        }
010
011        public void insertQuarter() {
012                System.out.println("Please wait, we're already giving you a gumball");
013        }
014
015        public void ejectQuarter() {
016                System.out.println("Sorry, you already turned the crank");
017        }
018
019        public void turnCrank() {
020                System.out.println("Turning twice doesn't get you another gumball!");
021        }
022
023        public void dispense() {
024                gumballMachine.releaseBall();
025                if (gumballMachine.getCount() > 0) {
026                        gumballMachine.setState(gumballMachine.getNoQuarterState());
027                } else {
028                        System.out.println("Oops, out of gumballs!");
029                        gumballMachine.setState(gumballMachine.getSoldOutState());
030                }
031        }
032
033        public String toString() {
034                return "dispensing a gumball";
035        }
036}