package hu.bme.mit.incquery.cep.api.evm; import hu.bme.mit.incquery.cep.metamodels.internalsm.StateMachine; import java.util.Set; import org.eclipse.incquery.runtime.evm.api.event.EventRealm; import org.eclipse.incquery.runtime.evm.api.event.EventSource; import org.eclipse.incquery.runtime.evm.api.event.EventSourceSpecification; import com.google.common.collect.Sets; public class CepEventSource implements EventSource<IObservableComplexEventPattern> { private CepRealm realm; private CepEventSourceSpecification specification; private StateMachine stateMachine; private Set<CepEventHandler> handlers = Sets.newHashSet(); public CepEventSource(CepEventSourceSpecification specification, CepRealm realm) { this.specification = specification; this.realm = realm; realm.addSource(this); } @Override public EventSourceSpecification<IObservableComplexEventPattern> getSourceSpecification() { return specification; } @Override public EventRealm getRealm() { return realm; } public StateMachine getStateMachine() { return stateMachine; } public void setStateMachine(StateMachine stateMachine) { this.stateMachine = stateMachine; } @Override public void dispose() {} public void addHandler(CepEventHandler handler) { handlers.add(handler); } public void pushEvent(CepEventType type, IObservableComplexEventPattern op) { CepEvent event = new CepEvent(type, op); for (CepEventHandler handler : handlers) { handler.handleEvent(event); } } }