| @ -1,7 +1,127 @@ | |||||
| package uwstout.courses.cs144.projects.project3.orders; | package uwstout.courses.cs144.projects.project3.orders; | ||||
| import java.util.Scanner; | |||||
| public class OrderProcessor { | public class OrderProcessor { | ||||
| private OrderList oList; | private OrderList oList; | ||||
| public OrderProcessor(OrderList nOList) { | |||||
| oList = null; | |||||
| if (nOList != null) { | |||||
| oList = new OrderList(nOList); | |||||
| } | |||||
| } | |||||
| public OrderList getList() { | |||||
| return oList; | |||||
| } | |||||
| public void processOrders(Scanner sc) { | |||||
| if (oList == null) { | |||||
| return; | |||||
| } | |||||
| oList.clearList(); | |||||
| while (sc.hasNext()) { | |||||
| String line = sc.nextLine(); | |||||
| Scanner lineSc = new Scanner(line); | |||||
| lineSc.useDelimiter("\t"); | |||||
| String cmd = lineSc.next(); | |||||
| switch (cmd) { | |||||
| case "order": | |||||
| orderCommand(lineSc); | |||||
| break; | |||||
| case "items": | |||||
| itemCommand(lineSc); | |||||
| break; | |||||
| case "subs": | |||||
| subCommand(lineSc); | |||||
| break; | |||||
| default: | |||||
| // Do nothing | |||||
| break; | |||||
| } | |||||
| } | |||||
| } | |||||
| public String getOrderSummary() { | |||||
| if (oList == null) { | |||||
| return ""; | |||||
| } | |||||
| StringBuilder builder = new StringBuilder(); | |||||
| for (int i = 0; i < oList.getOrderCount(); i++) { | |||||
| Order order = oList.getOrder(i); | |||||
| builder.append(order.getOrderNumber() + " " + order.getTotalCost() | |||||
| + order.getTax() + "\n"); | |||||
| } | |||||
| builder.append("\nGrand Total: " + oList.getGrandTotal()); | |||||
| return builder.toString(); | |||||
| } | |||||
| public String getMenuItemSummary(MenuItemType[] types) { | |||||
| if (oList == null) { | |||||
| return ""; | |||||
| } | |||||
| StringBuilder builder = new StringBuilder(); | |||||
| for (int i = 0; i < types.length; i++) { | |||||
| MenuItemType type = types[i]; | |||||
| int count = 0; | |||||
| for (int j = 0; j < oList.getOrderCount(); j++) { | |||||
| Order order = oList.getOrder(j); | |||||
| count += order.countItems(type); | |||||
| } | |||||
| builder.append(type.toString() + " " + count + "\n"); | |||||
| } | |||||
| return builder.toString().trim(); | |||||
| } | |||||
| private void orderCommand(Scanner sc) { | |||||
| int orderNumber = sc.nextInt(); | |||||
| int itemCount = sc.nextInt(); | |||||
| Order order = new Order(orderNumber); | |||||
| for (int i = 0; i < itemCount; i++) { | |||||
| order.addItem(readItem(sc)); | |||||
| } | |||||
| oList.addOrder(order); | |||||
| } | |||||
| private void itemCommand(Scanner sc) { | |||||
| int orderNumber = sc.nextInt(); | |||||
| Order order = oList.findOrder(orderNumber); | |||||
| order.addItem(readItem(sc)); | |||||
| } | |||||
| private void subCommand(Scanner sc) { | |||||
| MenuItem subItem = readItem(sc); | |||||
| String replacementItem = sc.next(); | |||||
| oList.substituteItems(subItem, replacementItem); | |||||
| } | |||||
| private MenuItem readItem(Scanner sc) { | |||||
| String itemName = sc.next(); | |||||
| double itemCost = sc.nextDouble(); | |||||
| MenuItemType itemType = MenuItemType.valueOf(sc.next()); | |||||
| return new MenuItem(itemName, itemCost, itemType); | |||||
| } | |||||
| } | } | ||||