1 package at.ac.tuwien.sbc.valesriegler.group.gui;
3 import java.util.HashMap;
7 import org.slf4j.Logger;
8 import org.slf4j.LoggerFactory;
10 import at.ac.tuwien.sbc.valesriegler.common.TableModel;
11 import at.ac.tuwien.sbc.valesriegler.group.Group;
12 import at.ac.tuwien.sbc.valesriegler.types.PizzaOrder;
13 import at.ac.tuwien.sbc.valesriegler.types.PizzaType;
15 public class GroupOverviewModel extends TableModel<Group> {
16 private static final Logger log = LoggerFactory.getLogger(GroupOverviewModel.class);
18 private static final String STATE = "State";
19 private static final String PIZZAS = "Pizzas";
20 private static final String SIZE = "Size";
21 private static final String ID = "ID";
22 private static final String[] COLUMNS = new String[] { ID, SIZE, PIZZAS, STATE };
24 public GroupOverviewModel() {
26 super.items.add(new Group()); // TODO: remove, debuggroup!
30 protected String[] getColumns() {
34 public List<Group> getItems() {
38 public Group getGroupByID(int id) {
39 for (Group group : items) {
40 if (group.getGroupData().getId() == id)
47 public Object getValueAt(int rowIndex, int columnIndex) {
48 Group group = items.get(rowIndex);
49 String wantedColumn = COLUMNS[columnIndex];
50 switch (wantedColumn) {
52 int groupId = group.getGroupData().getId();
53 log.info("This is the group id : {}", groupId);
56 int groupSize = group.getGroupData().getSize();
57 log.info("This is the size : {}", groupSize);
60 if (group.getGroupData().getOrder() == null)
62 return pizzaDisplay(group.getGroupData().getOrder().getOrderedPizzas());
64 return group.getGroupData().getState();
66 throw new RuntimeException(UNHANDLEDCOLUMN);
72 * @return A display string for PizzaTypes.
74 * e.g. Cardinale, Cardinale, Margherita is displayed as
75 * "2xCARDINALE,1xMARGHERITA"
77 private String pizzaDisplay(List<PizzaOrder> list) {
78 HashMap<PizzaType, Integer> pizzaCount = new HashMap<PizzaType, Integer>();
79 for (PizzaOrder pizzaOrder : list) {
80 PizzaType pizzaType = pizzaOrder.getPizzaType();
81 if (pizzaCount.containsKey(pizzaType)) {
82 pizzaCount.put(pizzaType, pizzaCount.get(pizzaType) + 1);
84 pizzaCount.put(pizzaType, 1);
86 Set<PizzaType> pizzaTypes = pizzaCount.keySet();
87 StringBuilder sb = new StringBuilder();
89 boolean multiplePizzas = false;
90 for (PizzaType pizzaType : pizzaTypes) {
94 multiplePizzas = true;
96 sb.append(pizzaCount.get(pizzaType) + "x");
97 sb.append(pizzaType.toString());
100 return sb.toString();
104 public void addItems(List<Group> newItems) {
105 log.info("addItems()");
106 super.addItems(newItems);
107 for (Group g : newItems) {