1 package at.ac.tuwien.sbc.valesriegler.pizzeria.gui.tablemodels;
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;
8 import java.util.ArrayList;
9 import java.util.Collections;
10 import java.util.Comparator;
11 import java.util.List;
13 public class DeliveryOrdersModel extends AbstractOrdersModel<DeliveryGroupData> {
14 private static final Logger log = LoggerFactory.getLogger(DeliveryOrdersModel.class);
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";
23 private static final String[] COLUMNS = new String[] { ORDER_ID, ID, DELIVERY_ADDRESS, STATUS, LOAD_BALANCER_ID, ORIGINAL_PIZZERIA };
26 protected String[] getColumns() {
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>() {
36 public int compare(DeliveryGroupData o1, DeliveryGroupData o2) {
37 final int o1Id = o1.getOrder().getId();
38 final int o2Id = o2.getOrder().getId();
45 if (o1Id < o2Id) return -1;
46 else if (o1Id > o2Id) return 1;
50 DeliveryGroupData group = values.get(rowIndex);
51 Order order = group.getOrder();
52 String wantedColumn = COLUMNS[columnIndex];
53 switch (wantedColumn) {
58 case DELIVERY_ADDRESS:
59 return group.getAddress();
61 return group.getDeliveryStatus();
62 case LOAD_BALANCER_ID:
63 return group.getLoadBalancerId();
64 case ORIGINAL_PIZZERIA:
65 return group.getOriginalPizzeriaId();
67 throw new RuntimeException(UNHANDLEDCOLUMN);
71 public DeliveryGroupData getGroupOfRow(int rowIndex) {
72 return new ArrayList<>(items.values()).get(rowIndex);