Skip to content
Snippets Groups Projects
Select Git revision
  • f2218b2d7f944ce76a05a690c7f3be2f73c98ff4
  • master default protected
  • patch-1
  • covid
  • multiple_files
  • fourier_coeff
  • headers
  • revampProbStat
  • v1.0.5
  • v1.0.4
  • v1.0.3
  • v1.0.2
  • v1.0.1
  • v1.0.0
  • untagged-5f91b9934a0d64190e08
  • untagged-185a5c9790d5fd86d5a7
  • untagged-d08ea895726d1693fe75
  • untagged-0a69f730a9edf8f452c2
  • untagged-da21599a55453b349309
  • untagged-c23b343a32e6ba6b41ef
  • untagged-f970fb8b2d5aa387c7e1
  • untagged-82bd404cbb7da09ef714
  • untagged-9d1a8d01c160be73c2d7
  • untagged-a7d0fd1e09f98f58b2e7
  • untagged-67162b0c997bec772454
  • untagged-e4eb7c83718bffcd6dc3
  • untagged-942bdedb39bd9d9a9db2
  • untagged-2023d0fb6c34f29165ee
28 results

cours.tex

Blame
  • Forked from orestis.malaspin / math_tech_info
    Source project has a limited visibility.
    EventService.java 7.18 KiB
    package ch.hepia.event;
    
    import java.util.*;
    
    import javax.jms.Connection;
    import javax.jms.DeliveryMode;
    import javax.jms.Destination;
    import javax.jms.JMSException;
    import javax.jms.Message;
    import javax.jms.MessageConsumer;
    import javax.jms.MessageListener;
    import javax.jms.MessageProducer;
    import javax.jms.ObjectMessage;
    import javax.jms.Session;
    import javax.jms.TextMessage;
    import javax.lang.model.util.ElementScanner6;
    
    import org.apache.activemq.ActiveMQConnectionFactory;
    
    public class EventService{
        private List<Event> events;
        private static int ackMode;
        private static String clientQueueName;
        private boolean transacted = false;
    
        private Optional<Session> maybeSession;
        private Optional<MessageProducer> maybeProducer;
    
        static {
            clientQueueName = "client.messages";
            ackMode = Session.AUTO_ACKNOWLEDGE;
        }
    
        public EventService(final String ipBroker){
            this.events = new ArrayList<>();
            final String brokerUrl = "tcp://" + ipBroker + ":61616";
    
            ActiveMQConnectionFactory connectionFactory = new ActiveMQConnectionFactory(brokerUrl);
            try {
                Connection connection = connectionFactory.createConnection();
                connection.start();
    
                Session session = connection.createSession(transacted, ackMode);
                maybeSession = Optional.of(session);
    
                Destination mainTopic = session.createTopic(clientQueueName);
    
                //Setup a message producer to send message to the queue the server is consuming from
                MessageProducer producer = session.createProducer(mainTopic);
                producer.setDeliveryMode(DeliveryMode.NON_PERSISTENT);
                maybeProducer = Optional.of(producer);
    
                MessageConsumer responseConsumer = session.createConsumer(mainTopic);
    
                responseConsumer.setMessageListener(new MessageListener() {
                    public void onMessage(Message message) {
                        try {
                            if (message instanceof ObjectMessage) {
                                ObjectMessage objMessage = (ObjectMessage) message;
                                Object obj = objMessage.getObject();
                                //------------------------------------------
                                if (obj instanceof EventAccountCreated){
                                    add((EventAccountCreated) obj);
                                }
                                //------------------------------------------
                                if (obj instanceof EventAccountCredited){
                                    add((EventAccountCredited) obj);
                                }
                                //------------------------------------------
                                if (obj instanceof EventAccountDoesntExist){
                                    add((EventAccountDoesntExist) obj);
                                }
                                //------------------------------------------
                                if (obj instanceof EventAddProductQuantity){
                                    add((EventAddProductQuantity) obj);
                                }
                                //------------------------------------------
                                if (obj instanceof EventCreateAccount){
                                    add((EventCreateAccount) obj);
                                }
                                //------------------------------------------
                                if (obj instanceof EventCreateProduct){
                                    add((EventCreateProduct) obj);
                                }
                                //------------------------------------------
                                if (obj instanceof EventCreditAccepted){
                                    add((EventCreditAccepted) obj);
                                }
                                //------------------------------------------
                                if (obj instanceof EventCreditAnAccount){
                                    add((EventCreditAnAccount) obj);
                                }
                                //------------------------------------------
                                if (obj instanceof EventCreditRefused){
                                    add((EventCreditRefused) obj);
                                }
                                //------------------------------------------
                                if (obj instanceof EventCreditWithdrawn){
                                    add((EventCreditWithdrawn) obj);
                                }
                                //------------------------------------------
                                if (obj instanceof EventOrderCancelled){
                                    add((EventOrderCancelled) obj);
                                }
                                //------------------------------------------
                                if (obj instanceof EventOrderCreated){
                                    add((EventOrderCreated) obj);
                                }
                                //------------------------------------------
                                if (obj instanceof EventOrderPlaced){
                                    add((EventOrderPlaced) obj);
                                }
                                //------------------------------------------
                                if (obj instanceof EventOrderPrepared){
                                    add((EventOrderPrepared) obj);
                                }
                                //------------------------------------------
                                if (obj instanceof EventOrderSent){
                                    add((EventOrderSent) obj);
                                }
                                //------------------------------------------
                                if (obj instanceof EventProductCreated){
                                    add((EventProductCreated) obj);
                                }
                                //------------------------------------------
                                if (obj instanceof EventProductDoesntExist){
                                    add((EventProductDoesntExist) obj);
                                }
                                //------------------------------------------
                                if (obj instanceof EventProductOutOfStock){
                                    add((EventProductOutOfStock) obj);
                                }
                                //------------------------------------------
                                if (obj instanceof EventProductQuantityAdded){
                                    add((EventProductQuantityAdded) obj);
                                }
                            }
                        } catch (JMSException e) {
                            e.printStackTrace();
                        }
                    }
                });
    
            } catch (JMSException e) {
                e.printStackTrace();
            }
        }
        
        private void add(Event e){
            this.events.add(e);
        }
    
        public void log(int id){
            this.events.stream().filter(e -> e.id() == id).sorted((e1,e2) -> {
                if(e1.date().before(e2.date()))
                    return -1;
                else if(e1.date().after(e2.date()))
                    return 1;
                else
                    return 0;
            }).forEach(System.out::println);
        }
    }