]> git.somenet.org - pub/jan/sbc.git/blob - src/main/java/at/ac/tuwien/sbc/valesriegler/pizzeria/gui/tablemodels/OrdersOverviewModel.java
[XVSM] Create initial Pizzeria Recovery support.
[pub/jan/sbc.git] / src / main / java / at / ac / tuwien / sbc / valesriegler / pizzeria / gui / tablemodels / OrdersOverviewModel.java
1 package at.ac.tuwien.sbc.valesriegler.pizzeria.gui.tablemodels;
2
3 import java.util.ArrayList;
4 import java.util.Arrays;
5 import java.util.List;
6 import java.util.Map;
7
8 import at.ac.tuwien.sbc.valesriegler.types.*;
9 import org.slf4j.Logger;
10 import org.slf4j.LoggerFactory;
11
12 import at.ac.tuwien.sbc.valesriegler.common.TableModel;
13 import at.ac.tuwien.sbc.valesriegler.common.Util;
14
15 public class OrdersOverviewModel extends AbstractOrdersModel<GroupData> {
16         private static final Logger log = LoggerFactory.getLogger(OrdersOverviewModel.class);
17
18         private static final String ID = "Order ID";
19         private static final String TABLE_ID = "Table ID";
20         private static final String GROUP_ID = "Group ID";
21         private static final String STATUS = "Status";
22
23         private static final String[] COLUMNS = new String[] { ID, TABLE_ID, GROUP_ID, STATUS };
24
25         @Override
26         public Object getValueAt(int rowIndex, int columnIndex) {
27                 List<GroupData> values = new ArrayList<>(items.values());
28                 GroupData group = values.get(rowIndex);
29                 Order order = group.getOrder();
30                 String wantedColumn = COLUMNS[columnIndex];
31                 switch (wantedColumn) {
32                 case ID:
33                         return order.getId();
34                 case TABLE_ID:
35                         return group.getTable().getId();
36                 case GROUP_ID:
37                         return order.getGroupId();
38                 case STATUS:
39                         return order.getStatus();
40                 default:
41                         throw new RuntimeException(UNHANDLEDCOLUMN);
42                 }
43         }
44
45         public GroupData getGroupOfRow(int rowIndex) {
46                 synchronized (items) {
47                         return new ArrayList<>(items.values()).get(rowIndex);
48                 }
49         }
50
51         @Override
52         protected String[] getColumns() {
53                 return COLUMNS;
54         }
55
56         public void updateGroupData(GroupData groupdata) {
57                 synchronized (items) {
58                         items.put(groupdata.getId(), groupdata);
59                 }
60
61                 fireTableDataChanged();
62         }
63
64     public void updateStatusOfOrder(GroupData group) {
65         updateStatusOfOrders(Arrays.asList(group));
66         }
67
68     public void updatePaymentWaiter(GroupData group) {
69                 synchronized (items) {
70                         List<GroupData> groups = new ArrayList<GroupData>(items.values());
71                         for (GroupData groupData : groups) {
72                                 if (groupData.getId() == group.getId()) {
73                                         groupData.setPayingWaiter(group.getPayingWaiter());
74                                 }
75                         }
76                 }
77                 fireTableDataChanged();
78         }
79
80     public void updateStatusOfOrders(List<GroupData> updatedGroups) {
81         synchronized (items) {
82             for (GroupData group : updatedGroups) {
83                 Order order = group.getOrder();
84                 List<GroupData> groups = new ArrayList<GroupData>(items.values());
85                 for (GroupData groupData : groups) {
86                     Order orderOfGroup = groupData.getOrder();
87                     if (order.getId() == orderOfGroup.getId()) {
88                         orderOfGroup.setStatus(OrderStatus.DELIVERED);
89                         groupData.setServingWaiter(group.getServingWaiter());
90                     }
91                 }
92             }
93         }
94
95         fireTableDataChanged();
96     }
97 }