/* *************************************************************************************** * Copyright (C) 2006 EsperTech, Inc. All rights reserved. * * http://www.espertech.com/esper * * 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.Serializable; import java.io.StringWriter; import java.util.ArrayList; import java.util.List; /** * An item in a for-clause for controlling delivery of result events to listeners and subscribers. */ public class ForClauseItem implements Serializable { private static final long serialVersionUID = -8476488858601535928L; private ForClauseKeyword keyword; private List<Expression> expressions; /** * Creates a for-clause with no expressions. * * @param keyword keyword to use * @return for-clause */ public static ForClauseItem create(ForClauseKeyword keyword) { return new ForClauseItem(keyword); } /** * Ctor. * <p> * Must set a keyword and optionally add expressions. */ public ForClauseItem() { expressions = new ArrayList<Expression>(); } /** * Ctor. * * @param keyword the delivery keyword */ public ForClauseItem(ForClauseKeyword keyword) { this(); setKeyword(keyword); } /** * Returns the for-clause keyword. * * @return keyword */ public ForClauseKeyword getKeyword() { return keyword; } /** * Sets the for-clause keyword. * * @param keyword to set */ public void setKeyword(ForClauseKeyword keyword) { this.keyword = keyword; } /** * Returns for-clause expressions. * * @return expressions */ public List<Expression> getExpressions() { return expressions; } /** * Sets for-clause expressions. * * @param expressions expressions to set */ public void setExpressions(List<Expression> expressions) { this.expressions = expressions; } /** * Renders the clause in textual representation. * * @param writer to output to */ public void toEPL(StringWriter writer) { if (keyword == null) { return; } writer.write("for "); writer.write(keyword.getName()); if (expressions.size() == 0) { return; } writer.write("("); String delimiter = ""; for (Expression child : expressions) { writer.write(delimiter); child.toEPL(writer, ExpressionPrecedenceEnum.MINIMUM); delimiter = ", "; } writer.write(")"); } }