/* *************************************************************************************** * 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.view; import com.espertech.esper.core.context.util.AgentInstanceContext; import com.espertech.esper.core.service.ExprEvaluatorContextStatement; import com.espertech.esper.core.service.StatementContext; import com.espertech.esper.epl.expression.time.ExprTimePeriod; public final class OutputConditionPolledTimeFactory implements OutputConditionPolledFactory { private final ExprTimePeriod timePeriod; public OutputConditionPolledTimeFactory(ExprTimePeriod timePeriod, StatementContext statementContext) { this.timePeriod = timePeriod; double numSeconds = timePeriod.evaluateAsSeconds(null, true, new ExprEvaluatorContextStatement(statementContext, false)); if ((numSeconds < 0.001) && (!timePeriod.hasVariable())) { throw new IllegalArgumentException("Output condition by time requires a interval size of at least 1 msec or a variable"); } } public OutputConditionPolled makeNew(AgentInstanceContext agentInstanceContext) { return new OutputConditionPolledTime(this, agentInstanceContext, new OutputConditionPolledTimeState(null)); } public OutputConditionPolled makeFromState(AgentInstanceContext agentInstanceContext, OutputConditionPolledState state) { OutputConditionPolledTimeState timeState = (OutputConditionPolledTimeState) state; return new OutputConditionPolledTime(this, agentInstanceContext, timeState); } public ExprTimePeriod getTimePeriod() { return timePeriod; } }