1 package at.ac.tuwien.sbc.valesriegler.pizzeria;
3 import java.util.ArrayList;
4 import java.util.Arrays;
7 import javax.management.Notification;
8 import javax.management.NotificationListener;
9 import javax.swing.SwingUtilities;
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;
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;
32 * The Main class of the Pizzeria compoment.
34 * Start the communication and the Pizzeria GUI
36 * @author Gregor Riegler <gregor DOT riegler AT gmail DOT com>
39 public class PizzeriaAgent implements NotificationListener {
40 private static final Logger log = LoggerFactory.getLogger(PizzeriaAgent.class);
42 private static final String USAGE = "Usage: java PizzeriaAgent XVSM|JMS";
44 private OrdersOverviewModel ordersModel;
45 private GroupsOverviewModel groupModel;
46 private TablesOverviewModel tablesModel;
47 private WaitersOfOrderModel waitersModel;
48 private PizzasOfOrderModel pizzasModel;
50 private XVSMConnector xvsm;
52 public static void main(String[] args) {
53 if(args.length != 1) {
54 throw new IllegalArgumentException(USAGE);
58 PizzeriaAgent pizzeriaAgent = new PizzeriaAgent();
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);
68 private void initJMS() {
69 // do what you have to do
72 private void initXVSM() {
73 xvsm = new XVSMConnector();
74 xvsm.initSpaceCommunication();
77 private void initGUI() {
78 PizzeriaGUI gui = new PizzeriaGUI();
79 SwingUtilities.invokeLater(gui);
82 class PizzeriaGUI implements Runnable {
85 PizzeriaFrame frame = new PizzeriaFrame(ordersModel, groupModel, tablesModel, waitersModel, pizzasModel);
86 frame.setOnTablesCreatedHandler(new TablesCreatedHandler() {
89 public void freeTablesCreated(List<DEP_Table> tables) {
90 xvsm.sendTablesToSpace(tables);
96 frame.setVisible(true);
100 private void createModels() {
101 ordersModel = new OrdersOverviewModel();
102 groupModel = new GroupsOverviewModel();
103 tablesModel = new TablesOverviewModel();
104 waitersModel = new WaitersOfOrderModel();
105 pizzasModel = new PizzasOfOrderModel();
108 public interface TablesCreatedHandler {
109 public void freeTablesCreated(List<DEP_Table> tables);
113 public void handleNotification(Notification notification, Object handback) {
114 // handle space notifications