1 package model; 2 3 4 import java.util.LinkedList; 5 import java.util.List; 6 import java.util.Scanner; 7 8 abstract class Machine { 9 protected List<MenuItem> menu; 10 protected Dispenser dispenser; 11 private String name; 12 13 Machine(String name) { 14 this.name = name; 15 dispenser = new Dispenser(); 16 menu = new LinkedList<>(); 17 18 initialiseIngredients(); 19 populateMenu(); 20 } 21 22 abstract void initialiseIngredients(); 23 24 abstract void populateMenu(); 25 26 void run() { 27 Scanner input = new Scanner(System.in); 28 29 while (true) { 30 System.out.println(""); 31 System.out.println("----------------------------"); 32 System.out.println(name); 33 System.out.println(""); 34 for(MenuItem b : menu) { 35 b.render(); 36 } 37 System.out.println(""); 38 System.out.println("999. Exit"); 39 System.out.println(""); 40 System.out.println("Enter your choice"); 41 42 int selection = input.nextInt(); 43 input.nextLine(); 44 45 boolean selectionMade = false; 46 47 for(MenuItem b : menu) { 48 if (b.match(selection)) { 49 ((Button)b).press(); 50 selectionMade = true; 51 break; 52 } 53 } 54 55 if (!selectionMade) { 56 if (selection == 999) { 57 break; 58 } else { 59 System.out.println("Invalid selection."); 60 } 61 } 62 } 63 } 64 } 65