/* *************************************************************************************** * 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.view.window; import com.espertech.esper.client.EventType; import com.espertech.esper.epl.expression.time.ExprTimePeriodEvalDeltaConstFactory; import com.espertech.esper.view.ViewParameterException; import java.util.Locale; /** * Parameters for batch views that provides common data flow parameter parsing. */ public class TimeBatchViewFactoryParams { /** * Keyword for force update, i.e. update if no data. */ protected static final String FORCE_UPDATE_KEYWORD = "force_update"; /** * Keyword for starting eager, i.e. start early. */ protected static final String START_EAGER_KEYWORD = "start_eager"; /** * Event type */ protected EventType eventType; /** * Number of msec before batch fires (either interval or number of events). */ protected ExprTimePeriodEvalDeltaConstFactory timeDeltaComputationFactory; /** * Indicate whether to output only if there is data, or to keep outputting empty batches. */ protected boolean isForceUpdate; /** * Indicate whether to output only if there is data, or to keep outputting empty batches. */ protected boolean isStartEager; /** * Convert keywords into isForceUpdate and isStartEager members * * @param keywords flow control keyword string expression * @param errorMessage error message * @throws ViewParameterException if parsing failed */ protected void processKeywords(Object keywords, String errorMessage) throws ViewParameterException { if (!(keywords instanceof String)) { throw new ViewParameterException(errorMessage); } String[] keyword = ((String) keywords).split(","); for (int i = 0; i < keyword.length; i++) { String keywordText = keyword[i].toLowerCase(Locale.ENGLISH).trim(); if (keywordText.length() == 0) { continue; } if (keywordText.equals(FORCE_UPDATE_KEYWORD)) { isForceUpdate = true; } else if (keywordText.equals(START_EAGER_KEYWORD)) { isForceUpdate = true; isStartEager = true; } else { String keywordRange = FORCE_UPDATE_KEYWORD + "," + START_EAGER_KEYWORD; throw new ViewParameterException("Time-length-combination view encountered an invalid keyword '" + keywordText + "', valid control keywords are: " + keywordRange); } } } public boolean isForceUpdate() { return isForceUpdate; } public boolean isStartEager() { return isStartEager; } }