1 package at.ac.tuwien.sbc.valesriegler.pizzeria;
3 import java.util.ArrayList;
4 import java.util.Arrays;
7 import javax.swing.SwingUtilities;
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;
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;
30 * The Main class of the Pizzeria compoment.
32 * Start the communication and the Pizzeria GUI
34 * @author Gregor Riegler <gregor DOT riegler AT gmail DOT com>
37 public class PizzeriaAgent {
38 private static final Logger log = LoggerFactory.getLogger(PizzeriaAgent.class);
40 private static final String USAGE = "Usage: java PizzeriaAgent XVSM|JMS";
42 private OrdersOverviewModel ordersModel;
43 private GroupsOverviewModel groupModel;
44 private TablesOverviewModel tablesModel;
45 private WaitersOfOrderModel waitersModel;
46 private PizzasOfOrderModel pizzasModel;
48 private XVSMConnector xvsm;
50 public static void main(String[] args) {
51 if(args.length != 1) {
52 throw new IllegalArgumentException(USAGE);
56 PizzeriaAgent pizzeriaAgent = new PizzeriaAgent();
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);
66 private void initJMS() {
67 // do what you have to do
70 private void initXVSM() {
72 xvsm = new XVSMConnector();
73 xvsm.initSpaceCommunication();
75 } catch (MzsCoreException e) {
76 log.error(e.getMessage());
77 log.error("The Pizzeria has no Space connection! Have you started the Space Server?");
82 private void initGUI() {
83 PizzeriaGUI gui = new PizzeriaGUI();
84 SwingUtilities.invokeLater(gui);
87 class PizzeriaGUI implements Runnable {
90 PizzeriaFrame frame = new PizzeriaFrame(ordersModel, groupModel, tablesModel, waitersModel, pizzasModel);
91 frame.setOnTablesCreatedHandler(new TablesCreatedHandler() {
94 public void freeTablesCreated(List<DEP_Table> tables) {
95 xvsm.sendFreeTablesToSpace(tables);
101 frame.setVisible(true);
105 private void createModels() {
106 ordersModel = new OrdersOverviewModel();
107 groupModel = new GroupsOverviewModel();
108 tablesModel = new TablesOverviewModel();
109 waitersModel = new WaitersOfOrderModel();
110 pizzasModel = new PizzasOfOrderModel();
113 public interface TablesCreatedHandler {
114 public void freeTablesCreated(List<DEP_Table> tables);