1 package at.ac.tuwien.sbc.valesriegler.pizzeria.gui.tablemodels;
3 import java.util.ArrayList;
4 import java.util.Arrays;
8 import at.ac.tuwien.sbc.valesriegler.types.*;
9 import org.slf4j.Logger;
10 import org.slf4j.LoggerFactory;
12 import at.ac.tuwien.sbc.valesriegler.common.TableModel;
13 import at.ac.tuwien.sbc.valesriegler.common.Util;
15 public class OrdersOverviewModel extends AbstractOrdersModel<GroupData> {
16 private static final Logger log = LoggerFactory.getLogger(OrdersOverviewModel.class);
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";
23 private static final String[] COLUMNS = new String[] { ID, TABLE_ID, GROUP_ID, STATUS };
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) {
35 return group.getTable().getId();
37 return order.getGroupId();
39 return order.getStatus();
41 throw new RuntimeException(UNHANDLEDCOLUMN);
45 public GroupData getGroupOfRow(int rowIndex) {
46 synchronized (items) {
47 return new ArrayList<>(items.values()).get(rowIndex);
52 protected String[] getColumns() {
56 public void updateGroupData(GroupData groupdata) {
57 synchronized (items) {
58 items.put(groupdata.getId(), groupdata);
61 fireTableDataChanged();
64 public void updateStatusOfOrder(GroupData group) {
65 updateStatusOfOrders(Arrays.asList(group));
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());
77 fireTableDataChanged();
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());
95 fireTableDataChanged();