]> git.somenet.org - pub/jan/sbc.git/blob - src/main/java/at/ac/tuwien/sbc/valesriegler/pizzeria/gui/tablemodels/DeliveryOrdersModel.java
[JMS] PizzeriaGUI now displays DeliveryOrders.
[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 java.util.ArrayList;
4 import java.util.Collections;
5 import java.util.Comparator;
6 import java.util.List;
7
8 import org.slf4j.Logger;
9 import org.slf4j.LoggerFactory;
10
11 import at.ac.tuwien.sbc.valesriegler.types.DeliveryGroupData;
12 import at.ac.tuwien.sbc.valesriegler.types.Order;
13
14 public class DeliveryOrdersModel extends AbstractOrdersModel<DeliveryGroupData> {
15         private static final Logger log = LoggerFactory.getLogger(DeliveryOrdersModel.class);
16
17         private static final String ID = "Delivery ID";
18         private static final String ORDER_ID = "Order ID";
19         private static final String DELIVERY_ADDRESS = "Address";
20         private static final String STATUS = "Status";
21         private static final String LOAD_BALANCER_ID = "Moved by";
22         private static final String ORIGINAL_PIZZERIA = "Moved from";
23
24         private static final String[] COLUMNS = new String[]{ORDER_ID, ID, DELIVERY_ADDRESS, STATUS, LOAD_BALANCER_ID,
25                         ORIGINAL_PIZZERIA};
26
27         @Override
28         protected String[] getColumns() {
29                 return COLUMNS;
30         }
31
32         @Override
33         public Object getValueAt(int rowIndex, int columnIndex) {
34                 List<DeliveryGroupData> values = new ArrayList<>(items.values());
35                 // TODO: make sure that is necessary
36                 Collections.sort(values, new Comparator<DeliveryGroupData>() {
37                         @Override
38                         public int compare(DeliveryGroupData o1, DeliveryGroupData o2) {
39                                 final int o1Id = o1.getOrder().getId();
40                                 final int o2Id = o2.getOrder().getId();
41                                 if (o1Id == 0) {
42                                         if (o2Id > 0)
43                                                 return 1;
44                                 }
45                                 if (o2Id == 0) {
46                                         if (o1Id > 0)
47                                                 return 1;
48                                 }
49                                 if (o1Id < o2Id)
50                                         return -1;
51                                 else if (o1Id > o2Id)
52                                         return 1;
53                                 else
54                                         return 0;
55                         }
56                 });
57                 DeliveryGroupData group = values.get(rowIndex);
58                 Order order = group.getOrder();
59                 String wantedColumn = COLUMNS[columnIndex];
60                 switch (wantedColumn) {
61                         case ID :
62                                 return group.getId();
63                         case ORDER_ID :
64                                 return order.getId();
65                         case DELIVERY_ADDRESS :
66                                 return group.getAddress();
67                         case STATUS :
68                                 return group.getDeliveryStatus();
69                         case LOAD_BALANCER_ID :
70                                 return group.getLoadBalancerId();
71                         case ORIGINAL_PIZZERIA :
72                                 return group.getOriginalPizzeriaId();
73                         default :
74                                 throw new RuntimeException(UNHANDLEDCOLUMN);
75                 }
76         }
77
78         public DeliveryGroupData getGroupOfRow(int rowIndex) {
79                 List<DeliveryGroupData> values = new ArrayList<>(items.values());
80                 // TODO: make sure that is necessary
81                 Collections.sort(values, new Comparator<DeliveryGroupData>() {
82                         @Override
83                         public int compare(DeliveryGroupData o1, DeliveryGroupData o2) {
84                                 final int o1Id = o1.getOrder().getId();
85                                 final int o2Id = o2.getOrder().getId();
86                                 if (o1Id == 0) {
87                                         if (o2Id > 0)
88                                                 return 1;
89                                 }
90                                 if (o2Id == 0) {
91                                         if (o1Id > 0)
92                                                 return 1;
93                                 }
94                                 if (o1Id < o2Id)
95                                         return -1;
96                                 else if (o1Id > o2Id)
97                                         return 1;
98                                 else
99                                         return 0;
100                         }
101                 });
102                 return values.get(rowIndex);
103                 // return new ArrayList<>(items.values()).get(rowIndex);
104         }
105 }