/*
***************************************************************************************
* 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.core.service;
import com.espertech.esper.client.EPStatement;
import com.espertech.esper.client.EPStatementState;
import com.espertech.esper.view.Viewable;
/**
* Statement SPI for statements operations for state transitions and internal management.
*/
public interface EPStatementSPI extends EPStatement {
/**
* Returns the statement id.
*
* @return statement id
*/
public int getStatementId();
/**
* Set the statement's isolated service name, or null to clear.
*
* @param serviceIsolated name of isolated service
*/
public void setServiceIsolated(String serviceIsolated);
/**
* Returns the statements expression without annotations.
*
* @return expression
*/
public String getExpressionNoAnnotations();
/**
* Returns the current set of listeners for read-only operations.
*
* @return listener set
*/
public EPStatementListenerSet getListenerSet();
/**
* Sets the statement listeners.
* <p>
* Care must be taken in the use of this method as unsynchronized modification to the
* listeners of a statement can yield problems.
*
* @param listeners set
* @param isRecovery whether we are recovering
*/
public void setListeners(EPStatementListenerSet listeners, boolean isRecovery);
/**
* Set statement state.
*
* @param currentState new current state
* @param timeLastStateChange the timestamp the statement changed state
*/
public void setCurrentState(EPStatementState currentState, long timeLastStateChange);
/**
* Sets the parent view.
*
* @param viewable is the statement viewable
*/
public void setParentView(Viewable viewable);
/**
* Returns the parent view.
*
* @return viewable is the statement parent viewable
*/
public Viewable getParentView();
/**
* Returns additional metadata about a statement.
*
* @return statement metadata
*/
public StatementMetadata getStatementMetadata();
/**
* Returns the statement context.
*
* @return statement context
*/
public StatementContext getStatementContext();
/**
* True if an explicit statement name has been provided, false if the statement name is system-generated.
*
* @return indicator if statement name exists
*/
public boolean isNameProvided();
}