]> git.somenet.org - pub/jan/sbc.git/blob - src/main/java/at/ac/tuwien/sbc/valesriegler/group/gui/GroupOverviewModel.java
Merge branch 'master' of
[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.HashMap;
4 import java.util.List;
5 import java.util.Set;
6
7 import org.slf4j.Logger;
8 import org.slf4j.LoggerFactory;
9
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;
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[] { ID, SIZE, PIZZAS, STATE };
23
24         public GroupOverviewModel() {
25                 super();
26                 super.items.add(new Group()); // TODO: remove, debuggroup!
27         }
28
29         @Override
30         protected String[] getColumns() {
31                 return COLUMNS;
32         }
33
34         public List<Group> getItems() {
35                 return items;
36         }
37
38         public Group getGroupByID(int id) {
39                 for (Group group : items) {
40                         if (group.getGroupData().getId() == id)
41                                 return group;
42                 }
43                 return null;
44         }
45
46         @Override
47         public Object getValueAt(int rowIndex, int columnIndex) {
48                 Group group = items.get(rowIndex);
49                 String wantedColumn = COLUMNS[columnIndex];
50                 switch (wantedColumn) {
51                 case ID:
52                         int groupId = group.getGroupData().getId();
53                         log.info("This is the group id : {}", groupId);
54                         return groupId;
55                 case SIZE:
56                         int groupSize = group.getGroupData().getSize();
57                         log.info("This is the size : {}", groupSize);
58                         return groupSize;
59                 case PIZZAS:
60                         if (group.getGroupData().getOrder() == null)
61                                 return "none";
62                         return pizzaDisplay(group.getGroupData().getOrder().getOrderedPizzas());
63                 case STATE:
64                         return group.getGroupData().getState();
65                 default:
66                         throw new RuntimeException(UNHANDLEDCOLUMN);
67                 }
68         }
69
70         /**
71          * 
72          * @return A display string for PizzaTypes.
73          *         <p />
74          *         e.g. Cardinale, Cardinale, Margherita is displayed as
75          *         "2xCARDINALE,1xMARGHERITA"
76          */
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);
83                         } else
84                                 pizzaCount.put(pizzaType, 1);
85                 }
86                 Set<PizzaType> pizzaTypes = pizzaCount.keySet();
87                 StringBuilder sb = new StringBuilder();
88
89                 boolean multiplePizzas = false;
90                 for (PizzaType pizzaType : pizzaTypes) {
91                         if (multiplePizzas)
92                                 sb.append(", ");
93                         else
94                                 multiplePizzas = true;
95
96                         sb.append(pizzaCount.get(pizzaType) + "x");
97                         sb.append(pizzaType.toString());
98                 }
99
100                 return sb.toString();
101         }
102
103         @Override
104         public void addItems(List<Group> newItems) {
105                 log.info("addItems()");
106                 super.addItems(newItems);
107                 for (Group g : newItems) {
108                         g.goGrabSomeFood();
109                 }
110         }
111 }