package org.jnect.demo.incquery.esper.robot;
import org.jnect.demo.incquery.esper.IEventFilter;
import com.espertech.esper.client.EPAdministrator;
import com.espertech.esper.client.EPStatement;
import com.espertech.esper.client.UpdateListener;
/**
* EPL filter for a complex EPL pattern based on start and end IQPL patterns
* with a time window of continuous time.
*
* @author istvanrath
*/
public class StartEndEventPatternWithWindow implements IEventFilter {
private EPStatement statement;
public StartEndEventPatternWithWindow(EPAdministrator admin, String startPName, String endPName, String windowLength) {
String stmt = "SELECT * FROM pattern[" +
"every(PatternMatchEvent(patternName='"+startPName+"' AND type='NEW') -> " +
"PatternMatchEvent(patternName='"+endPName+"' AND type='NEW') WHERE timer:within("+windowLength+"))]";
statement = admin.createEPL(stmt);
}
@Override
public void addListener(Object listener) {
statement.addListener((UpdateListener) listener);
}
@Override
public void removeListener(Object listener) {
statement.removeListener((UpdateListener) listener);
}
}