public static JSONArray toJSONArray() { JSONArray jsonArray = new JSONArray(); for (Position position : positions) { Map<String, Object> map = new HashMap<String, Object>(); map.put("item_id", position.getItem().getId()); map.put("quantity", position.getQuantity()); if (position.getOptions().size() > 0) { JSONArray options = new JSONArray(); for (Option option : position.getOptions()) { Map<String, Object> m = new HashMap<String, Object>(); m.put("id", option.getId()); options.put(new JSONObject(m)); } map.put("options", options); } if (position.getToppings().size() > 0) { JSONArray toppings = new JSONArray(); for (Topping topping : position.getToppings()) { Map<String, Object> m = new HashMap<String, Object>(); m.put("id", topping.getId()); toppings.put(new JSONObject(m)); } map.put("toppings", toppings); } JSONObject jsonObject = new JSONObject(map); jsonArray.put(jsonObject); } return jsonArray; }
public double cost() { double price = 0.0; for (Topping topping : toppings) { price += topping.cost(); } return price + cost; }
public static int totalPrice() { int totalPrice = 0; for (Position position : positions) { int quantity = position.getQuantity(); totalPrice += position.getItem().getPrice() * quantity; for (Option option : position.getOptions()) { totalPrice += option.getPrice_delta() * quantity; } for (Topping topping : position.getToppings()) { totalPrice += topping.getPrice_fixed() * quantity; } } return totalPrice; }
@Override public void actionPerformed(ActionEvent actionEvent) { String command = actionEvent.getActionCommand(); System.out.println(command); switch (command) { case "comboBoxChanged": if (((JComboBox) components.get("typeComboBox")).getSelectedItem().equals("Side") || ((JComboBox) components.get("typeComboBox")).getSelectedItem().equals("Drink")) { components.get("priceContainer").setVisible(true); components.get("shortnameContainer").setVisible(false); } else if (((JComboBox) components.get("typeComboBox")).getSelectedItem().equals("Size")) { components.get("priceContainer").setVisible(true); components.get("shortnameContainer").setVisible(true); } else { components.get("priceContainer").setVisible(false); components.get("shortnameContainer").setVisible(true); } break; case "Back": manager.activateWindow(manager.MENU_EDIT, manager.MANAGE_MAIN); break; case "Delete": if (item != null) { model.getCatalog().deleteItem(item); } resetView(); break; case "Cancel": resetView(); break; case "Save": String itemName = ((JTextArea) components.get("itemNameEditText")).getText(); String shortName = ((JTextArea) components.get("shortNameEditText")).getText(); String priceString = ((JTextArea) components.get("priceEditText")).getText(); double price; try { switch (((JComboBox) components.get("typeComboBox")).getSelectedItem().toString()) { case "Topping": if (model.getCatalog().getEntireCatalog().contains(item)) { ((Topping) item).setFullName(itemName); ((Topping) item).setShortName(shortName); model.getCatalog().updateItem(((Topping) item).getItemID()); } else { item = new Topping(shortName, itemName); model.getCatalog().addItem(item); } break; case "Size": price = Double.parseDouble(priceString); if (model.getCatalog().getEntireCatalog().contains(item)) { ((PizzaSize) item).setFullName(itemName); ((PizzaSize) item).setShortName(shortName); ((PizzaSize) item).setPrice(price); model.getCatalog().updateItem(((PizzaSize) item).getItemID()); } else { item = new PizzaSize(shortName, itemName, price); model.getCatalog().addItem(item); } break; case "Sauce": if (model.getCatalog().getEntireCatalog().contains(item)) { ((Sauce) item).setFullName(itemName); ((Sauce) item).setShortName(shortName); model.getCatalog().updateItem(((Sauce) item).getItemID()); } else { item = new Sauce(shortName, itemName); model.getCatalog().addItem(item); } break; case "Side": price = Double.parseDouble(priceString); if (model.getCatalog().getEntireCatalog().contains(item)) { ((Side) item).setName(itemName); ((Side) item).setPrice(price); model.getCatalog().updateItem(((Side) item).getItemID()); } else { item = new Side(itemName, price); model.getCatalog().addItem(item); } break; case "Drink": price = Double.parseDouble(priceString); if (model.getCatalog().getEntireCatalog().contains(item)) { ((Drink) item).setName(itemName); ((Drink) item).setPrice(price); model.getCatalog().updateItem(((Drink) item).getItemID()); } else { item = new Drink(itemName, price); model.getCatalog().addItem(item); } break; } resetView(); } catch (NumberFormatException e) { JOptionPane.showMessageDialog( view, "Price must be a number", "Error", JOptionPane.PLAIN_MESSAGE); } break; } }
@Test /** Test reconstituting a MenuMessage */ public void testReconstituteMenu() { ArrayList<String> representation = new ArrayList<String>(); representation.add("2"); representation.add("Item type:slice, Menu id:1, description:Slice (thin crust), price:1.75"); representation.add("Item type:slice, Menu id:2, description:Slice (thick crust), price:1.75"); representation.add( "Item type:slice, Menu id:3, description:Slice (Sicilian crust), price:2.25"); representation.add( "Item type:specialty pie, Menu id:4, small:12.50, medium:14.50, large:17.75, " + "description:Tibetan delight with hallucenogenic mushrooms, yak butter, and turnips"); representation.add( "Item type:specialty pie, Menu id:5, small:15.50, medium:20.00, large:24.00, " + "description:Hawaiin luau pie with pineapple, pork meat, hibiscus flowers, and sea salt"); representation.add(""); // empty line separating menu items from toppings representation.add("topping id:1, description:Extra Cheese, price:0.75"); representation.add("topping id:2, description:Anchovies, price:1.25"); representation.add("topping id:3, description:Pepperoni, price:1.00 "); representation.add("END"); PizzaMessage msg = PizzaMessage.reconstitute(representation); assertTrue("reconstituted message is a Menu ", msg instanceof MenuMessage); MenuMessage menu = (MenuMessage) msg; ArrayList<MenuItem> menuItems = menu.getMenuItemList(); assertEquals("number of menu items", 5, menuItems.size()); MenuItem item0 = menuItems.get(0); assertTrue("first menu item is a slice", item0 instanceof SliceMenuItem); SliceMenuItem slice0 = (SliceMenuItem) item0; assertEquals("first menu item id", 1, slice0.getMenuItemId()); assertEquals("first menu item description", "Slice (thin crust)", slice0.getItemDescription()); assertEquals("first menu item price", 1.75, slice0.getBasePrice(), 0.01); MenuItem item1 = menuItems.get(1); assertTrue("second menu item is a slice", item1 instanceof SliceMenuItem); SliceMenuItem slice1 = (SliceMenuItem) item1; assertEquals("second menu item id", 2, slice1.getMenuItemId()); assertEquals( "second menu item description", "Slice (thick crust)", slice1.getItemDescription()); assertEquals("second menu item price", 1.75, slice1.getBasePrice(), 0.01); MenuItem item2 = menuItems.get(2); assertTrue("third menu item is a slice", item2 instanceof SliceMenuItem); SliceMenuItem slice2 = (SliceMenuItem) item2; assertEquals("third menu item id", 3, slice2.getMenuItemId()); assertEquals( "third menu item description", "Slice (Sicilian crust)", slice2.getItemDescription()); assertEquals("third menu item price", 2.25, slice2.getBasePrice(), 0.01); MenuItem item3 = menuItems.get(3); assertTrue("fourth menu item is a specialty pie", item3 instanceof SpecialtyPizzaMenuItem); SpecialtyPizzaMenuItem pie1 = (SpecialtyPizzaMenuItem) item3; assertEquals("fourth menu item id", 4, pie1.getMenuItemId()); assertEquals( "fourth menu item description", "Tibetan delight with hallucenogenic mushrooms, yak butter, and turnips", pie1.getItemDescription()); assertEquals("fourth menu item small price", 12.50, pie1.getSmallPrice(), 0.01); assertEquals("fourth menu item medium price", 14.50, pie1.getMediumPrice(), 0.01); assertEquals("fourth menu item large price", 17.75, pie1.getLargePrice(), 0.01); MenuItem item4 = menuItems.get(4); assertTrue("fifth menu item is a specialty pie", item4 instanceof SpecialtyPizzaMenuItem); SpecialtyPizzaMenuItem pie2 = (SpecialtyPizzaMenuItem) item4; assertEquals("fifth menu item id", 5, pie2.getMenuItemId()); assertEquals( "fifth menu item description", "Hawaiin luau pie with pineapple, pork meat, hibiscus flowers, and sea salt", pie2.getItemDescription()); assertEquals("fifth menu item small price", 15.50, pie2.getSmallPrice(), 0.01); assertEquals("fifth menu item medium price", 20.00, pie2.getMediumPrice(), 0.01); assertEquals("fitth menu item large price", 24.00, pie2.getLargePrice(), 0.01); /* * Check toppings */ ArrayList<Topping> toppings = menu.getToppingList(); assertEquals("number of toppings", 3, toppings.size()); Topping topping0 = toppings.get(0); assertEquals("first topping id", 1, topping0.getId()); assertEquals("first topping description", "Extra Cheese", topping0.getDescription()); assertEquals("first topping price", 0.75, topping0.getPrice(), 0.01); Topping topping1 = toppings.get(1); assertEquals("second topping id", 2, topping1.getId()); assertEquals("second topping description", "Anchovies", topping1.getDescription()); assertEquals("second topping price", 1.25, topping1.getPrice(), 0.01); Topping topping2 = toppings.get(2); assertEquals("third topping id", 3, topping2.getId()); assertEquals("third topping description", "Pepperoni", topping2.getDescription()); assertEquals("third topping price", 1.00, topping2.getPrice(), 0.01); }
@Test public void testStandardToppings() { assertEquals(1, Topping.create("pepperoni").getPrice()); }