Skip to content
Snippets Groups Projects
Commit 7d137d7a authored by thierry.vuilleum's avatar thierry.vuilleum
Browse files

add client for EventService and add log() method

parent a0083d17
No related branches found
No related tags found
No related merge requests found
package ch.hepia.event; package ch.hepia.event;
import java.util.List; import java.util.*;
import java.util.stream.Collectors;
import java.util.ArrayList; 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{ public class EventService{
private List<Event> events; private List<Event> events;
private static int ackMode;
private static String clientQueueName;
private boolean transacted = false;
public EventService(){ private Optional<Session> maybeSession;
this.events = new ArrayList<>(); private Optional<MessageProducer> maybeProducer;
}
public void add(Event e){ static {
this.events.add(e); clientQueueName = "client.messages";
ackMode = Session.AUTO_ACKNOWLEDGE;
} }
public List<Event> getCreditRefused(){ public EventService(final String ipBroker){
return getEventsOfThis(EventCreditRefused.class); this.events = new ArrayList<>();
} final String brokerUrl = "tcp://" + ipBroker + ":61616";
public List<Event> getCreditWithdrawn(){ ActiveMQConnectionFactory connectionFactory = new ActiveMQConnectionFactory(brokerUrl);
return getEventsOfThis(EventCreditWithdrawn.class); try {
} Connection connection = connectionFactory.createConnection();
connection.start();
public List<Event> getOrderCancelled(){ Session session = connection.createSession(transacted, ackMode);
return getEventsOfThis(EventOrderCancelled.class); maybeSession = Optional.of(session);
}
public List<Event> getOrderCreated(){ Destination mainTopic = session.createTopic(clientQueueName);
return getEventsOfThis(EventOrderCreated.class);
}
public List<Event> getOrderPlaced(){ //Setup a message producer to send message to the queue the server is consuming from
return getEventsOfThis(EventOrderPlaced.class); MessageProducer producer = session.createProducer(mainTopic);
} producer.setDeliveryMode(DeliveryMode.NON_PERSISTENT);
maybeProducer = Optional.of(producer);
MessageConsumer responseConsumer = session.createConsumer(mainTopic);
public List<Event> getOrderPrepared(){ responseConsumer.setMessageListener(new MessageListener() {
return getEventsOfThis(EventOrderPrepared.class); 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();
}
}
});
public List<Event> getOrderSent(){ } catch (JMSException e) {
return getEventsOfThis(EventOrderPlaced.class); e.printStackTrace();
}
} }
private List<Event> getEventsOfThis(Class c){ private void add(Event e){
return this.events.stream().filter(e -> e.getClass().equals(c)).collect(Collectors.toList()); this.events.add(e);
} }
public void display(){ public void log(int id){
this.events.stream().forEach(System.out::println); 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);
} }
} }
\ No newline at end of file
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment