1 package at.ac.tuwien.sbc.valesriegler.pizzeria;
5 import javax.swing.SwingUtilities;
7 import org.slf4j.Logger;
8 import org.slf4j.LoggerFactory;
10 import at.ac.tuwien.sbc.valesriegler.common.Util;
11 import at.ac.tuwien.sbc.valesriegler.pizzeria.actions.TableNew;
12 import at.ac.tuwien.sbc.valesriegler.pizzeria.gui.PizzeriaFrame;
13 import at.ac.tuwien.sbc.valesriegler.pizzeria.gui.tablemodels.GroupsOverviewModel;
14 import at.ac.tuwien.sbc.valesriegler.pizzeria.gui.tablemodels.OrdersOverviewModel;
15 import at.ac.tuwien.sbc.valesriegler.pizzeria.gui.tablemodels.PizzasOfOrderModel;
16 import at.ac.tuwien.sbc.valesriegler.pizzeria.gui.tablemodels.TablesOverviewModel;
17 import at.ac.tuwien.sbc.valesriegler.pizzeria.gui.tablemodels.WaitersOfOrderModel;
18 import at.ac.tuwien.sbc.valesriegler.pizzeria.jms.JMSPizzeriaConnector;
19 import at.ac.tuwien.sbc.valesriegler.types.Table;
20 import at.ac.tuwien.sbc.valesriegler.xvsm.PizzeriaAgentXVSM;
23 * The Main class of the Pizzeria compoment.
25 * Start the communication and the Pizzeria GUI
27 * @author Gregor Riegler <gregor DOT riegler AT gmail DOT com>
30 public class PizzeriaAgent {
31 private static final String USAGE = "This application needs exactly 1 parameter: <\"XVSM\"|\"JMS\">";
32 private static final Logger log = LoggerFactory.getLogger(PizzeriaAgent.class);
34 private static PizzeriaAgent pizzeriaAgent;
36 private OrdersOverviewModel ordersModel;
37 private GroupsOverviewModel groupModel;
38 private TablesOverviewModel tablesModel;
39 private WaitersOfOrderModel waitersModel;
40 private PizzasOfOrderModel pizzasModel;
42 private PizzeriaAgentXVSM xvsm;
43 private JMSPizzeriaConnector jmspc;
45 public static void main(String[] args) {
46 if (args.length != 1) {
47 throw new IllegalArgumentException(USAGE);
50 log.info("Middleware: " + mw);
51 pizzeriaAgent = new PizzeriaAgent();
54 pizzeriaAgent.createModels();
55 pizzeriaAgent.initXVSM();
56 pizzeriaAgent.initGUI();
60 pizzeriaAgent.createModels();
61 pizzeriaAgent.initJMS();
62 pizzeriaAgent.initGUI();
66 throw new IllegalArgumentException(USAGE);
70 private void initJMS() {
71 jmspc = new JMSPizzeriaConnector();
75 private void initXVSM() {
76 xvsm = new PizzeriaAgentXVSM();
77 xvsm.initializeOrderId();
79 xvsm.listenForFreeTables();
80 xvsm.listenForTakenOrders();
81 xvsm.listenForWaitingGroups();
82 xvsm.listenForPizzasInPreparation();
83 xvsm.listenForDeliveredOrders();
84 xvsm.listenForPreparedPizzas();
85 xvsm.listenForPayment();
86 xvsm.listenForOccupiedTables();
89 private void initGUI() {
90 PizzeriaGUI gui = new PizzeriaGUI();
91 SwingUtilities.invokeLater(gui);
94 class PizzeriaGUI implements Runnable {
97 PizzeriaFrame frame = new PizzeriaFrame();
98 frame.setOnTablesCreatedHandler(new TablesCreatedHandler() {
101 public void freeTablesCreated(List<Table> tables) {
103 xvsm.sendFreeTablesToContainer(tables);
105 for (Table t : tables) {
106 jmspc.send(new TableNew(t));
113 frame.setVisible(true);
117 private void createModels() {
118 ordersModel = new OrdersOverviewModel();
119 groupModel = new GroupsOverviewModel();
120 tablesModel = new TablesOverviewModel();
121 waitersModel = new WaitersOfOrderModel();
122 pizzasModel = new PizzasOfOrderModel();
125 public static PizzeriaAgent getInstance() {
126 return pizzeriaAgent;
129 public OrdersOverviewModel getOrdersModel() {
133 public GroupsOverviewModel getGroupModel() {
137 public TablesOverviewModel getTablesModel() {
141 public WaitersOfOrderModel getWaitersModel() {
145 public PizzasOfOrderModel getPizzasModel() {
149 public interface TablesCreatedHandler {
150 public void freeTablesCreated(List<Table> tables);