/************************************************************************************** * Copyright (C) 2008 EsperTech, Inc. All rights reserved. * * http://esper.codehaus.org * * http://www.espertech.com * * ---------------------------------------------------------------------------------- * * The software in this package is published under the terms of the GPL license * * a copy of which has been included with this distribution in the license.txt file. * **************************************************************************************/ package com.espertech.esper.client.soda; import java.io.StringWriter; import java.util.ArrayList; /** * A stream of events that is generated by pattern matches. * <p> * Patterns matches are events that match pattern expressions. Pattern expressions are built using * {@link Patterns}. */ public class PatternStream extends ProjectedStream { private PatternExpr expression; private static final long serialVersionUID = -8321367637970657123L; /** * Ctor. */ public PatternStream() { } /** * Creates a pattern stream from a pattern expression. * @param expression pattern expression * @return stream */ public static PatternStream create(PatternExpr expression) { return new PatternStream(expression); } /** * Creates a named pattern stream from a pattern expression. * @param expression pattern expression * @param optStreamName is the pattern stream name (as-name) * @return stream */ public static PatternStream create(PatternExpr expression, String optStreamName) { return new PatternStream(expression, optStreamName); } /** * Ctor. * @param expression pattern expression */ public PatternStream(PatternExpr expression) { this(expression, null); } /** * Ctor. * @param expression pattern expression * @param optStreamName is the pattern stream name (as-name) */ public PatternStream(PatternExpr expression, String optStreamName) { super(new ArrayList<View>(), optStreamName); this.expression = expression; } /** * Returns the pattern expression providing events to the stream. * @return pattern expression */ public PatternExpr getExpression() { return expression; } /** * Sets the pattern expression providing events to the stream. * @param expression is the pattern expression */ public void setExpression(PatternExpr expression) { this.expression = expression; } public void toEPLProjectedStream(StringWriter writer, EPStatementFormatter formatter) { writer.write("pattern ["); if (expression != null) { expression.toEPL(writer, PatternExprPrecedenceEnum.MINIMUM, formatter); } writer.write(']'); } public void toEPLProjectedStreamType(StringWriter writer) { writer.write("pattern"); } }