forked from BenjaminChun/OODP
-
Notifications
You must be signed in to change notification settings - Fork 0
/
MenuManager.java
114 lines (107 loc) · 3.64 KB
/
MenuManager.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
import java.util.Scanner;
import java.util.ArrayList;
/**
* Represents a Menu Manager in a restaurant.
* @author Tan Zheng Kai
* @version 2.0
* @since 2021-11-13
*/
public class MenuManager {
/**
* The menu list of this menu manager.
*/
private ArrayList<MenuItem> menuList;
/**
* Creates a menu manager with a base list of menu items in menu list.
*/
public MenuManager() {
menuList = new ArrayList<MenuItem>();
menuList.add(new AlaCarte(type.MAINCOURSE, "Mildly spicy, lightly cooked pasta with shrimps and peppers", "Aglio Olio", 6.90)); // can add default menu items when global MenuManager is created
menuList.add(new AlaCarte(type.DESSERT, "Classic Banana and Vanilla ice-cream combo", "Banana Split", 7.00));
menuList.add(new AlaCarte(type.DRINKS, "Carbonated sweet drink", "Sprite", 2.10));
}
/**
* Adds a menu item into the menu list.
*/
public void addItem() {
MenuItem temp = new MenuItem();
temp = temp.create(); //menuItem object calls create which promts for user inputs to create respective menuItem
if (temp instanceof AlaCarte){
this.menuList.add(0,temp); //add to front of list
}
else {
this.menuList.add(temp); // add promo to end of the list
}
}
/**
* Removes a menu item from this menu manager's menu list based on user's choice.
*/
public void removeItem() {
Scanner sc = new Scanner(System.in);
try {
this.printMenu();
System.out.println("Which item would you like to delete?");
int menuIndex = sc.nextInt();
sc.nextLine();
if (menuIndex <= 0 || menuIndex > this.getSizeOfMenu()){
throw new ArrayIndexOutOfBoundsException("Please input a valid index from 1 to "+this.getSizeOfMenu());
}
this.menuList.remove(menuIndex - 1); //delete the index - 1 menuItem from menu
} catch (ArrayIndexOutOfBoundsException e) {
System.out.println(e.getMessage());
System.out.println("program exiting ...");
System.exit(0);
}
}
/**
* Update a menu item in this menu manager's manu list.
*/
public void updateItem() {
Scanner sc = new Scanner(System.in);
this.printMenu();
try {
System.out.println("Which item would you like to update");
int updateChoice = sc.nextInt();
sc.nextLine();
if (updateChoice <= 0 || updateChoice > this.getSizeOfMenu()){
throw new ArrayIndexOutOfBoundsException("Please input a valid index from 1 to "+this.getSizeOfMenu());
}
MenuItem temp = this.menuList.get(updateChoice-1);
temp.update(); //call the correct update method in respective subclasses, not sure if you need to re insert into arraylist.
} catch (ArrayIndexOutOfBoundsException e) {
System.out.println(e.getMessage());
System.out.println("program exiting ...");
System.exit(0);
}
}
/**
* Prints this menu manager's menu list.
*/
public void printMenu() {
int menuSize = this.menuList.size();
System.out.println();
System.out.println("--------------------MENU----------------------");
for(int i = 0; i<menuSize; i++){
System.out.println((i+1) + ". ");
this.menuList.get(i).print();
System.out.println("----------------------------------------------");
}
System.out.println();
}
/**
* Gets a menu item in the list with given index.
* @param index The index of the menu item to get.
* @return menu item in the list of given index.
*/
public MenuItem getMenuItem(int index) {
MenuItem menuItem = this.menuList.get(index);
return menuItem;
}
/**
* Gets the size of the menu list of this Menu Manager.
* @return the size of the menu list.
*/
public int getSizeOfMenu() {
return this.menuList.size();
}
}