1 package at.ac.tuwien.sbc.valesriegler.pizzeria.gui.tablemodels;
4 import at.ac.tuwien.sbc.valesriegler.common.TableModel;
5 import at.ac.tuwien.sbc.valesriegler.common.Util;
6 import at.ac.tuwien.sbc.valesriegler.types.*;
7 import org.slf4j.Logger;
8 import org.slf4j.LoggerFactory;
10 import java.util.ArrayList;
11 import java.util.List;
14 public abstract class AbstractOrdersModel<T extends HasOrder> extends TableModel<T> {
15 private static final Logger log = LoggerFactory.getLogger(AbstractOrdersModel.class);
17 * Traverse the Groups and search for an order of which the orderId
18 * matches the orderId of one of the pizzas. Then set the status and the
19 * cookId of the respective pizza.
21 public void updatePizzasInPreparation(List<Pizza> pizzas) {
22 synchronized (items) {
23 for (Pizza pizza : pizzas) {
24 List<T> groups = new ArrayList<T>(items.values());
25 for (T groupData : groups) {
26 Order order = groupData.getOrder();
27 if (order.getId() == pizza.getOrderId()) {
29 List<PizzaOrder> orderedPizzas = order.getOrderedPizzas();
30 Map<Integer, PizzaOrder> orderedPizzasById = Util.intoMapById(orderedPizzas);
31 PizzaOrder pizzaOrder = orderedPizzasById.get(pizza.getId());
32 if (pizzaOrder == null) {
33 throw new RuntimeException("A pizza which has never been ordered is in preparation... damn!");
35 pizzaOrder.setStatus(PizzaOrderStatus.IN_PREPARATION);
36 pizzaOrder.setCookId(pizza.getCookId());
42 fireTableDataChanged();
45 protected Order getOrderById(int orderId) {
46 List<T> groups = new ArrayList<T>(items.values());
47 for (T groupData : groups) {
48 if (groupData.getOrder().getId() == orderId) {
49 return groupData.getOrder();
55 public void updateStatusOfPizzasDone(List<Pizza> pizzas) {
56 synchronized (items) {
57 for (Pizza pizza : pizzas) {
58 int orderId = pizza.getOrderId();
59 Order order = getOrderById(orderId);
63 List<PizzaOrder> orderedPizzas = order.getOrderedPizzas();
64 for (PizzaOrder pizzaOrder : orderedPizzas) {
65 if (pizzaOrder.getId() == pizza.getId()) {
66 pizzaOrder.setStatus(PizzaOrderStatus.DONE);
72 fireTableDataChanged();