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.gui.PizzeriaFrame;
12 import at.ac.tuwien.sbc.valesriegler.pizzeria.gui.tablemodels.GroupsOverviewModel;
13 import at.ac.tuwien.sbc.valesriegler.pizzeria.gui.tablemodels.OrdersOverviewModel;
14 import at.ac.tuwien.sbc.valesriegler.pizzeria.gui.tablemodels.PizzasOfOrderModel;
15 import at.ac.tuwien.sbc.valesriegler.pizzeria.gui.tablemodels.TablesOverviewModel;
16 import at.ac.tuwien.sbc.valesriegler.pizzeria.gui.tablemodels.WaitersOfOrderModel;
17 import at.ac.tuwien.sbc.valesriegler.types.Table;
18 import at.ac.tuwien.sbc.valesriegler.xvsm.XVSMConnector;
21 * The Main class of the Pizzeria compoment.
23 * Start the communication and the Pizzeria GUI
25 * @author Gregor Riegler <gregor DOT riegler AT gmail DOT com>
28 public class PizzeriaAgent {
29 private static final Logger log = LoggerFactory.getLogger(PizzeriaAgent.class);
31 private static final String USAGE = "Usage: java PizzeriaAgent XVSM|JMS";
33 private static PizzeriaAgent pizzeriaAgent;
38 private OrdersOverviewModel ordersModel;
39 private GroupsOverviewModel groupModel;
40 private TablesOverviewModel tablesModel;
41 private WaitersOfOrderModel waitersModel;
42 private PizzasOfOrderModel pizzasModel;
44 private XVSMConnector xvsm;
46 public static void main(String[] args) {// TODO: remove hardcoding of JMS.
47 // if (args.length != 1) {
48 // throw new IllegalArgumentException(USAGE);
50 // String mom = "XVSM";// args[0];
51 String mom = Util.useJMS ? "JMS" : "XVSM";
53 pizzeriaAgent = new PizzeriaAgent();
56 pizzeriaAgent.createModels();
57 pizzeriaAgent.initXVSM();
58 pizzeriaAgent.initGUI();
61 pizzeriaAgent.createModels();
62 pizzeriaAgent.initJMS();
63 pizzeriaAgent.initGUI();
66 throw new IllegalArgumentException(USAGE);
72 private void initJMS() {
73 // do what you have to do
76 private void initXVSM() {
77 xvsm = new XVSMConnector();
78 xvsm.initSpaceCommunication();
79 xvsm.useTablesContainer();
80 xvsm.useGroupsContainer();
82 xvsm.initPizzeriaNotifications();
85 private void initGUI() {
86 PizzeriaGUI gui = new PizzeriaGUI();
87 SwingUtilities.invokeLater(gui);
90 class PizzeriaGUI implements Runnable {
93 PizzeriaFrame frame = new PizzeriaFrame();
94 frame.setOnTablesCreatedHandler(new TablesCreatedHandler() {
97 public void freeTablesCreated(List<Table> tables) {
99 xvsm.sendTablesToSpace(tables);
107 frame.setVisible(true);
111 private void createModels() {
112 ordersModel = new OrdersOverviewModel();
113 groupModel = new GroupsOverviewModel();
114 tablesModel = new TablesOverviewModel();
115 waitersModel = new WaitersOfOrderModel();
116 pizzasModel = new PizzasOfOrderModel();
119 public static PizzeriaAgent getInstance() {
120 return pizzeriaAgent;
123 public OrdersOverviewModel getOrdersModel() {
127 public GroupsOverviewModel getGroupModel() {
131 public TablesOverviewModel getTablesModel() {
135 public WaitersOfOrderModel getWaitersModel() {
139 public PizzasOfOrderModel getPizzasModel() {
143 public interface TablesCreatedHandler {
144 public void freeTablesCreated(List<Table> tables);