1 package at.ac.tuwien.sbc.valesriegler.group.gui;
3 import java.util.ArrayList;
4 import java.util.HashMap;
8 import javax.swing.table.AbstractTableModel;
10 import org.slf4j.Logger;
11 import org.slf4j.LoggerFactory;
13 import at.ac.tuwien.sbc.valesriegler.common.PizzaType;
14 import at.ac.tuwien.sbc.valesriegler.group.Group;
15 import at.ac.tuwien.sbc.valesriegler.group.GroupState;
16 import at.ac.tuwien.sbc.valesriegler.jms.cook.Cook;
18 public class GroupOverviewModel extends AbstractTableModel {
19 private static final Logger log = LoggerFactory.getLogger(GroupOverviewModel.class);
21 private static final String STATE = "State";
22 private static final String PIZZAS = "Pizzas";
23 private static final String SIZE = "Size";
24 private static final String ID = "ID";
25 private static final String UNHANDLEDCOLUMN = "Unhandled column";
26 private static final String[] COLUMNS = new String[] {
27 ID, SIZE, PIZZAS, STATE
30 private List<Group> groups = new ArrayList<Group>();
32 public GroupOverviewModel() {
36 private void insertTestData() {
37 Group group1 = new Group();
40 group1.setState(GroupState.EATING);
42 Group group2 = new Group();
45 group2.setState(GroupState.GONE);
47 Group group3 = new Group();
50 group3.setState(GroupState.EATING);
52 ArrayList<PizzaType> pizzas1 = new ArrayList<PizzaType>();
53 pizzas1.add(PizzaType.MARGHERITA);
54 pizzas1.add(PizzaType.CARDINALE);
55 pizzas1.add(PizzaType.CARDINALE);
57 ArrayList<PizzaType> pizzas2 = new ArrayList<PizzaType>();
58 pizzas2.add(PizzaType.MARGHERITA);
59 pizzas2.add(PizzaType.MARGHERITA);
60 pizzas2.add(PizzaType.CARDINALE);
62 ArrayList<PizzaType> pizzas3 = new ArrayList<PizzaType>();
63 pizzas3.add(PizzaType.MARGHERITA);
64 pizzas3.add(PizzaType.SALAMI);
65 pizzas3.add(PizzaType.CARDINALE);
67 group1.setPizzas(pizzas1);
68 group2.setPizzas(pizzas2);
69 group3.setPizzas(pizzas3);
75 fireTableDataChanged();
80 public int getRowCount() {
85 public String getColumnName(int column) {
86 return COLUMNS[column];
90 public int getColumnCount() {
91 return COLUMNS.length;
95 public Object getValueAt(int rowIndex, int columnIndex) {
96 Group group = groups.get(rowIndex);
97 String wantedColumn = COLUMNS[columnIndex];
98 switch(wantedColumn) {
100 int groupId = group.getId();
101 log.info("This is the group id : {}", groupId);
104 int groupSize = group.getSize();
105 log.info("This is the size : {}", groupSize);
107 case PIZZAS : return pizzaDisplay(group.getPizzas());
108 case STATE : return group.getState();
109 default : throw new RuntimeException(UNHANDLEDCOLUMN);
115 * @return A display string for PizzaTypes.
117 * e.g. Cardinale, Cardinale, Margherita is displayed as "2xCARDINALE,1xMARGHERITA"
119 private String pizzaDisplay(List<PizzaType> pizzas) {
120 HashMap<PizzaType, Integer> pizzaCount = new HashMap<PizzaType, Integer>();
121 for (PizzaType pizzaType : pizzas) {
122 if(pizzaCount.containsKey(pizzaType)) {
123 pizzaCount.put(pizzaType, pizzaCount.get(pizzaType)+1);
125 else pizzaCount.put(pizzaType, 1);
127 Set<PizzaType> pizzaTypes = pizzaCount.keySet();
128 StringBuilder sb = new StringBuilder();
130 boolean multiplePizzas = false;
131 for (PizzaType pizzaType : pizzaTypes) {
132 if(multiplePizzas) sb.append(",");
133 else multiplePizzas = true;
135 sb.append(pizzaCount.get(pizzaType) + "x");
136 sb.append(pizzaType.toString());
139 return sb.toString();
142 public void addGroup(Group group) {
145 fireTableDataChanged();