package sushi.query; import java.util.ArrayList; import java.util.HashSet; import java.util.List; import java.util.Set; import com.espertech.esper.client.EPStatement; import sushi.bpmn.element.AbstractBPMNElement; import sushi.esper.SushiStreamProcessingAdapter; /** * @author micha */ public class SushiPatternQuery extends SushiQuery { private static final long serialVersionUID = 1L; private PatternQueryType patternQueryType; private SushiPatternQueryListener patternQueryListener; private List<AbstractBPMNElement> monitoredElements; private SushiPatternQuery parentQuery; private Set<SushiPatternQuery> childQueries = new HashSet<SushiPatternQuery>(); private EPStatement epStatement; public SushiPatternQuery(String title, String queryString, SushiQueryTypeEnum queryType, PatternQueryType patternQueryType) { super(title, queryString, queryType); this.patternQueryType = patternQueryType; } public SushiPatternQuery(String title, String queryString, SushiQueryTypeEnum queryType, PatternQueryType patternQueryType, List<AbstractBPMNElement> monitoredElements) { this(title, queryString, queryType, patternQueryType); this.setMonitoredElements(monitoredElements); } public PatternQueryType getPatternQueryType() { return patternQueryType; } public void setPatternQueryType(PatternQueryType patternQueryType) { this.patternQueryType = patternQueryType; } public SushiPatternQueryListener addToEsper(SushiStreamProcessingAdapter sushiEsper){ return sushiEsper.addPatternQuery(this); } public SushiPatternQueryListener updateForEsper(SushiStreamProcessingAdapter sushiEsper){ return sushiEsper.updatePatternQuery(this); } public void setListener(SushiPatternQueryListener patternQueryListener) { this.patternQueryListener = patternQueryListener; } public SushiPatternQueryListener getListener() { return this.patternQueryListener; } public void setMonitoredElements(List<AbstractBPMNElement> monitoredElements) { this.monitoredElements = new ArrayList<AbstractBPMNElement>(monitoredElements); } /** * Returns a ordered list of the monitored elements of the query. * @return */ public List<AbstractBPMNElement> getMonitoredElements() { return monitoredElements; } @Override public String toString() { return super.title; } public SushiPatternQuery getParentQuery() { return parentQuery; } public void setParentQuery(SushiPatternQuery parentQuery) { this.parentQuery = parentQuery; } public Set<SushiPatternQuery> getChildQueries() { return childQueries; } public boolean hasChildQueries() { return !childQueries.isEmpty(); } public boolean hasParentQuery() { return parentQuery != null; } public void addChildQueries(SushiPatternQuery childQuery) { childQueries.add(childQuery); } public void removeChildQueries(SushiPatternQuery childQuery) { childQueries.remove(childQuery); } public void setChildQueries(Set<SushiPatternQuery> childQueries) { this.childQueries = childQueries; } public void setEPStatement(EPStatement epStatement) { this.epStatement = epStatement; } public EPStatement getEPStatement() { return epStatement; } }