1 package at.ac.tuwien.sbc.valesriegler.group.gui;
3 import java.util.ArrayList;
4 import java.util.HashMap;
8 import org.slf4j.Logger;
9 import org.slf4j.LoggerFactory;
11 import at.ac.tuwien.sbc.valesriegler.common.PizzaType;
12 import at.ac.tuwien.sbc.valesriegler.common.TableModel;
13 import at.ac.tuwien.sbc.valesriegler.group.Group;
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[] {
23 ID, SIZE, PIZZAS, STATE
27 protected String[] getColumns() {
32 public Object getValueAt(int rowIndex, int columnIndex) {
33 Group group = items.get(rowIndex);
34 String wantedColumn = COLUMNS[columnIndex];
35 switch(wantedColumn) {
37 int groupId = group.getId();
38 log.info("This is the group id : {}", groupId);
41 int groupSize = group.getSize();
42 log.info("This is the size : {}", groupSize);
44 case PIZZAS : return pizzaDisplay(group.getPizzas());
45 case STATE : return group.getState();
46 default : throw new RuntimeException(UNHANDLEDCOLUMN);
52 * @return A display string for PizzaTypes.
54 * e.g. Cardinale, Cardinale, Margherita is displayed as "2xCARDINALE,1xMARGHERITA"
56 private String pizzaDisplay(List<PizzaType> pizzas) {
57 HashMap<PizzaType, Integer> pizzaCount = new HashMap<PizzaType, Integer>();
58 for (PizzaType pizzaType : pizzas) {
59 if(pizzaCount.containsKey(pizzaType)) {
60 pizzaCount.put(pizzaType, pizzaCount.get(pizzaType)+1);
62 else pizzaCount.put(pizzaType, 1);
64 Set<PizzaType> pizzaTypes = pizzaCount.keySet();
65 StringBuilder sb = new StringBuilder();
67 boolean multiplePizzas = false;
68 for (PizzaType pizzaType : pizzaTypes) {
69 if(multiplePizzas) sb.append(",");
70 else multiplePizzas = true;
72 sb.append(pizzaCount.get(pizzaType) + "x");
73 sb.append(pizzaType.toString());