]> git.somenet.org - pub/jan/sbc.git/blob - src/main/java/at/ac/tuwien/sbc/valesriegler/waiter/jms/JMSWaiter.java
[JMS] NEW Workflow: cook now gets the order.
[pub/jan/sbc.git] / src / main / java / at / ac / tuwien / sbc / valesriegler / waiter / jms / JMSWaiter.java
1 package at.ac.tuwien.sbc.valesriegler.waiter.jms;
2
3 import javax.jms.Connection;
4 import javax.jms.MessageConsumer;
5 import javax.jms.Session;
6
7 import org.apache.activemq.ActiveMQConnectionFactory;
8 import org.slf4j.Logger;
9 import org.slf4j.LoggerFactory;
10
11 import at.ac.tuwien.sbc.valesriegler.common.HasId;
12 import at.ac.tuwien.sbc.valesriegler.waiter.jms.messageListeners.CookedOrders;
13 import at.ac.tuwien.sbc.valesriegler.waiter.jms.messageListeners.WantADelivery;
14 import at.ac.tuwien.sbc.valesriegler.waiter.jms.messageListeners.WantToOrder;
15 import at.ac.tuwien.sbc.valesriegler.waiter.jms.messageListeners.WantToPay;
16 import at.ac.tuwien.sbc.valesriegler.waiter.jms.messageListeners.WantToSitAtTable;
17
18 /**
19  * A waiter is a person who does all the stuff and gets lousy tips in return.
20  * TODO: might want to split this class into multiple, to allow for abstraction.
21  * 
22  * @author jan
23  * 
24  */
25 public class JMSWaiter implements HasId {
26         private static final Logger log = LoggerFactory.getLogger(JMSWaiter.class);
27         private final String CONNECTSTRING;
28         public String getCONNECTSTRING() {
29                 return CONNECTSTRING;
30         }
31
32         final private int id;
33
34         public JMSWaiter(String jmsURL, int id) {
35                 CONNECTSTRING = jmsURL;
36                 this.id = id;
37                 log.info("I AM A WAITER WITH ID {}", id);
38
39                 try {
40                         // Connecting to the Broker and to the output queue
41                         ActiveMQConnectionFactory connectionFactory = new ActiveMQConnectionFactory(CONNECTSTRING);
42                         Connection connection = connectionFactory.createConnection();
43                         connection.start();
44
45                         Session sessWantToSit = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
46                         MessageConsumer consWantToSit = sessWantToSit.createConsumer(sessWantToSit.createQueue("WantToSitAtTable"));
47                         consWantToSit.setMessageListener(new WantToSitAtTable(this));
48
49                         Session sessWantToOrder = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
50                         MessageConsumer consWantToOrder = sessWantToOrder.createConsumer(sessWantToOrder.createQueue("WantToOrder"));
51                         consWantToOrder.setMessageListener(new WantToOrder(this));
52
53                         Session sessCookedOrders = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
54                         MessageConsumer consCookedOrders = sessCookedOrders.createConsumer(sessCookedOrders.createQueue("CookedOrders"));
55                         consCookedOrders.setMessageListener(new CookedOrders(this));
56
57                         Session sessWantToPay = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
58                         MessageConsumer consWantToPay = sessWantToPay.createConsumer(sessWantToPay.createQueue("WantToPay"));
59                         consWantToPay.setMessageListener(new WantToPay(this));
60
61                         Session sessWantADelivery = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
62                         MessageConsumer consWantADelivery = sessWantADelivery.createConsumer(sessWantADelivery
63                                         .createQueue("WantADelivery"));
64                         consWantADelivery.setMessageListener(new WantADelivery(this));
65
66                 } catch (Exception e) {
67                         log.error("Caught: ", e);
68                 }
69         }
70
71         @Override
72         public String toString() {
73                 return "Waiter [id=" + id + "]";
74         }
75
76         @Override
77         public int getId() {
78                 return id;
79         }
80 }