| @ -1,7 +1,127 @@ | |||
| package uwstout.courses.cs144.projects.project3.orders; | |||
| import java.util.Scanner; | |||
| public class OrderProcessor { | |||
| 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); | |||
| } | |||
| } | |||