]> git.somenet.org - pub/jan/sbc.git/blob - src/main/java/at/ac/tuwien/sbc/valesriegler/pizzeria/PizzeriaAgent.java
großer Brocken an GruppenGui-Änderungen kombiniert mit ersten Teil des Bestellworkflows.
[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.swing.SwingUtilities;
8
9 import org.mozartspaces.capi3.AnyCoordinator;
10 import org.mozartspaces.capi3.Coordinator;
11 import org.mozartspaces.core.Capi;
12 import org.mozartspaces.core.ContainerReference;
13 import org.mozartspaces.core.DefaultMzsCore;
14 import org.mozartspaces.core.Entry;
15 import org.mozartspaces.core.MzsCore;
16 import org.mozartspaces.core.MzsCoreException;
17 import org.slf4j.Logger;
18 import org.slf4j.LoggerFactory;
19
20 import at.ac.tuwien.sbc.valesriegler.common.SpaceUtil;
21 import at.ac.tuwien.sbc.valesriegler.pizzeria.gui.PizzeriaFrame;
22 import at.ac.tuwien.sbc.valesriegler.pizzeria.gui.DEP_Table;
23 import at.ac.tuwien.sbc.valesriegler.pizzeria.gui.tablemodels.GroupsOverviewModel;
24 import at.ac.tuwien.sbc.valesriegler.pizzeria.gui.tablemodels.OrdersOverviewModel;
25 import at.ac.tuwien.sbc.valesriegler.pizzeria.gui.tablemodels.PizzasOfOrderModel;
26 import at.ac.tuwien.sbc.valesriegler.pizzeria.gui.tablemodels.TablesOverviewModel;
27 import at.ac.tuwien.sbc.valesriegler.pizzeria.gui.tablemodels.WaitersOfOrderModel;
28 import at.ac.tuwien.sbc.valesriegler.xvsm.XVSMConnector;
29 /**
30  * The Main class of the Pizzeria compoment.
31  * <p />
32  * Start the communication and the Pizzeria GUI
33  * 
34  * @author Gregor Riegler <gregor DOT riegler AT gmail DOT com>
35  *
36  */
37 public class PizzeriaAgent {
38         private static final Logger log = LoggerFactory.getLogger(PizzeriaAgent.class);
39
40         private static final String USAGE = "Usage: java PizzeriaAgent XVSM|JMS";
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 = args[0];
55                         log.info(mom);
56                         PizzeriaAgent pizzeriaAgent = new PizzeriaAgent();
57                         switch(mom) {
58                         case "XVSM" : pizzeriaAgent.createModels(); pizzeriaAgent.initXVSM(); pizzeriaAgent.initGUI(); break;
59                         case "JMS" : pizzeriaAgent.createModels(); pizzeriaAgent.initJMS(); pizzeriaAgent.initGUI(); break;
60                         default : throw new IllegalArgumentException(USAGE);
61                         }
62                         
63                 }
64         }
65
66         private void initJMS() {
67                 // do what you have to do
68         }
69
70         private void initXVSM() {
71                 try {
72                         xvsm = new XVSMConnector();
73                         xvsm.initSpaceCommunication();
74                         
75                 } catch (MzsCoreException e) {
76                         log.error(e.getMessage());
77                         log.error("The Pizzeria has no Space connection! Have you started the Space Server?");
78                         System.exit(1);
79                 }
80         }
81
82         private void initGUI() {
83                 PizzeriaGUI gui = new PizzeriaGUI();
84                 SwingUtilities.invokeLater(gui);
85         }
86         
87         class PizzeriaGUI implements Runnable {
88                 @Override
89                 public void run() {
90                         PizzeriaFrame frame = new PizzeriaFrame(ordersModel, groupModel, tablesModel, waitersModel, pizzasModel);
91                         frame.setOnTablesCreatedHandler(new TablesCreatedHandler() {
92
93                                 @Override
94                                 public void freeTablesCreated(List<DEP_Table> tables) {
95                                         xvsm.sendFreeTablesToSpace(tables);
96                                 }
97                                 
98                         });
99                         frame.start();
100                         frame.pack();
101                         frame.setVisible(true);
102                 }
103         }
104         
105         private void createModels() {
106                 ordersModel = new OrdersOverviewModel();
107                 groupModel = new GroupsOverviewModel();
108                 tablesModel = new TablesOverviewModel();
109                 waitersModel = new WaitersOfOrderModel();
110                 pizzasModel = new PizzasOfOrderModel();
111         }
112         
113         public interface TablesCreatedHandler {
114                 public void freeTablesCreated(List<DEP_Table> tables);
115         }
116 }