/* *************************************************************************************** * 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.epl.spec; import com.espertech.esper.epl.expression.core.ExprNode; import com.espertech.esper.epl.expression.time.ExprTimePeriod; import com.espertech.esper.util.MetaDefItem; import java.io.Serializable; import java.util.List; /** * Spec for defining an output rate */ public class OutputLimitSpec implements MetaDefItem, Serializable { private final OutputLimitLimitType displayLimit; private final OutputLimitRateType rateType; private final Double rate; private final String variableName; private ExprNode whenExpressionNode; private final List<OnTriggerSetAssignment> thenExpressions; private final List<ExprNode> crontabAtSchedule; private ExprTimePeriod timePeriodExpr; private ExprTimePeriod afterTimePeriodExpr; private final Integer afterNumberOfEvents; private final boolean andAfterTerminate; private ExprNode andAfterTerminateExpr; private List<OnTriggerSetAssignment> andAfterTerminateThenExpressions; private static final long serialVersionUID = 7314871194757342071L; public OutputLimitSpec(Double rate, String variableForRate, OutputLimitRateType rateType, OutputLimitLimitType displayLimit, ExprNode whenExpressionNode, List<OnTriggerSetAssignment> thenExpressions, List<ExprNode> crontabAtSchedule, ExprTimePeriod timePeriodExpr, ExprTimePeriod afterTimePeriodExpr, Integer afterNumberOfEvents, boolean andAfterTerminate, ExprNode andAfterTerminateExpr, List<OnTriggerSetAssignment> andAfterTerminateSetExpressions) { this.rate = rate; this.displayLimit = displayLimit; this.variableName = variableForRate; this.rateType = rateType; this.crontabAtSchedule = crontabAtSchedule; this.whenExpressionNode = whenExpressionNode; this.thenExpressions = thenExpressions; this.timePeriodExpr = timePeriodExpr; this.afterTimePeriodExpr = afterTimePeriodExpr; this.afterNumberOfEvents = afterNumberOfEvents; this.andAfterTerminate = andAfterTerminate; this.andAfterTerminateExpr = andAfterTerminateExpr; this.andAfterTerminateThenExpressions = andAfterTerminateSetExpressions; } public OutputLimitSpec(OutputLimitLimitType displayLimit, OutputLimitRateType rateType) { this(null, null, rateType, displayLimit, null, null, null, null, null, null, false, null, null); } /** * Returns the type of output limit. * * @return limit */ public OutputLimitLimitType getDisplayLimit() { return displayLimit; } /** * Returns the type of rate. * * @return rate type */ public OutputLimitRateType getRateType() { return rateType; } /** * Returns the rate, or null or -1 if a variable is used instead * * @return rate if set */ public Double getRate() { return rate; } /** * Returns the variable name if set, or null if a fixed rate * * @return variable name */ public String getVariableName() { return variableName; } /** * Returns the when-keyword trigger expression, or null if not using when. * * @return expression */ public ExprNode getWhenExpressionNode() { return whenExpressionNode; } /** * Returns crontab parameters, or null if not using crontab-at output. * * @return schedule parameters */ public List<ExprNode> getCrontabAtSchedule() { return crontabAtSchedule; } /** * Sets a new when-keyword trigger expression. * * @param whenExpressionNode to set */ public void setWhenExpressionNode(ExprNode whenExpressionNode) { this.whenExpressionNode = whenExpressionNode; } /** * Returns a list of variable assignments, or null if none made. * * @return variable assignments */ public List<OnTriggerSetAssignment> getThenExpressions() { return thenExpressions; } /** * Returns time period expression or null if none used. * * @return time period */ public ExprTimePeriod getTimePeriodExpr() { return timePeriodExpr; } /** * Returns the after-keyword time period. * * @return after-keyword time period */ public ExprTimePeriod getAfterTimePeriodExpr() { return afterTimePeriodExpr; } /** * Returns the after-keyword number of events. * * @return after-keyword number of events */ public Integer getAfterNumberOfEvents() { return afterNumberOfEvents; } public ExprNode getAndAfterTerminateExpr() { return andAfterTerminateExpr; } public void setAndAfterTerminateExpr(ExprNode andAfterTerminateExpr) { this.andAfterTerminateExpr = andAfterTerminateExpr; } public boolean isAndAfterTerminate() { return andAfterTerminate; } public List<OnTriggerSetAssignment> getAndAfterTerminateThenExpressions() { return andAfterTerminateThenExpressions; } public void setAndAfterTerminateThenExpressions(List<OnTriggerSetAssignment> andAfterTerminateThenExpressions) { this.andAfterTerminateThenExpressions = andAfterTerminateThenExpressions; } public void setAfterTimePeriodExpr(ExprTimePeriod afterTimePeriodExpr) { this.afterTimePeriodExpr = afterTimePeriodExpr; } public void setTimePeriodExpr(ExprTimePeriod timePeriodExpr) { this.timePeriodExpr = timePeriodExpr; } }