package hu.bme.mit.incquery.cep.casestudy.transaction.mapping;
import hu.bme.mit.incquery.cep.api.ICepAdapter;
import hu.bme.mit.incquery.cep.casestudy.transaction.incquery.patterns.sample.ComponentAMatch;
import hu.bme.mit.incquery.cep.casestudy.transaction.incquery.patterns.sample.ComponentAMatcher;
import hu.bme.mit.incquery.cep.casestudy.transaction.incquery.patterns.sample.ComponentBMatch;
import hu.bme.mit.incquery.cep.casestudy.transaction.incquery.patterns.sample.ComponentBMatcher;
import hu.bme.mit.incquery.cep.casestudy.transaction.incquery.patterns.sample.ComponentCMatch;
import hu.bme.mit.incquery.cep.casestudy.transaction.incquery.patterns.sample.ComponentCMatcher;
import java.util.Collection;
import org.eclipse.emf.ecore.resource.ResourceSet;
import org.eclipse.incquery.runtime.api.IMatchProcessor;
import org.eclipse.incquery.runtime.exception.IncQueryException;
import org.eclipse.viatra2.emf.runtime.rules.EventDrivenTransformationRuleGroup;
import org.eclipse.viatra2.emf.runtime.rules.eventdriven.EventDrivenTransformationRuleFactory;
import org.eclipse.viatra2.emf.runtime.rules.eventdriven.EventDrivenTransformationRuleFactory.EventDrivenTransformationBuilder;
import org.eclipse.viatra2.emf.runtime.transformation.eventdriven.EventDrivenTransformation;
import org.eclipse.viatra2.emf.runtime.transformation.eventdriven.EventDrivenTransformationRule;
import org.eclipse.viatra2.emf.runtime.transformation.eventdriven.InconsistentEventSemanticsException;
@SuppressWarnings("all")
public class IncQuery2ViatraCep {
private ICepAdapter adapter;
private ResourceSet resourceSet;
private EventDrivenTransformation transformation;
public IncQuery2ViatraCep(final ResourceSet resourceSet, final ICepAdapter adapter) {
this.resourceSet = resourceSet;
this.adapter = adapter;
}
public EventDrivenTransformationRuleGroup getRules() {
EventDrivenTransformationRuleGroup ruleGroup = new EventDrivenTransformationRuleGroup(
createcomponentA_Appeared_MappingRule(), createcomponentB_Appeared_MappingRule(),
createcomponentC_Appeared_MappingRule());
return ruleGroup;
}
public void registerRules() {
transformation = EventDrivenTransformation.forResource(resourceSet).addRules(getRules()).create();
}
public EventDrivenTransformationRule<ComponentAMatch, ComponentAMatcher> createcomponentA_Appeared_MappingRule() {
try {
EventDrivenTransformationBuilder<ComponentAMatch, ComponentAMatcher> builder = new EventDrivenTransformationRuleFactory()
.createRule();
builder.precondition(hu.bme.mit.incquery.cep.casestudy.transaction.incquery.patterns.sample.ComponentAMatcher
.querySpecification());
IMatchProcessor<ComponentAMatch> action = new IMatchProcessor<ComponentAMatch>() {
public void process(
final hu.bme.mit.incquery.cep.casestudy.transaction.incquery.patterns.sample.ComponentAMatch matchedPattern) {
try {
Collection<ComponentAMatch> allMatches = hu.bme.mit.incquery.cep.casestudy.transaction.incquery.patterns.sample.ComponentAMatcher
.on(transformation.getIqEngine()).getAllMatches();
for (hu.bme.mit.incquery.cep.casestudy.transaction.incquery.patterns.sample.ComponentAMatch match : allMatches) {
hu.bme.mit.incquery.cep.casestudy.transaction.events.incquery.ComponentA_Appeared_IQEvent event = new hu.bme.mit.incquery.cep.casestudy.transaction.events.incquery.ComponentA_Appeared_IQEvent(
null);
event.setTransactionId((java.lang.String) matchedPattern.get(1));
event.setCustomerId((java.lang.String) matchedPattern.get(2));
event.setIncQueryPattern(match);
adapter.push(event);
}
} catch (IncQueryException e) {
e.printStackTrace();
}
}
};
builder.action(action);
return builder.build();
} catch (IncQueryException e) {
e.printStackTrace();
}
return null;
}
public EventDrivenTransformationRule<ComponentBMatch, ComponentBMatcher> createcomponentB_Appeared_MappingRule() {
try {
EventDrivenTransformationBuilder<ComponentBMatch, ComponentBMatcher> builder = new EventDrivenTransformationRuleFactory()
.createRule();
builder.precondition(hu.bme.mit.incquery.cep.casestudy.transaction.incquery.patterns.sample.ComponentBMatcher
.querySpecification());
IMatchProcessor<ComponentBMatch> action = new IMatchProcessor<ComponentBMatch>() {
public void process(
final hu.bme.mit.incquery.cep.casestudy.transaction.incquery.patterns.sample.ComponentBMatch matchedPattern) {
try {
Collection<ComponentBMatch> allMatches = hu.bme.mit.incquery.cep.casestudy.transaction.incquery.patterns.sample.ComponentBMatcher
.on(transformation.getIqEngine()).getAllMatches();
for (hu.bme.mit.incquery.cep.casestudy.transaction.incquery.patterns.sample.ComponentBMatch match : allMatches) {
hu.bme.mit.incquery.cep.casestudy.transaction.events.incquery.ComponentB_Appeared_IQEvent event = new hu.bme.mit.incquery.cep.casestudy.transaction.events.incquery.ComponentB_Appeared_IQEvent(
null);
event.setTransactionId((java.lang.String) matchedPattern.get(1));
event.setIncQueryPattern(match);
adapter.push(event);
}
} catch (IncQueryException e) {
e.printStackTrace();
}
}
};
builder.action(action);
return builder.build();
} catch (IncQueryException e) {
e.printStackTrace();
}
return null;
}
public EventDrivenTransformationRule<ComponentCMatch, ComponentCMatcher> createcomponentC_Appeared_MappingRule() {
try {
EventDrivenTransformationBuilder<ComponentCMatch, ComponentCMatcher> builder = new EventDrivenTransformationRuleFactory()
.createRule();
builder.precondition(hu.bme.mit.incquery.cep.casestudy.transaction.incquery.patterns.sample.ComponentCMatcher
.querySpecification());
IMatchProcessor<ComponentCMatch> action = new IMatchProcessor<ComponentCMatch>() {
public void process(
final hu.bme.mit.incquery.cep.casestudy.transaction.incquery.patterns.sample.ComponentCMatch matchedPattern) {
try {
Collection<ComponentCMatch> allMatches = hu.bme.mit.incquery.cep.casestudy.transaction.incquery.patterns.sample.ComponentCMatcher
.on(transformation.getIqEngine()).getAllMatches();
for (hu.bme.mit.incquery.cep.casestudy.transaction.incquery.patterns.sample.ComponentCMatch match : allMatches) {
hu.bme.mit.incquery.cep.casestudy.transaction.events.incquery.ComponentC_Appeared_IQEvent event = new hu.bme.mit.incquery.cep.casestudy.transaction.events.incquery.ComponentC_Appeared_IQEvent(
null);
event.setTransactionId((java.lang.String) matchedPattern.get(1));
event.setSupplierId((java.lang.String) matchedPattern.get(2));
event.setIncQueryPattern(match);
adapter.push(event);
}
} catch (IncQueryException e) {
e.printStackTrace();
}
}
};
builder.action(action);
return builder.build();
} catch (IncQueryException e) {
e.printStackTrace();
}
return null;
}
}