1 package at.ac.tuwien.sbc.valesriegler.group.gui;
4 import at.ac.tuwien.sbc.valesriegler.common.TableModel;
5 import at.ac.tuwien.sbc.valesriegler.common.Util;
6 import at.ac.tuwien.sbc.valesriegler.group.DeliveryGroup;
7 import at.ac.tuwien.sbc.valesriegler.types.DeliveryGroupData;
8 import at.ac.tuwien.sbc.valesriegler.types.DeliveryStatus;
9 import org.slf4j.Logger;
10 import org.slf4j.LoggerFactory;
12 import java.util.ArrayList;
13 import java.util.Collection;
14 import java.util.List;
16 public class DeliveryOverviewModel extends TableModel<DeliveryGroup> {
17 private static final Logger log = LoggerFactory.getLogger(GroupOverviewModel.class);
19 private static final String STATE = "State";
20 private static final String PIZZAS = "Pizzas";
21 private static final String ADDRESS = "Address";
22 private static final String ID = "ID";
23 private static final String PIZZERIA = "Pizzeria";
24 private static final String[] COLUMNS = new String[]{ID, ADDRESS, PIZZAS, STATE, PIZZERIA};
28 protected String[] getColumns() {
33 public void addItems(List<DeliveryGroup> newItems) {
34 log.info("addItems()");
35 super.addItems(newItems);
36 for (DeliveryGroup g : newItems) {
43 public Object getValueAt(int rowIndex, int columnIndex) {
44 List<DeliveryGroup> values = new ArrayList<>(items.values());
45 DeliveryGroup group = values.get(rowIndex);
46 String wantedColumn = COLUMNS[columnIndex];
47 switch (wantedColumn) {
49 int groupId = group.getId();
52 return group.getDeliveryGroupData().getAddress();
54 if (group.getDeliveryGroupData().getOrder() == null)
56 return Util.pizzaDisplay(group.getDeliveryGroupData().getOrder().getOrderedPizzas());
58 return group.getDeliveryGroupData().getDeliveryStatus();
60 return group.getDeliveryGroupData().getPizzeriaId();
62 throw new RuntimeException(UNHANDLEDCOLUMN);
66 public void addDeliveries(List<DeliveryGroupData> groups) {
67 synchronized (items) {
68 for (DeliveryGroupData group : groups) {
69 final DeliveryGroup deliveryGroup = items.get(group.getId());
70 if(deliveryGroup==null) {
71 log.error("Delivery group not found: {}", group.getId());
73 else deliveryGroup.setDeliveryGroupData(group);
76 fireTableDataChanged();
79 public void createStatistics() {
82 synchronized (items) {
83 final Collection<DeliveryGroup> values = items.values();
86 for (DeliveryGroup group : values) {
87 final DeliveryStatus status = group.getDeliveryGroupData().getDeliveryStatus();
88 if (status == DeliveryStatus.DELIVERED || status == DeliveryStatus.DELIVERY_FAILED) {
93 log.info("{} deliveries were ordered", size);
94 log.info("{} were finished", finished);
97 public boolean hasFinished() {
100 synchronized (items) {
101 final Collection<DeliveryGroup> values = items.values();
102 size = values.size();
104 for (DeliveryGroup group : values) {
105 final DeliveryStatus status = group.getDeliveryGroupData().getDeliveryStatus();
106 if (status == DeliveryStatus.DELIVERED || status == DeliveryStatus.DELIVERY_FAILED) {
111 final boolean result = size == finished;