]> git.somenet.org - pub/jan/sbc.git/blob - src/main/java/at/ac/tuwien/sbc/valesriegler/pizzeria/gui/tablemodels/DeliveryOrdersModel.java
[XVSM]Some NPE fixes, GUI fixes
[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.types.DeliveryGroupData;
4 import at.ac.tuwien.sbc.valesriegler.types.Order;
5 import org.slf4j.Logger;
6 import org.slf4j.LoggerFactory;
7
8 import java.util.ArrayList;
9 import java.util.Collections;
10 import java.util.Comparator;
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, ORIGINAL_PIZZERIA };
24
25     @Override
26     protected String[] getColumns() {
27         return COLUMNS;
28     }
29
30     @Override
31     public Object getValueAt(int rowIndex, int columnIndex) {
32         List<DeliveryGroupData> values = new ArrayList<>(items.values());
33         // TODO: make sure that is necessary
34         Collections.sort(values, new Comparator<DeliveryGroupData>() {
35             @Override
36             public int compare(DeliveryGroupData o1, DeliveryGroupData o2) {
37                 final int o1Id = o1.getOrder().getId();
38                 final int o2Id = o2.getOrder().getId();
39                 if(o1Id==0) {
40                    if(o2Id>0) return 1;
41                 }
42                 if(o2Id==0) {
43                     if(o1Id>0) return 1;
44                 }
45                 if (o1Id < o2Id) return -1;
46                 else if (o1Id > o2Id) return 1;
47                 else return 0;
48             }
49         });
50         DeliveryGroupData group = values.get(rowIndex);
51         Order order = group.getOrder();
52         String wantedColumn = COLUMNS[columnIndex];
53         switch (wantedColumn) {
54             case ID:
55                 return group.getId();
56             case ORDER_ID:
57                 return order.getId();
58             case DELIVERY_ADDRESS:
59                 return group.getAddress();
60             case STATUS:
61                 return group.getDeliveryStatus();
62             case LOAD_BALANCER_ID:
63                 return group.getLoadBalancerId();
64             case ORIGINAL_PIZZERIA:
65                 return group.getOriginalPizzeriaId();
66             default:
67                 throw new RuntimeException(UNHANDLEDCOLUMN);
68         }
69     }
70
71     public DeliveryGroupData getGroupOfRow(int rowIndex) {
72         return new ArrayList<>(items.values()).get(rowIndex);
73     }
74 }