1 package at.ac.tuwien.sbc.valesriegler.waiter.jms;
3 import javax.jms.Connection;
4 import javax.jms.MessageConsumer;
5 import javax.jms.Session;
7 import org.apache.activemq.ActiveMQConnectionFactory;
8 import org.slf4j.Logger;
9 import org.slf4j.LoggerFactory;
11 import at.ac.tuwien.sbc.valesriegler.common.HasId;
12 import at.ac.tuwien.sbc.valesriegler.common.Util;
13 import at.ac.tuwien.sbc.valesriegler.jms.nac.JMSNAC;
14 import at.ac.tuwien.sbc.valesriegler.waiter.jms.messageListeners.CookedOrders;
15 import at.ac.tuwien.sbc.valesriegler.waiter.jms.messageListeners.WantADelivery;
16 import at.ac.tuwien.sbc.valesriegler.waiter.jms.messageListeners.WantToOrder;
17 import at.ac.tuwien.sbc.valesriegler.waiter.jms.messageListeners.WantToPay;
18 import at.ac.tuwien.sbc.valesriegler.waiter.jms.messageListeners.WantToSitAtTable;
21 * A waiter is a person who does all the stuff and gets lousy tips in return.
22 * TODO: might want to split this class into multiple, to allow for abstraction.
27 public class JMSWaiter implements HasId {
28 private static final Logger log = LoggerFactory.getLogger(JMSWaiter.class);
29 private final String CONNECTSTRING;
30 private Connection connection;
32 public String getCONNECTSTRING() {
37 private JMSNAC jmsnac;
39 public JMSWaiter(String jmsURL, int id) {
40 CONNECTSTRING = jmsURL;
42 log.info("I AM A WAITER WITH ID {}", id);
44 WaiterJMSNACMsgListener tmp = new WaiterJMSNACMsgListener();
45 jmsnac = new JMSNAC(tmp);
47 if (!Util.runSimulation) {
52 public void initJMS() {
54 // Connecting to the Broker and to the output queue
55 ActiveMQConnectionFactory connectionFactory = new ActiveMQConnectionFactory(CONNECTSTRING);
56 connection = connectionFactory.createConnection();
59 Session sessWantToSit = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
60 MessageConsumer consWantToSit = sessWantToSit.createConsumer(sessWantToSit.createQueue("WantToSitAtTable"));
61 consWantToSit.setMessageListener(new WantToSitAtTable(this));
63 Session sessWantToOrder = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
64 MessageConsumer consWantToOrder = sessWantToOrder.createConsumer(sessWantToOrder.createQueue("WantToOrder"));
65 consWantToOrder.setMessageListener(new WantToOrder(this));
67 Session sessCookedOrders = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
68 MessageConsumer consCookedOrders = sessCookedOrders.createConsumer(sessCookedOrders.createQueue("CookedOrders"));
69 consCookedOrders.setMessageListener(new CookedOrders(this));
71 Session sessWantToPay = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
72 MessageConsumer consWantToPay = sessWantToPay.createConsumer(sessWantToPay.createQueue("WantToPay"));
73 consWantToPay.setMessageListener(new WantToPay(this));
75 Session sessWantADelivery = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
76 MessageConsumer consWantADelivery = sessWantADelivery.createConsumer(sessWantADelivery
77 .createQueue("WantADelivery"));
78 consWantADelivery.setMessageListener(new WantADelivery(this));
80 } catch (Exception e) {
81 log.error("Caught: ", e);
86 public String toString() {
87 return "Waiter [id=" + id + "]";
95 public Connection getConnection() {
99 public void setConnection(Connection connection) {
100 this.connection = connection;