1 package at.ac.tuwien.sbc.valesriegler.pizzeria;
5 import javax.swing.SwingUtilities;
7 import at.ac.tuwien.sbc.valesriegler.pizzeria.gui.tablemodels.*;
8 import org.slf4j.Logger;
9 import org.slf4j.LoggerFactory;
11 import at.ac.tuwien.sbc.valesriegler.common.Util;
12 import at.ac.tuwien.sbc.valesriegler.pizzeria.actions.TableNew;
13 import at.ac.tuwien.sbc.valesriegler.pizzeria.gui.PizzeriaFrame;
14 import at.ac.tuwien.sbc.valesriegler.pizzeria.jms.JMSPizzeriaConnector;
15 import at.ac.tuwien.sbc.valesriegler.types.Table;
16 import at.ac.tuwien.sbc.valesriegler.xvsm.PizzeriaAgentXVSM;
19 * The Main class of the Pizzeria compoment.
21 * Start the communication and the Pizzeria GUI
23 * @author Gregor Riegler <gregor DOT riegler AT gmail DOT com>
26 public class PizzeriaAgent {
27 private static final String USAGE = "This application needs 2 parameters: <\"XVSM\"|\"JMS\"> <JMS-Server-Identifier|XVSM-Space-Identifier>";
28 private static final Logger log = LoggerFactory.getLogger(PizzeriaAgent.class);
30 private static PizzeriaAgent pizzeriaAgent;
32 private OrdersOverviewModel ordersModel;
33 private GroupsOverviewModel groupModel;
34 private TablesOverviewModel tablesModel;
35 private WaitersOfOrderModel waitersModel;
36 private PizzasOfOrderModel pizzasOfOrderModel;
37 private DeliveryDetailsModel deliveryDetailsModel;
38 private PizzasOfOrderModel pizzasOfDeliveryModel;
39 private DeliveryOrdersModel deliveryOrdersModel;
41 private PizzeriaAgentXVSM xvsm;
42 private JMSPizzeriaConnector jmspc;
44 public static void main(String[] args) {
45 if (args.length != 2) {
46 throw new IllegalArgumentException(USAGE);
49 log.info("Middleware: " + mw);
50 pizzeriaAgent = new PizzeriaAgent();
53 pizzeriaAgent.createModels();
54 pizzeriaAgent.initXVSM(args[1]);
55 pizzeriaAgent.initGUI();
59 pizzeriaAgent.createModels();
60 pizzeriaAgent.initJMS();
61 pizzeriaAgent.initGUI();
65 throw new IllegalArgumentException(USAGE);
69 private void initJMS() {
70 jmspc = new JMSPizzeriaConnector();
74 private void initXVSM(String arg) {
77 port = Integer.parseInt(arg);
78 } catch (NumberFormatException e) {
79 log.error("The XVSM-Space-Identifier needs to be an integer port!");
83 xvsm = new PizzeriaAgentXVSM(port);
84 xvsm.initializeOrderId();
85 xvsm.notifyGroupAgent();
87 xvsm.listenForFreeTables();
88 xvsm.listenForTakenOrders();
89 xvsm.listenForWaitingGroups();
90 xvsm.listenForPizzasInPreparation();
91 xvsm.listenForDeliveredOrders();
92 xvsm.listenForPreparedPizzas();
93 xvsm.listenForPayment();
94 xvsm.listenForOccupiedTables();
97 private void initGUI() {
98 PizzeriaGUI gui = new PizzeriaGUI();
99 SwingUtilities.invokeLater(gui);
102 class PizzeriaGUI implements Runnable {
105 PizzeriaFrame frame = new PizzeriaFrame();
106 frame.setOnTablesCreatedHandler(new TablesCreatedHandler() {
109 public void freeTablesCreated(List<Table> tables) {
111 xvsm.sendFreeTablesToContainer(tables);
113 for (Table t : tables) {
114 jmspc.send(new TableNew(t));
121 frame.setVisible(true);
125 private void createModels() {
126 ordersModel = new OrdersOverviewModel();
127 groupModel = new GroupsOverviewModel();
128 tablesModel = new TablesOverviewModel();
129 waitersModel = new WaitersOfOrderModel();
130 pizzasOfOrderModel = new PizzasOfOrderModel();
131 deliveryOrdersModel = new DeliveryOrdersModel();
132 deliveryDetailsModel = new DeliveryDetailsModel();
133 pizzasOfDeliveryModel = new PizzasOfOrderModel();
136 public static PizzeriaAgent getInstance() {
137 return pizzeriaAgent;
140 public OrdersOverviewModel getOrdersModel() {
144 public DeliveryOrdersModel getDeliveryOrdersModel() {
145 return deliveryOrdersModel;
148 public DeliveryDetailsModel getDeliveryDetailsModel() {
149 return deliveryDetailsModel;
152 public PizzasOfOrderModel getPizzasOfDeliveryModel() {
153 return pizzasOfDeliveryModel;
156 public GroupsOverviewModel getGroupModel() {
160 public TablesOverviewModel getTablesModel() {
164 public WaitersOfOrderModel getWaitersModel() {
168 public PizzasOfOrderModel getPizzasOfOrderModel() {
169 return pizzasOfOrderModel;
172 public interface TablesCreatedHandler {
173 public void freeTablesCreated(List<Table> tables);