]> git.somenet.org - pub/jan/sbc.git/blob - src/main/java/at/ac/tuwien/sbc/valesriegler/pizzeria/gui/tablemodels/DeliveryOrdersModel.java
GUI fix for Tables OutOfBoundsException
[pub/jan/sbc.git] / src / main / java / at / ac / tuwien / sbc / valesriegler / pizzeria / gui / tablemodels / DeliveryOrdersModel.java
1 package at.ac.tuwien.sbc.valesriegler.pizzeria.gui.tablemodels;
2
3 import at.ac.tuwien.sbc.valesriegler.common.Util;
4 import at.ac.tuwien.sbc.valesriegler.types.DeliveryGroupData;
5 import at.ac.tuwien.sbc.valesriegler.types.Order;
6 import org.slf4j.Logger;
7 import org.slf4j.LoggerFactory;
8
9 import java.util.ArrayList;
10 import java.util.Collections;
11 import java.util.List;
12
13 public class DeliveryOrdersModel extends AbstractOrdersModel<DeliveryGroupData> {
14         private static final Logger log = LoggerFactory.getLogger(DeliveryOrdersModel.class);
15
16         private static final String ID = "Delivery ID";
17         private static final String ORDER_ID = "Order ID";
18         private static final String DELIVERY_ADDRESS = "Address";
19         private static final String STATUS = "Status";
20         private static final String LOAD_BALANCER_ID = "Moved by";
21         private static final String ORIGINAL_PIZZERIA = "Moved from";
22
23         private static final String[] COLUMNS = new String[]{ORDER_ID, ID, DELIVERY_ADDRESS, STATUS, LOAD_BALANCER_ID,
24                         ORIGINAL_PIZZERIA};
25
26         @Override
27         protected String[] getColumns() {
28                 return COLUMNS;
29         }
30
31         @Override
32         public Object getValueAt(int rowIndex, int columnIndex) {
33                 List<DeliveryGroupData> values = new ArrayList<>(items.values());
34                 Collections.sort(values, Util.HAS_ORDER_COMPARATOR);
35                 DeliveryGroupData group = values.get(rowIndex);
36                 Order order = group.getOrder();
37                 String wantedColumn = COLUMNS[columnIndex];
38                 switch (wantedColumn) {
39                         case ID :
40                                 return group.getId();
41                         case ORDER_ID :
42                                 return order.getId();
43                         case DELIVERY_ADDRESS :
44                                 return group.getAddress();
45                         case STATUS :
46                                 return group.getDeliveryStatus();
47                         case LOAD_BALANCER_ID :
48                                 return group.getLoadBalancerId();
49                         case ORIGINAL_PIZZERIA :
50                                 return group.getOriginalPizzeriaId();
51                         default :
52                                 throw new RuntimeException(UNHANDLEDCOLUMN);
53                 }
54         }
55
56         public DeliveryGroupData getGroupOfRow(int rowIndex) {
57                 List<DeliveryGroupData> values = new ArrayList<>(items.values());
58                 Collections.sort(values, Util.HAS_ORDER_COMPARATOR);
59                 return values.get(rowIndex);
60         }
61 }