package hu.bme.mit.incquery.cep.casestudy.transaction.actionhandlers; import hu.bme.mit.incquery.cep.api.IActionHandler; import hu.bme.mit.incquery.cep.api.ParameterizableComplexEventPattern; import hu.bme.mit.incquery.cep.api.ParameterizableEventInstance; import hu.bme.mit.incquery.cep.api.evm.IObservableComplexEventPattern; import hu.bme.mit.incquery.cep.api.evm.ObservedComplexEventPattern; import hu.bme.mit.incquery.cep.casestudy.transaction.CompoundTransactionEvent; import hu.bme.mit.incquery.cep.casestudy.transaction.TransactionFactory; import hu.bme.mit.incquery.cep.casestudy.transaction.TransactionModel; import hu.bme.mit.incquery.cep.casestudy.transaction.events.incquery.ComponentA_Appeared_IQEvent; import hu.bme.mit.incquery.cep.casestudy.transaction.events.incquery.ComponentB_Appeared_IQEvent; import hu.bme.mit.incquery.cep.casestudy.transaction.events.incquery.ComponentC_Appeared_IQEvent; import hu.bme.mit.incquery.cep.casestudy.transaction.test.IncQueryTester; import hu.bme.mit.incquery.cep.metamodels.cep.EventPattern; import java.util.List; import org.eclipse.incquery.runtime.evm.api.Activation; public class SimpleActionHandler implements IActionHandler { @Override public void handle(Activation<? extends IObservableComplexEventPattern> activation) { IObservableComplexEventPattern atom = activation.getAtom(); if (!(atom instanceof ObservedComplexEventPattern)) { return; } EventPattern observedEventPattern = atom.getObservableEventPattern(); System.out.println("Event pattern appeared: " + observedEventPattern.getId()); if (observedEventPattern instanceof ParameterizableComplexEventPattern) { List<ParameterizableEventInstance> observedEvents = ((ParameterizableComplexEventPattern) observedEventPattern) .getObservedEvents(); ComponentA_Appeared_IQEvent componentA = (ComponentA_Appeared_IQEvent) observedEvents.get(0); ComponentB_Appeared_IQEvent componentB = (ComponentB_Appeared_IQEvent) observedEvents.get(1); ComponentC_Appeared_IQEvent componentC = (ComponentC_Appeared_IQEvent) observedEvents.get(2); System.out.println("New compound event with params:"); System.out.println("---TransactionId: " + componentA.getTransactionId()); System.out.println("---CustomerId: " + componentA.getCustomerId()); System.out.println("---Timestamp A: " + componentA.getTimestamp()); System.out.println("---Timestamp B: " + componentB.getTimestamp()); System.out.println("---Timestamp C: " + componentC.getTimestamp()); //createCompoundTransactionEvent(componentA, componentB, componentC); } } private void createCompoundTransactionEvent(ComponentA_Appeared_IQEvent componentA, ComponentB_Appeared_IQEvent componentB, ComponentC_Appeared_IQEvent componentC) { CompoundTransactionEvent compoundTransactionEvent = TransactionFactory.eINSTANCE .createCompoundTransactionEvent(); compoundTransactionEvent.setTransactionId(componentA.getTransactionId()); compoundTransactionEvent.setCustomerId(componentA.getCustomerId()); compoundTransactionEvent.setTimestampA(componentA.getTimestamp()); compoundTransactionEvent.setTimestampB(componentB.getTimestamp()); compoundTransactionEvent.setTimestampC(componentC.getTimestamp()); TransactionModel model = IncQueryTester.getInstance().getModel(); System.out.println("Compound events in model: " + model.getLatestCompoundEvent()); model.setLatestCompoundEvent(compoundTransactionEvent); System.out.println("Compound events in model: " + model.getLatestCompoundEvent()); } }