/// <summary>Renders the clause in textual representation. </summary> /// <param name="writer">to output to</param> public void ToEPL(TextWriter writer) { if (AfterTimePeriodExpression != null) { writer.Write("after "); AfterTimePeriodExpression.ToEPL(writer, ExpressionPrecedenceEnum.MINIMUM); writer.Write(" "); } else if ((AfterNumberOfEvents != null) && (AfterNumberOfEvents != 0)) { writer.Write("after "); writer.Write(Convert.ToString(AfterNumberOfEvents)); writer.Write(" events "); } if (Selector != OutputLimitSelector.DEFAULT) { writer.Write(Selector.GetText()); writer.Write(" "); } if (Unit == OutputLimitUnit.WHEN_EXPRESSION) { writer.Write("when "); WhenExpression.ToEPL(writer, ExpressionPrecedenceEnum.MINIMUM); if ((ThenAssignments != null) && (ThenAssignments.Count > 0)) { WriteThenAssignments(writer, ThenAssignments); } } else if (Unit == OutputLimitUnit.CRONTAB_EXPRESSION) { writer.Write("at ("); String delimiter = ""; for (int i = 0; i < CrontabAtParameters.Length; i++) { writer.Write(delimiter); CrontabAtParameters[i].ToEPL(writer, ExpressionPrecedenceEnum.MINIMUM); delimiter = ", "; } writer.Write(")"); } else if (Unit == OutputLimitUnit.TIME_PERIOD && TimePeriodExpression != null) { writer.Write("every "); TimePeriodExpression.ToEPL(writer, ExpressionPrecedenceEnum.MINIMUM); } else if (Unit == OutputLimitUnit.AFTER) { // no action required } else if (Unit == OutputLimitUnit.CONTEXT_PARTITION_TERM) { writer.Write("when terminated"); OutputAndAfter(writer); } else { writer.Write("every "); if (FrequencyVariable == null) { writer.Write(Convert.ToString(Frequency.AsInt())); } else { writer.Write(FrequencyVariable); } writer.Write(" events"); } if (IsAndAfterTerminate) { writer.Write(" and when terminated"); OutputAndAfter(writer); } }