1 package at.ac.tuwien.sbc.valesriegler.pizzeria;
3 import java.io.Serializable;
4 import java.util.ArrayList;
7 import javax.swing.SwingUtilities;
9 import org.mozartspaces.core.Entry;
10 import org.mozartspaces.core.MzsConstants.RequestTimeout;
11 import org.mozartspaces.notifications.Notification;
12 import org.mozartspaces.notifications.NotificationListener;
13 import org.mozartspaces.notifications.Operation;
14 import org.slf4j.Logger;
15 import org.slf4j.LoggerFactory;
17 import at.ac.tuwien.sbc.valesriegler.common.Util;
18 import at.ac.tuwien.sbc.valesriegler.pizzeria.gui.PizzeriaFrame;
19 import at.ac.tuwien.sbc.valesriegler.pizzeria.gui.tablemodels.GroupsOverviewModel;
20 import at.ac.tuwien.sbc.valesriegler.pizzeria.gui.tablemodels.OrdersOverviewModel;
21 import at.ac.tuwien.sbc.valesriegler.pizzeria.gui.tablemodels.PizzasOfOrderModel;
22 import at.ac.tuwien.sbc.valesriegler.pizzeria.gui.tablemodels.TablesOverviewModel;
23 import at.ac.tuwien.sbc.valesriegler.pizzeria.gui.tablemodels.WaitersOfOrderModel;
24 import at.ac.tuwien.sbc.valesriegler.types.GroupData;
25 import at.ac.tuwien.sbc.valesriegler.types.Table;
26 import at.ac.tuwien.sbc.valesriegler.xvsm.PizzeriaAgentXVSM;
29 * The Main class of the Pizzeria compoment.
31 * Start the communication and the Pizzeria GUI
33 * @author Gregor Riegler <gregor DOT riegler AT gmail DOT com>
36 public class PizzeriaAgent {
37 private static final Logger log = LoggerFactory.getLogger(PizzeriaAgent.class);
39 private static final String USAGE = "Usage: java PizzeriaAgent XVSM|JMS";
41 private static PizzeriaAgent pizzeriaAgent;
43 private OrdersOverviewModel ordersModel;
44 private GroupsOverviewModel groupModel;
45 private TablesOverviewModel tablesModel;
46 private WaitersOfOrderModel waitersModel;
47 private PizzasOfOrderModel pizzasModel;
49 private PizzeriaAgentXVSM xvsm;
51 public static void main(String[] args) {// TODO: remove hardcoding of JMS.
52 // if (args.length != 1) {
53 // throw new IllegalArgumentException(USAGE);
55 // String mom = "XVSM";// args[0];
56 String mom = Util.useJMS ? "JMS" : "XVSM";
58 pizzeriaAgent = new PizzeriaAgent();
61 pizzeriaAgent.createModels();
62 pizzeriaAgent.initXVSM();
63 pizzeriaAgent.initGUI();
66 pizzeriaAgent.createModels();
67 pizzeriaAgent.initJMS();
68 pizzeriaAgent.initGUI();
71 throw new IllegalArgumentException(USAGE);
77 private void initJMS() {
78 // do what you have to do
81 private void initXVSM() {
82 xvsm = new PizzeriaAgentXVSM();
84 xvsm.listenForFreeTables();
85 xvsm.listenForTakenOrders();
86 xvsm.listenForWaitingGroups();
87 xvsm.listenForPizzasInPreparation();
88 xvsm.listenForDeliveredOrders();
89 xvsm.listenForPreparedPizzas();
90 xvsm.listenForPayment();
91 xvsm.listenForOccupiedTables();
94 private void initGUI() {
95 PizzeriaGUI gui = new PizzeriaGUI();
96 SwingUtilities.invokeLater(gui);
99 class PizzeriaGUI implements Runnable {
102 PizzeriaFrame frame = new PizzeriaFrame();
103 frame.setOnTablesCreatedHandler(new TablesCreatedHandler() {
106 public void freeTablesCreated(List<Table> tables) {
108 xvsm.sendFreeTablesToContainer(tables);
114 frame.setVisible(true);
118 private void createModels() {
119 ordersModel = new OrdersOverviewModel();
120 groupModel = new GroupsOverviewModel();
121 tablesModel = new TablesOverviewModel();
122 waitersModel = new WaitersOfOrderModel();
123 pizzasModel = new PizzasOfOrderModel();
126 public static PizzeriaAgent getInstance() {
127 return pizzeriaAgent;
130 public OrdersOverviewModel getOrdersModel() {
134 public GroupsOverviewModel getGroupModel() {
138 public TablesOverviewModel getTablesModel() {
142 public WaitersOfOrderModel getWaitersModel() {
146 public PizzasOfOrderModel getPizzasModel() {
150 public interface TablesCreatedHandler {
151 public void freeTablesCreated(List<Table> tables);