]> git.somenet.org - pub/jan/sbc.git/blob - src/main/java/at/ac/tuwien/sbc/valesriegler/group/gui/GroupOverviewModel.java
Pizzeria GUI implemented
[pub/jan/sbc.git] / src / main / java / at / ac / tuwien / sbc / valesriegler / group / gui / GroupOverviewModel.java
1 package at.ac.tuwien.sbc.valesriegler.group.gui;
2
3 import java.util.ArrayList;
4 import java.util.HashMap;
5 import java.util.List;
6 import java.util.Set;
7
8 import org.slf4j.Logger;
9 import org.slf4j.LoggerFactory;
10
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;
14
15 public class GroupOverviewModel extends TableModel<Group> {
16         private static final Logger log = LoggerFactory.getLogger(GroupOverviewModel.class);
17         
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 
24         };
25         
26         @Override
27         protected String[] getColumns() {
28                 return COLUMNS;
29         }
30         
31         @Override
32         public Object getValueAt(int rowIndex, int columnIndex) {
33                 Group group = items.get(rowIndex);
34                 String wantedColumn = COLUMNS[columnIndex];
35                 switch(wantedColumn) {
36                 case ID : 
37                         int groupId = group.getId();
38                         log.info("This is the group id : {}", groupId);
39                         return groupId; 
40                 case SIZE : 
41                         int groupSize = group.getSize();
42                         log.info("This is the size : {}", groupSize);
43                         return groupSize; 
44                 case PIZZAS : return pizzaDisplay(group.getPizzas());
45                 case STATE : return group.getState();
46                 default : throw new RuntimeException(UNHANDLEDCOLUMN);
47                 }
48         }
49
50         /**
51          * 
52          * @return A display string for PizzaTypes. 
53          * <p />
54          * e.g. Cardinale, Cardinale, Margherita is displayed as "2xCARDINALE,1xMARGHERITA"
55          */
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);
61                         }
62                         else pizzaCount.put(pizzaType, 1);
63                 }
64                 Set<PizzaType> pizzaTypes = pizzaCount.keySet();
65                 StringBuilder sb = new StringBuilder();
66                 
67                 boolean multiplePizzas = false;
68                 for (PizzaType pizzaType : pizzaTypes) {
69                         if(multiplePizzas) sb.append(",");
70                         else multiplePizzas = true;
71                         
72                         sb.append(pizzaCount.get(pizzaType) + "x");
73                         sb.append(pizzaType.toString());
74                 }
75                 
76                 return sb.toString();
77         }
78
79
80 }