/** * Test method for {@link controller.OrderInterface#addItemToOrder(model.Order, model.MenuItem)}. * Test with null order. Expect error */ @Test(expected = model.PizzaException.class) public void testAddItemToOrderNullOrder() throws PizzaException { MenuItem mi = new MenuItem(5, "wings", "wings"); Order temp = test.getOrderInterface().createNewOrder(itemList, pizzaList); test.getOrderInterface().addItemToOrder(null, mi); assertFalse(temp.getItems().contains(mi)); }
/** Constructor that takes an order. */ public NewOrderController(Order order) { _currentOrder = order; _modifying = true; // Recover the quantity map.Recover the side quantity map: start with a sorted side // food item list. ArrayList<FoodItem> itemList = SideFoodItem.getDb().list(); Collections.sort(itemList); // Create the map and initialize all of the values to zero. _quantityMap = new HashMap<SideFoodItem, Integer>(); for (FoodItem sfi : SideFoodItem.getDb().list()) { _quantityMap.put((SideFoodItem) sfi, 0); } // Go through the SFIs in the given list and increment the corresponding // element of the map. ArrayList<PizzaFoodItem> pizzaFoodItems = new ArrayList<PizzaFoodItem>(); for (FoodItem item : _currentOrder.getFoodItems()) { if (item instanceof SideFoodItem) { int value = _quantityMap.get((SideFoodItem) item); _quantityMap.put((SideFoodItem) item, value + 1); } else { pizzaFoodItems.add((PizzaFoodItem) item); } } // Now clear the order's list and add in back in all of the pizzas. _currentOrder.getFoodItems().clear(); for (PizzaFoodItem item : pizzaFoodItems) { _currentOrder.addFoodItem(item); } }
/** * Test method for {@link controller.OrderInterface#cancelCurrentOrder(model.Order)}. Test with a * non-system order. Expect error */ @Test(expected = model.PizzaException.class) public void testCancelCurrentOrderBadOrder() throws PizzaException { Order temp = new Order(); test.getOrderInterface().cancelCurrentOrder(temp); assertFalse(temp.getOrderStatus() == model.OrderStatus.canceled); assertFalse(test.getPizzaStore().getOrderQueue().getCanceledOrders().contains(temp)); }
/** * Test method for {@link controller.OrderInterface#addItemToOrder(model.Order, model.MenuItem)}. * Test with non-system order. Expect error */ @Test(expected = model.PizzaException.class) public void testAddItemToOrderNonSystem() throws PizzaException { MenuItem mi = new MenuItem(5, "wings", "wings"); Order temp = new Order(); test.getOrderInterface().addItemToOrder(temp, mi); assertFalse(temp.getItems().contains(mi)); }
/** Updates the food item list stored in the order based on the quantity map. */ private void updateOrderFoodItemList() { // Filter out the list of pizzas in the order. ArrayList<PizzaFoodItem> pizzaList = new ArrayList<PizzaFoodItem>(); for (FoodItem item : _currentOrder.getFoodItems()) { if (item instanceof PizzaFoodItem) { pizzaList.add((PizzaFoodItem) item); } } // Remove everything from the list. _currentOrder.getFoodItems().clear(); // Add the pizzas. _currentOrder.getFoodItems().addAll(pizzaList); // Add the sides to the order according to the // quantity map. for (SideFoodItem side : _quantityMap.keySet()) { // Duplicate this side the appropriate number of times. for (int i = 0; i < _quantityMap.get(side); i++) { SideFoodItem duplicateItem = new SideFoodItem( side.getName(), side.getPrice(), side.getPrepTime(), side.getCookTime(), side.getOvenSpaceUnits()); _currentOrder.addFoodItem(duplicateItem); } } }
/** * Test method for {@link controller.OrderInterface#prepOrder(model.Order)}. Test with an order * that's ready to be prepped, but is empty. Expect error. */ @Test(expected = model.PizzaException.class) public void testPrepOrderGoodButEmpty() throws PizzaException { Order temp = test.getOrderInterface().createNewOrder(itemList, pizzaList); test.getOrderInterface().prepOrder(temp); assertFalse(test.getPizzaStore().getOrderQueue().getOrdersBeingMade().contains(temp)); assertFalse(temp.getOrderStatus() == model.OrderStatus.beingMade); }
/** * searches all registry lists for a specific keyword and returns all matches in a a list * * <p>function is obsolete since 1.19 * * @param req the "search keyword" * @return list of matching objects */ public ArrayList<Object> search(String req) { ArrayList<Object> returnValues = new ArrayList<Object>(); for (Customer c : getCustomers().values()) { if (c.getName().contains(req) || c.getAddress().contains(req) || c.getCivic().contains(req) || c.getPhone().contains(req)) { returnValues.add(c); } } for (Item i : getItems().values()) { if (i.getName().contains(req) || i.getPrice().contains(req) || i.getDetails().contains(req)) { returnValues.add(i); } } for (Order i : getOrders().values()) { if (i.getOrderNo().contains(req) || i.getCustomer().getName().contains(req)) { returnValues.add(i); } } return returnValues; }
/** * Handles input in the WaitingForPhoneNumber state. * * @param message The string message. * @param channel The channel from which the input was received. */ private void handleWaitingForCustInfo(String message, NewOrderInChan channel) { // Only one channel to get input. switch ((NewOrderInChan) channel) { case ICMenuOption: // Do nothing break; case ICCustomerPhone: // Check if the string is a valid phone number. If so, set // it as the new phone number. if (Customer.isValidPhoneNumber(message)) { _currentOrder.getCustomer().setPhoneNumber(message); } break; case ICCustomerName: // Set the new string as the name. _currentOrder.getCustomer().setName(message); break; case ICCustomerAddress: // Check that the address is valid. Address addr = Address.getAddressForAlias(message); if (null == addr) { // Do nothing. } else { _currentOrder.getCustomer().setStreetAddress(addr); // If we got a valid address, the customer should // be done being detailed. Add this new customer // to the database and proceed to the order construction // state. Customer.getDb().add(_currentOrder.getCustomer()); gotoDisplayingOrder(); } break; case ICBack: // Check for a back button. if (message.equalsIgnoreCase(NewOrderView.BACK_KEY)) { // Go back to the customer phone number prompt. gotoWaitingForPhoneNumber(); } break; default: handleInputError("The input was invalid. Please try again."); break; } }
/** * Test method for {@link controller.OrderInterface#cancelCurrentOrder(model.Order)}. Test with an * order that is ready to be canceled. */ @Test public void testCancelCurrentOrderGood() throws PizzaException { Order temp = test.getOrderInterface().createNewOrder(itemList, pizzaList); test.getOrderInterface().cancelCurrentOrder(temp); assertTrue(temp.getOrderStatus() == model.OrderStatus.canceled); assertTrue(test.getPizzaStore().getOrderQueue().getCanceledOrders().contains(temp)); }
/** * Test method for {@link controller.OrderInterface#addItemToOrder(model.Order, model.MenuItem)}. * Test with good inputs. */ @Test public void testAddItemToOrderGood() throws PizzaException { MenuItem mi = test.getManagerInterface().addItemToMenu(10, "wings", "wings"); Order temp = test.getOrderInterface().createNewOrder(itemList, pizzaList); test.getOrderInterface().addItemToOrder(temp, mi); assertTrue(temp.getItems().contains(mi)); }
/** * Test method for {@link controller.OrderInterface#completeOrder(model.Order)}. Test complete * order with already canceled order */ @Test(expected = model.PizzaException.class) public void testCompleteOrderCanceledOrder() throws PizzaException { Order temp = test.getOrderInterface().createNewOrder(itemList, pizzaList); test.getOrderInterface().cancelCurrentOrder(temp); test.getOrderInterface().completeOrder(temp); assertTrue(temp.getOrderStatus() == model.OrderStatus.canceled); assertFalse(test.getPizzaStore().getOrderQueue().getPastOrders().contains(temp)); }
/** * Test method for {@link controller.OrderInterface#addPizzaToOrder(model.Order, model.Pizza)}. * Test with good inputs. */ @Test public void testAddPizzaToOrderGood() throws PizzaException { PizzaSize ps = test.getManagerInterface().addPizzaSizeToMenu(6, "bloop"); Pizza pizza = new Pizza(toppings, ps); Order temp = test.getOrderInterface().createNewOrder(itemList, pizzaList); test.getOrderInterface().addPizzaToOrder(temp, pizza); assertTrue(temp.getPizzas().contains(pizza)); }
/** * Test method for {@link controller.OrderInterface#prepOrder(model.Order)}. Test with an order * that's ready to be prepped. */ @Test public void testPrepOrderGood() throws PizzaException { pizzaList.add(new Pizza(toppings, new PizzaSize(10, "Large"))); itemList.add(new MenuItem(5, "wings", "wings")); Order temp = test.getOrderInterface().createNewOrder(itemList, pizzaList); test.getOrderInterface().prepOrder(temp); assertTrue(test.getPizzaStore().getOrderQueue().getOrdersBeingMade().contains(temp)); assertTrue(temp.getOrderStatus() == model.OrderStatus.beingMade); }
/** * Test method for {@link controller.OrderInterface#addPizzaToOrder(model.Order, model.Pizza)}. * Test with a non-system pizzasize. Expect error. */ @Test(expected = model.PizzaException.class) public void testAddPizzaToOrderNonSystemPizzaSize() throws PizzaException { PizzaSize ps = new PizzaSize(10, "ARRRRRRRGGGGHH"); Pizza pizza = new Pizza(toppings, ps); Order temp = new Order(); test.getOrderInterface().addPizzaToOrder(temp, pizza); assertFalse(temp.getPizzas().contains(pizza)); assertFalse(test.getPizzaStore().getOrderQueue().getCurrentOrders().contains(temp)); }
/** Moves the controller into the WaitingForPhoneNumber state. */ private void gotoDisplayingOrderConfirmation() { this.currentState = NewOrderContState.CSDisplayingOrderConfirmation; // Disallow modifying and deleting of the list. view.setChannelEnabled(NewOrderInChan.ICCustomerName, false); view.setChannelEnabled(NewOrderInChan.ICCustomerAddress, false); view.setChannelEnabled(NewOrderInChan.ICListDelete, false); view.setChannelEnabled(NewOrderInChan.ICListModify, false); view.setChannelEnabled(NewOrderInChan.ICMenuOption, false); view.setChannelEnabled(NewOrderInChan.ICBack, false); // Show a "continue" option. view.setChannelEnabled(NewOrderInChan.ICConfirm, true); // Display the customer and the list. view.displayObject(_currentOrder.getCustomer(), NewOrderOutChan.OCCustomerDisplay); view.displayList(_currentOrder.getFoodItems(), NewOrderOutChan.OCFoodItemList); view.displayString( "$" + Order.formatPrice(_currentOrder.calculateSubtotal()), NewOrderOutChan.OCSubTotalDisplay); view.displayString( "$" + Order.formatPrice(_currentOrder.getTax()), NewOrderOutChan.OCTaxDisplay); view.displayString( "$" + Order.formatPrice(_currentOrder.calculateTotal()), NewOrderOutChan.OCTotalDisplay); view.displayString( "" + Time.formatTime(_currentOrder.calculateEstimatedDeliveryTime()), NewOrderOutChan.OCDeliveryTimeDisplay); }
/** * Test method for {@link controller.OrderInterface#applySpecialsToOrder(model.Order)}. Test with * good inputs. Should allow */ @Test public void testApplySpecialsToOrderGood() throws PizzaException { PizzaSize large = test.getManagerInterface().addPizzaSizeToMenu(10, "Large"); pizzaList.add(new Pizza(toppings, large)); model.MenuItem mi = test.getManagerInterface().addItemToMenu(5, "name", "name"); itemList.add(mi); Order temp = test.getOrderInterface().createNewOrder(itemList, pizzaList); temp.tallyTotalPrice(); assertTrue(temp.getPrice() == 15); test.getManagerInterface().createSpecialWithItem("Cheap Wings", mi, 1); test.getOrderInterface().applySpecialsToOrder(temp); assertTrue(temp.getPrice() == 11); }
/** * Test method for {@link controller.OrderInterface#prepOrder(model.Order)}. Test with an order * that's already been canceled. Expect error. */ @Test(expected = model.PizzaException.class) public void testPrepOrderCanceled() throws PizzaException { pizzaList.add(new Pizza(toppings, new PizzaSize(10, "Large"))); itemList.add(new MenuItem(5, "wings", "wings")); Order temp = test.getOrderInterface().createNewOrder(itemList, pizzaList); test.getOrderInterface().prepOrder(temp); assertTrue(test.getPizzaStore().getOrderQueue().getOrdersBeingMade().contains(temp)); assertTrue(temp.getOrderStatus() == model.OrderStatus.beingMade); test.getOrderInterface().cancelCurrentOrder(temp); test.getOrderInterface().prepOrder(temp); assertTrue(test.getPizzaStore().getOrderQueue().getCanceledOrders().contains(temp)); assertTrue(temp.getOrderStatus() == model.OrderStatus.canceled); assertFalse(test.getPizzaStore().getOrderQueue().getOrdersBeingMade().contains(temp)); }
/** Moves the controller into the WaitingForPhoneNumber state. */ private void gotoDisplayingOrder() { this.currentState = NewOrderContState.CSDisplayingOrder; // Disable the back button if we're modifying. if (_modifying) { view.setChannelEnabled(NewOrderInChan.ICBack, false); } // Disable the customer info channels. view.setChannelEnabled(NewOrderInChan.ICCustomerName, false); view.setChannelEnabled(NewOrderInChan.ICCustomerAddress, false); // Enable the other channels. view.setChannelEnabled(NewOrderInChan.ICListDelete, true); view.setChannelEnabled(NewOrderInChan.ICListModify, true); view.setChannelEnabled(NewOrderInChan.ICMenuOption, true); // Update the fooditem list in the order. updateOrderFoodItemList(); // Display the customer and the list. view.displayObject(_currentOrder.getCustomer(), NewOrderOutChan.OCCustomerDisplay); view.displayList(_currentOrder.getFoodItems(), NewOrderOutChan.OCFoodItemList); view.displayString( "$" + Order.formatPrice(_currentOrder.calculateSubtotal()), NewOrderOutChan.OCSubTotalDisplay); view.displayString( "$" + Order.formatPrice(_currentOrder.getTax()), NewOrderOutChan.OCTaxDisplay); view.displayString( "$" + Order.formatPrice(_currentOrder.calculateTotal()), NewOrderOutChan.OCTotalDisplay); }
@Override public String execute() throws Exception { HttpServletRequest request = ServletActionContext.getRequest(); setIid(Long.parseLong(request.getParameter("iid"))); userSession.put("iid", iid); // String auth = (String) userSession.get("auth"); rid = (Long) userSession.get("rid"); Order order = waresService.getOrderByIid(iid); if (order != null) { userSession.put("ordered", (String) "y"); List dishes = (List) (waresService.getOrderDish(order.getOrderId())); userSession.put("orderdishes", dishes); } else { List menudishes = waresService.getMenuDish(rid); userSession.put("menudishes", menudishes); } // auth = (String) userSession.get("auth"); // if (auth == null) { // return INPUT; // } return SUCCESS; }
private void display() { // create labels and textfields Label lbl_klantNaam = new Label("Klant naam:"); lbl_klantNaam.setTextFill((Color.valueOf("#FFFC00"))); Label lbl_klantID = new Label("Klant email:"); lbl_klantID.setTextFill((Color.valueOf("#FFFC00"))); Label lbl_klantAdres = new Label("Klant adres:"); lbl_klantAdres.setTextFill((Color.valueOf("#FFFC00"))); Label lbl_factuurNummer = new Label("Factuur nummer:"); lbl_factuurNummer.setTextFill((Color.valueOf("#FFFC00"))); Label lbl_factuurDatum = new Label("Factuur datum:"); lbl_factuurDatum.setTextFill((Color.valueOf("#FFFC00"))); Label lbl_debiteurenNummer = new Label("Debiteuren nummer:"); lbl_debiteurenNummer.setTextFill((Color.valueOf("#FFFC00"))); String klantHeleNaam = klantVoornaam + " " + klantAchternaam; Label lbl_DklantNaam = new Label(klantHeleNaam); lbl_DklantNaam.setTextFill((Color.valueOf("#FFFC00"))); Label lbl_DklantID = new Label(order.getKlantEmail()); lbl_DklantID.setTextFill((Color.valueOf("#FFFC00"))); Label lbl_DklantAdres = new Label(order.getFactuurAdres()); lbl_DklantAdres.setTextFill((Color.valueOf("#FFFC00"))); Label lbl_DfactuurNummer = new Label(Integer.toString(order.getOrderID())); lbl_DfactuurNummer.setTextFill((Color.valueOf("#FFFC00"))); Label lbl_DfactuurDatum = new Label(order.getOrderDatum().toString()); lbl_DfactuurDatum.setTextFill((Color.valueOf("#FFFC00"))); Label lbl_DdebiteurenNummer = new Label(Integer.toString(debiteurenNummer)); lbl_DdebiteurenNummer.setTextFill((Color.valueOf("#FFFC00"))); TextField tf_wijnnaam = new TextField(); TextField tf_prijs = new TextField(); table.setEditable(true); TableColumn<OrderRegel, Integer> codeCol = new TableColumn<>("Nr"); codeCol.setCellValueFactory(new PropertyValueFactory<>("orderRegelID")); TableColumn<OrderRegel, Integer> aantalCol = new TableColumn("Aantal"); aantalCol.setCellValueFactory(new PropertyValueFactory<>("aantal")); TableColumn<OrderRegel, Integer> wijnCol = new TableColumn("Wijn serie nr"); wijnCol.setCellValueFactory(new PropertyValueFactory<>("wijnID")); TableColumn<OrderRegel, String> naamCol = new TableColumn("Naam"); naamCol.setCellValueFactory(new PropertyValueFactory<>("wijnNaam")); TableColumn<OrderRegel, Integer> jaartalCol = new TableColumn("Jaartal"); jaartalCol.setCellValueFactory(new PropertyValueFactory<>("wijnJaartal")); TableColumn<OrderRegel, Integer> perflesCol = new TableColumn("Per fles"); perflesCol.setCellValueFactory(new PropertyValueFactory<>("wijnPrijs")); TableColumn<OrderRegel, Double> bedragCol = new TableColumn("Bedrag"); bedragCol.setCellValueFactory(new PropertyValueFactory<>("totaalPrijs")); table = new TableView<>(); ObservableList<OrderRegel> orders = FXCollections.observableArrayList(orderController.getAlleOrderRegels(order.getOrderID())); table.setItems(orders); table.getColumns().addAll(wijnCol, naamCol, jaartalCol, aantalCol, perflesCol, bedragCol); // topbox items title = new Label("Lions-club Oegstgeest/Warmond"); title.setId("title"); title.setTextFill(Color.web("#FFCF03")); title.autosize(); icon = new ImageView(new Image("/images/icon.png")); icon.setPreserveRatio(true); icon.autosize(); // buttons cancel = new Button("Terug"); cancel.setOnAction( e -> new BestellingOverzichtView(new OrderController(), new KlantController())); Button exporteer = new Button("Exporteer naar PDF"); exporteer.setOnAction( e -> { factuurGenerator = new FactuurGenerator(klantController.getKlantByOrder(order), order, orders); factuurGenerator.factuur(); Alert alert = new Alert(AlertType.INFORMATION); alert.setHeaderText(null); alert.setTitle("Exporteer naar PDF"); alert.setContentText("De factuur is succesvol ge�xporteerd. "); alert.showAndWait(); }); // add elements to panes topBox.getChildren().addAll(icon, title); topBox.setAlignment(Pos.CENTER); centerBox.getChildren().add(form); centerBox.getChildren().add(table); form.addColumn( 0, lbl_klantNaam, lbl_klantID, lbl_klantAdres, lbl_factuurNummer, lbl_factuurDatum, lbl_debiteurenNummer); form.addColumn( 1, lbl_DklantNaam, lbl_DklantID, lbl_DklantAdres, lbl_DfactuurNummer, lbl_DfactuurDatum, lbl_DdebiteurenNummer); form.addColumn(2, exporteer); bottomBox.getChildren().add(cancel); bottomBox.getChildren().add(exporteer); mainPane.setTop(topBox); mainPane.setCenter(centerBox); mainPane.setBottom(bottomBox); stage.setScene(scene); }
/** * Handles input in the WaitingForPhoneNumber state. * * @param message The string message. * @param channel The channel from which the input was received. */ private void handleDisplayingOrder(String message, NewOrderInChan channel) { // Only one channel to get input. switch ((NewOrderInChan) channel) { case ICMenuOption: // Check which button was pressed. if (message.equalsIgnoreCase(NewOrderView.ADD_PIZZA_KEY)) { // Get a new pizza from the AddPizzaController, then // add it to the order. AddPizzaController apCont = new AddPizzaController(_currentOrder.getFoodItems()); AddPizzaView apView = PizzaDeliverySystem.RUN_WITH_GUI ? new AddPizzaViewGUI() : new AddPizzaViewCL(); apCont.setView(apView); apView.setController(apCont); _currentOrder.getFoodItems().addAll(apCont.getPizzas()); // Return to this state (so we update all the information). gotoDisplayingOrder(); } else if (message.equalsIgnoreCase(NewOrderView.ADD_SIDE_KEY)) { // Get a new side from the AddSideController, then // add it to the order. AddSideController asCont = new AddSideController(_quantityMap); AddSideView asView = PizzaDeliverySystem.RUN_WITH_GUI ? new AddSideViewGUI() : null; asCont.setView(asView); asView.setController(asCont); asCont.enterInitialState(); // Return to this state (so we update all the information). gotoDisplayingOrder(); } else if (message.equalsIgnoreCase(NewOrderView.DONE_KEY)) { // Print an error message if the order is empty. if (_currentOrder.getFoodItems().size() == 0) handleInputError("Orders must contain at least one item."); else { // Update the fooditem list in the order. updateOrderFoodItemList(); // Send the order to the kitchen. Kitchen.addOrder(_currentOrder); // Proceed to the order confirmation. gotoDisplayingOrderConfirmation(); } } else if (message.equalsIgnoreCase(NewOrderView.REFRESH_KEY)) { // Reload this state. gotoDisplayingOrder(); } else { handleInputError("The input was invalid. Please try again."); } break; case ICConfirm: if (message.equalsIgnoreCase(NewOrderView.CANCEL_KEY)) { // Go back to the main prompt. this.active = false; } break; case ICListDelete: case ICListModify: // The message should be a list index. Get the list index // and delete/modify the food item from the order at that index. int index = -1; try { index = Integer.parseInt(message); if (index < 0 || index >= _currentOrder.getFoodItems().size()) { handleInputError("Index out of range. Please try again."); } } catch (NumberFormatException e) { handleInputError("The input was invalid. Please try again."); } if (index >= 0 && index < _currentOrder.getFoodItems().size()) { FoodItem selectedItem = _currentOrder.getFoodItems().get(index); if (channel == NewOrderInChan.ICListDelete) { _currentOrder.removeFoodItem(selectedItem); } else if (channel == NewOrderInChan.ICListModify) { // Create a new AddPizza or AddSide controller, telling // it that we're modifying the item. if (selectedItem instanceof PizzaFoodItem) { AddPizzaController apCont; AddPizzaView apView; if (PizzaDeliverySystem.RUN_WITH_GUI) { apCont = new AddPizzaController(_currentOrder.getFoodItems()); apView = new AddPizzaViewGUI((PizzaFoodItem) selectedItem); } else { apCont = new AddPizzaController((PizzaFoodItem) selectedItem, true); apView = new AddPizzaViewCL(); } apCont.setView(apView); apView.setController(apCont); _currentOrder.getFoodItems().addAll(apCont.getPizzas()); _currentOrder.removeFoodItem(selectedItem); } else { AddSideController asCont = new AddSideController(_quantityMap); AddSideView asView = PizzaDeliverySystem.RUN_WITH_GUI ? new AddSideViewGUI() : null; asCont.setView(asView); asView.setController(asCont); asCont.enterInitialState(); } } } gotoDisplayingOrder(); break; case ICBack: // Check for a back button. if (message.equalsIgnoreCase(NewOrderView.BACK_KEY)) { // Go back to the customer phone number prompt. gotoWaitingForCustInfo(); } break; default: handleInputError("The input was invalid. Please try again."); break; } }
/** * Test method for {@link controller.OrderInterface#addItemToOrder(model.Order, model.MenuItem)}. * Test with a null item param. Expect error */ @Test(expected = model.PizzaException.class) public void testAddItemToOrderNullItem() throws PizzaException { Order temp = test.getOrderInterface().createNewOrder(itemList, pizzaList); test.getOrderInterface().addItemToOrder(temp, null); assertTrue(temp.getItems().size() == 0); }
public void addOrder(Order tmp) { orders.put(tmp.getOrderNo(), tmp); }
/** * Handles input in the WaitingForPhoneNumber state. * * @param message The string message. * @param channel The channel from which the input was received. */ private void handleWaitingForPhoneNumber(String message, NewOrderInChan channel) { // Only one channel to get input. switch ((NewOrderInChan) channel) { case ICMenuOption: // Do nothing break; case ICCustomerPhone: // Check the phone number input for validity. if (Customer.isValidPhoneNumber(message)) { // Check for the customer in the database. Customer foundCust = null; for (Customer cust : Customer.getDb().list()) { if (cust.getPhoneNumber().equals(message)) { foundCust = cust; break; } } // Search for the customer in the database. if (foundCust != null) { // Set this as the current customer for the order // and proceed to the displaying order state. _currentOrder.setCustomer(foundCust); gotoDisplayingOrder(); } else { // If the customer is not in the database, go to the add // customer state. _currentOrder.getCustomer().setPhoneNumber(message); gotoWaitingForCustInfo(); } } else { // Report an error. handleInputError( "<html>Phone numbers must be numeric and 10 characters in length.</html>"); } break; case ICBack: // Check for a back button. if (message.equalsIgnoreCase(NewOrderView.BACK_KEY)) { // Set active to false. In the GUI version, pop the current // view. this.active = false; if (PizzaDeliverySystem.RUN_WITH_GUI) { PDSViewManager.popView(); } } break; default: handleInputError("The input was invalid. Please try again."); break; } }