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