]> git.somenet.org - pub/jan/sbc.git/blob - src/main/java/at/ac/tuwien/sbc/valesriegler/pizzeria/PizzeriaAgent.java
Merge branch 'master' of https://bitbucket.org/rgregor/sbc-ss-2013
[pub/jan/sbc.git] / src / main / java / at / ac / tuwien / sbc / valesriegler / pizzeria / PizzeriaAgent.java
1 package at.ac.tuwien.sbc.valesriegler.pizzeria;
2
3 import java.util.List;
4
5 import javax.swing.SwingUtilities;
6
7 import org.slf4j.Logger;
8 import org.slf4j.LoggerFactory;
9
10 import at.ac.tuwien.sbc.valesriegler.common.Util;
11 import at.ac.tuwien.sbc.valesriegler.pizzeria.gui.PizzeriaFrame;
12 import at.ac.tuwien.sbc.valesriegler.pizzeria.gui.tablemodels.GroupsOverviewModel;
13 import at.ac.tuwien.sbc.valesriegler.pizzeria.gui.tablemodels.OrdersOverviewModel;
14 import at.ac.tuwien.sbc.valesriegler.pizzeria.gui.tablemodels.PizzasOfOrderModel;
15 import at.ac.tuwien.sbc.valesriegler.pizzeria.gui.tablemodels.TablesOverviewModel;
16 import at.ac.tuwien.sbc.valesriegler.pizzeria.gui.tablemodels.WaitersOfOrderModel;
17 import at.ac.tuwien.sbc.valesriegler.types.Table;
18 import at.ac.tuwien.sbc.valesriegler.xvsm.XVSMConnector;
19
20 /**
21  * The Main class of the Pizzeria compoment.
22  * <p />
23  * Start the communication and the Pizzeria GUI
24  * 
25  * @author Gregor Riegler <gregor DOT riegler AT gmail DOT com>
26  * @author jan
27  */
28 public class PizzeriaAgent {
29         private static final Logger log = LoggerFactory.getLogger(PizzeriaAgent.class);
30
31         private static final String USAGE = "Usage: java PizzeriaAgent XVSM|JMS";
32
33         private static PizzeriaAgent pizzeriaAgent;
34
35         
36
37
38         private OrdersOverviewModel ordersModel;
39         private GroupsOverviewModel groupModel;
40         private TablesOverviewModel tablesModel;
41         private WaitersOfOrderModel waitersModel;
42         private PizzasOfOrderModel pizzasModel;
43
44         private XVSMConnector xvsm;
45
46         public static void main(String[] args) {// TODO: remove hardcoding of JMS.
47                 // if (args.length != 1) {
48                 // throw new IllegalArgumentException(USAGE);
49                 // } else {
50 //              String mom = "XVSM";// args[0];
51                 String mom = Util.useJMS ? "JMS" : "XVSM"; 
52                 log.info(mom);
53                 pizzeriaAgent = new PizzeriaAgent();
54                 switch (mom) {
55                 case "XVSM":
56                         pizzeriaAgent.createModels();
57                         pizzeriaAgent.initXVSM();
58                         pizzeriaAgent.initGUI();
59                         break;
60                 case "JMS":
61                         pizzeriaAgent.createModels();
62                         pizzeriaAgent.initJMS();
63                         pizzeriaAgent.initGUI();
64                         break;
65                 default:
66                         throw new IllegalArgumentException(USAGE);
67                 }
68
69                 // }
70         }
71
72         private void initJMS() {
73                 // do what you have to do
74         }
75
76         private void initXVSM() {
77                         xvsm = new XVSMConnector();
78                         xvsm.initSpaceCommunication();
79                         xvsm.useTablesContainer();
80                         xvsm.useGroupsContainer();
81                         
82                         xvsm.initPizzeriaNotifications();
83         }
84
85         private void initGUI() {
86                 PizzeriaGUI gui = new PizzeriaGUI();
87                 SwingUtilities.invokeLater(gui);
88         }
89
90         class PizzeriaGUI implements Runnable {
91                 @Override
92                 public void run() {
93                         PizzeriaFrame frame = new PizzeriaFrame();
94                         frame.setOnTablesCreatedHandler(new TablesCreatedHandler() {
95
96                                 @Override
97                                 public void freeTablesCreated(List<Table> tables) {
98                                          if(!Util.useJMS) {
99                                                  xvsm.sendTablesToSpace(tables);
100                                          }
101                                 }
102
103
104                         });
105                         frame.start();
106                         frame.pack();
107                         frame.setVisible(true);
108                 }
109         }
110
111         private void createModels() {
112                 ordersModel = new OrdersOverviewModel();
113                 groupModel = new GroupsOverviewModel();
114                 tablesModel = new TablesOverviewModel();
115                 waitersModel = new WaitersOfOrderModel();
116                 pizzasModel = new PizzasOfOrderModel();
117         }
118         
119         public static PizzeriaAgent getInstance() {
120                 return pizzeriaAgent;
121         }
122
123         public OrdersOverviewModel getOrdersModel() {
124                 return ordersModel;
125         }
126
127         public GroupsOverviewModel getGroupModel() {
128                 return groupModel;
129         }
130
131         public TablesOverviewModel getTablesModel() {
132                 return tablesModel;
133         }
134
135         public WaitersOfOrderModel getWaitersModel() {
136                 return waitersModel;
137         }
138
139         public PizzasOfOrderModel getPizzasModel() {
140                 return pizzasModel;
141         }
142         
143         public interface TablesCreatedHandler {
144                 public void freeTablesCreated(List<Table> tables);
145         }
146
147 }