]> git.somenet.org - pub/jan/sbc.git/blob - src/main/java/at/ac/tuwien/sbc/valesriegler/pizzeria/PizzeriaAgent.java
Implement handleWaitingGroup+handleOrderRequest for XVSM waiter
[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.ArrayList;
4 import java.util.Arrays;
5 import java.util.List;
6
7 import javax.management.Notification;
8 import javax.management.NotificationListener;
9 import javax.swing.SwingUtilities;
10
11 import org.mozartspaces.capi3.AnyCoordinator;
12 import org.mozartspaces.capi3.Coordinator;
13 import org.mozartspaces.core.Capi;
14 import org.mozartspaces.core.ContainerReference;
15 import org.mozartspaces.core.DefaultMzsCore;
16 import org.mozartspaces.core.Entry;
17 import org.mozartspaces.core.MzsCore;
18 import org.mozartspaces.core.MzsCoreException;
19 import org.slf4j.Logger;
20 import org.slf4j.LoggerFactory;
21
22 import at.ac.tuwien.sbc.valesriegler.common.SpaceUtil;
23 import at.ac.tuwien.sbc.valesriegler.pizzeria.gui.PizzeriaFrame;
24 import at.ac.tuwien.sbc.valesriegler.pizzeria.gui.DEP_Table;
25 import at.ac.tuwien.sbc.valesriegler.pizzeria.gui.tablemodels.GroupsOverviewModel;
26 import at.ac.tuwien.sbc.valesriegler.pizzeria.gui.tablemodels.OrdersOverviewModel;
27 import at.ac.tuwien.sbc.valesriegler.pizzeria.gui.tablemodels.PizzasOfOrderModel;
28 import at.ac.tuwien.sbc.valesriegler.pizzeria.gui.tablemodels.TablesOverviewModel;
29 import at.ac.tuwien.sbc.valesriegler.pizzeria.gui.tablemodels.WaitersOfOrderModel;
30 import at.ac.tuwien.sbc.valesriegler.xvsm.XVSMConnector;
31 /**
32  * The Main class of the Pizzeria compoment.
33  * <p />
34  * Start the communication and the Pizzeria GUI
35  * 
36  * @author Gregor Riegler <gregor DOT riegler AT gmail DOT com>
37  *
38  */
39 public class PizzeriaAgent implements NotificationListener {
40         private static final Logger log = LoggerFactory.getLogger(PizzeriaAgent.class);
41
42         private static final String USAGE = "Usage: java PizzeriaAgent XVSM|JMS";
43
44         private OrdersOverviewModel ordersModel;
45         private GroupsOverviewModel groupModel;
46         private TablesOverviewModel tablesModel;
47         private WaitersOfOrderModel waitersModel;
48         private PizzasOfOrderModel pizzasModel;
49
50         private XVSMConnector xvsm;
51
52         public static void main(String[] args) {
53                 if(args.length != 1) {
54                         throw new IllegalArgumentException(USAGE);
55                 } else {
56                         String mom = args[0];
57                         log.info(mom);
58                         PizzeriaAgent pizzeriaAgent = new PizzeriaAgent();
59                         switch(mom) {
60                         case "XVSM" : pizzeriaAgent.createModels(); pizzeriaAgent.initXVSM(); pizzeriaAgent.initGUI(); break;
61                         case "JMS" : pizzeriaAgent.createModels(); pizzeriaAgent.initJMS(); pizzeriaAgent.initGUI(); break;
62                         default : throw new IllegalArgumentException(USAGE);
63                         }
64                         
65                 }
66         }
67
68         private void initJMS() {
69                 // do what you have to do
70         }
71
72         private void initXVSM() {
73                         xvsm = new XVSMConnector();
74                         xvsm.initSpaceCommunication();
75         }
76
77         private void initGUI() {
78                 PizzeriaGUI gui = new PizzeriaGUI();
79                 SwingUtilities.invokeLater(gui);
80         }
81         
82         class PizzeriaGUI implements Runnable {
83                 @Override
84                 public void run() {
85                         PizzeriaFrame frame = new PizzeriaFrame(ordersModel, groupModel, tablesModel, waitersModel, pizzasModel);
86                         frame.setOnTablesCreatedHandler(new TablesCreatedHandler() {
87
88                                 @Override
89                                 public void freeTablesCreated(List<DEP_Table> tables) {
90                                         xvsm.sendTablesToSpace(tables);
91                                 }
92                                 
93                         });
94                         frame.start();
95                         frame.pack();
96                         frame.setVisible(true);
97                 }
98         }
99         
100         private void createModels() {
101                 ordersModel = new OrdersOverviewModel();
102                 groupModel = new GroupsOverviewModel();
103                 tablesModel = new TablesOverviewModel();
104                 waitersModel = new WaitersOfOrderModel();
105                 pizzasModel = new PizzasOfOrderModel();
106         }
107         
108         public interface TablesCreatedHandler {
109                 public void freeTablesCreated(List<DEP_Table> tables);
110         }
111
112         @Override
113         public void handleNotification(Notification notification, Object handback) {
114                 // handle space notifications
115         }
116 }