package hu.bme.mit.incquery.cep.casestudy.java.test;
import static com.google.common.base.Preconditions.checkArgument;
import hu.bme.mit.incquery.cep.api.ICepAdapter;
import hu.bme.mit.incquery.cep.api.ICepRule;
import hu.bme.mit.incquery.cep.api.ParameterizableEventInstance;
import hu.bme.mit.incquery.cep.api.ViatraCepManager;
import hu.bme.mit.incquery.cep.casestudy.base.adapters.TransactionEventAdapter;
import hu.bme.mit.incquery.cep.casestudy.transaction.events.ComponentA_Event;
import hu.bme.mit.incquery.cep.casestudy.transaction.events.ComponentB_Event;
import hu.bme.mit.incquery.cep.casestudy.transaction.events.ComponentC_Event;
import hu.bme.mit.incquery.cep.metamodels.internalsm.EventProcessingContext;
import java.util.List;
import com.google.common.collect.Lists;
public class JavaTester {
private ICepAdapter adapter = new TransactionEventAdapter();
private static JavaTester instance;
private JavaTester() {
}
public static JavaTester getInstance() {
if (instance == null) {
instance = new JavaTester();
}
return instance;
}
public void setup(ICepRule rule) {
checkArgument(rule != null);
ViatraCepManager.withContext(EventProcessingContext.CHRONICLE).addRule(rule);
}
public void simulate() {
List<EventType> testSeries = Lists.newArrayList(EventType.A, EventType.B, EventType.C, EventType.A);
//for (int i = 0; i < 100000; i++) {
for (EventType eventType : testSeries) {
ParameterizableEventInstance event = generateEvent(eventType);
System.out.println("Refreshing model with " + event);
adapter.push(event);
}
//}
}
private enum EventType {
A, B, C
}
private ParameterizableEventInstance generateEvent(EventType type) {
String tId = "tr10";
String cId = "c123";
String sId = "s123";
switch (type) {
case A:
ComponentA_Event componentA = new ComponentA_Event(null);
componentA.setTransactionId(tId);
componentA.setCustomerId(cId);
return componentA;
case B:
ComponentB_Event componentB = new ComponentB_Event(null);
componentB.setTransactionId(tId);
return componentB;
case C:
ComponentC_Event componentC = new ComponentC_Event(null);
componentC.setTransactionId(tId);
componentC.setSupplierId(sId);
return componentC;
default:
return null;
}
}
public void dispose() {
instance = null;
}
}