public String addItems(Order order) throws Exception { LOGGER.info("Adding items to order: " + order.getOrderId()); Order corder = getOrder(order.getOrderId()); for (OrderItem orderItem : order.getItems()) { LOGGER.info("Adding item: " + orderItem.getItem().getItemId()); Item item = _warehouse.getItem(orderItem.getItem().getItemId()); if (item == null) { throw new RuntimeException("Item " + orderItem.getItem().getItemId() + " not found!"); } else { orderItem.setItem(item); corder.getItems().add(orderItem); } } LOGGER.info("Order after adding items: " + corder); return SUCCESS; }
public Order getOrder(Integer orderId) throws Exception { LOGGER.info("Getting Order with no: " + orderId); Order corder = _orders.get(orderId); if (corder == null) { throw new RuntimeException("Order " + orderId + " not found!"); } LOGGER.info("Updating descriptions: " + corder.getItems()); // Get the updated descriptions of items for (OrderItem orderItem : corder.getItems()) { Item item = _warehouse.getItem(orderItem.getItem().getItemId()); orderItem.setItem(item); } return corder; }
public String removeItem(String orderItemId) throws Exception { // Not so elegant, but what to do? String[] ids = orderItemId.split(":"); if (ids.length != 2) { throw new RuntimeException("Missing either order id or item id!"); } Integer orderId = Integer.parseInt(ids[0]); Integer itemId = Integer.parseInt(ids[1]); Order corder = getOrder(orderId); for (OrderItem orderItem : corder.getItems()) { if (orderItem.getItem().getItemId() == itemId) { corder.getItems().remove(orderItem); break; } } LOGGER.info("Order after deleting item: " + corder); return SUCCESS; }