001    package org.cocome.tradingsystem.testdriver;
002    
003    import javax.jms.JMSException;
004    import javax.jms.Session;
005    import javax.jms.Topic;
006    import javax.jms.TopicConnection;
007    import javax.jms.TopicConnectionFactory;
008    import javax.jms.TopicPublisher;
009    import javax.jms.TopicSession;
010    import javax.naming.Context;
011    import javax.naming.InitialContext;
012    import javax.naming.NamingException;
013    
014    import org.cocome.tradingsystem.systests.interfaces.IBarcodeScanner;
015    import org.cocome.tradingsystem.systests.interfaces.ICardReader;
016    import org.cocome.tradingsystem.systests.interfaces.ICashBox;
017    import org.cocome.tradingsystem.systests.interfaces.ICashDesk;
018    import org.cocome.tradingsystem.systests.interfaces.ILightsDisplay;
019    import org.cocome.tradingsystem.systests.interfaces.IPrinter;
020    import org.cocome.tradingsystem.systests.interfaces.IUserDisplay;
021    
022    /**
023     * The glue code for one cash desk.
024     * 
025     * @author Benjamin Hummel
026     * @author $Author: hummel $
027     * @version $Rev: 63 $
028     * @levd.rating GREEN Rev: 63
029     */
030    public class CashDesk implements ICashDesk {
031    
032            /** The barcode scanner glue. */
033            private final IBarcodeScanner barcodeScanner;
034    
035            /** The card reader glue. */
036            private final ICardReader cardReader;
037    
038            /** The cashbox glue. */
039            private final ICashBox cashBox;
040    
041            /** The light display glue. */
042            private final ILightsDisplay lightsDisplay;
043    
044            /** The printer glue. */
045            private final IPrinter printer;
046    
047            /** The user display glue. */
048            private final IUserDisplay userDisplay;
049    
050            /** Created a new cash desk. */
051            public CashDesk(StorePC storePC, int index) throws NamingException,
052                            JMSException {
053    
054                    String topicName = "chan" + storePC.getIndex() + "" + index;
055    
056                    Context jndiContext = new InitialContext();
057                    TopicConnectionFactory channelConnectionFactory = (javax.jms.TopicConnectionFactory) jndiContext
058                                    .lookup("ChannelConnectionFactory");
059                    TopicConnection topicConnection = channelConnectionFactory
060                                    .createTopicConnection();
061                    TopicSession session = topicConnection.createTopicSession(false,
062                                    Session.AUTO_ACKNOWLEDGE);
063                    Topic topic = (javax.jms.Topic) jndiContext.lookup(topicName);
064    
065                    TopicPublisher publisher = session.createPublisher(topic);
066    
067                    barcodeScanner = new BarcodeScanner(publisher, session);
068                    cardReader = new CardReader(publisher, session);
069                    cashBox = new CashBox(publisher, session, session
070                                    .createSubscriber(topic));
071                    lightsDisplay = new LightsDisplay(session.createSubscriber(topic));
072                    printer = new Printer(session.createSubscriber(topic));
073                    userDisplay = new UserDisplay(session.createSubscriber(topic));
074    
075                    topicConnection.start();
076            }
077    
078            /** {@inheritDoc} */
079            public IBarcodeScanner getBarcodeScanner() {
080                    return barcodeScanner;
081            }
082    
083            /** {@inheritDoc} */
084            public ICardReader getCardReader() {
085                    return cardReader;
086            }
087    
088            /** {@inheritDoc} */
089            public ICashBox getCashBox() {
090                    return cashBox;
091            }
092    
093            /** {@inheritDoc} */
094            public ILightsDisplay getLightsDisplay() {
095                    return lightsDisplay;
096            }
097    
098            /** {@inheritDoc} */
099            public IPrinter getPrinter() {
100                    return printer;
101            }
102    
103            /** {@inheritDoc} */
104            public IUserDisplay getUserDisplay() {
105                    return userDisplay;
106            }
107            
108            /** {@inheritDoc} */
109            public int getNumberOfExpressSalesForExpressModeSwitch() {
110                    return 1;
111            }
112    
113    }