/* *************************************************************************************** * 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.pattern; import com.espertech.esper.client.EventBean; import java.util.Set; /** * Superclass of all state nodes in an evaluation node tree representing an event expressions. * Follows the Composite pattern. Subclasses are expected to keep their own collection containing child nodes * as needed. */ public abstract class EvalStateNode { private Evaluator parentEvaluator; /** * Starts the event expression or an instance of it. * Child classes are expected to initialize and start any event listeners * or schedule any time-based callbacks as needed. * * @param beginState begin state */ public abstract void start(MatchedEventMap beginState); /** * Stops the event expression or an instance of it. Child classes are expected to free resources * and stop any event listeners or remove any time-based callbacks. */ public abstract void quit(); /** * Accept a visitor. Child classes are expected to invoke the visit method on the visitor instance * passed in. * * @param visitor on which the visit method is invoked by each node */ public abstract void accept(EvalStateNodeVisitor visitor); /** * Returns the factory node for the state node. * * @return factory node */ public abstract EvalNode getFactoryNode(); public abstract boolean isNotOperator(); public abstract boolean isFilterStateNode(); public abstract boolean isObserverStateNodeNonRestarting(); /** * Remove matches that overlap with the provided events. * * @param matchEvent set of events to check for */ public abstract void removeMatch(Set<EventBean> matchEvent); /** * Constructor. * * @param parentNode is the evaluator for this node on which to indicate a change in truth value */ public EvalStateNode(Evaluator parentNode) { this.parentEvaluator = parentNode; } /** * Returns the parent evaluator. * * @return parent evaluator instance */ public final Evaluator getParentEvaluator() { return parentEvaluator; } /** * Sets the parent evaluator. * * @param parentEvaluator for this node */ public final void setParentEvaluator(Evaluator parentEvaluator) { this.parentEvaluator = parentEvaluator; } }