/*
* This software is subject to the terms of the Eclipse Public License v1.0
* Agreement, available at the following URL:
* http://www.eclipse.org/legal/epl-v10.html.
* You must accept the terms of that agreement to use this software.
*
* Copyright (c) 2002-2013 Pentaho Corporation.. All rights reserved.
*/
package mondrian.calc;
import mondrian.olap.Parameter;
/**
* Implementation of a parameter.
*
* @author jhyde
* @since Jul 25, 2006
*/
public interface ParameterSlot {
/**
* Returns the unique index of the slot.
*/
int getIndex();
/**
* Returns a compiled expression to compute the default value of the
* parameter.
*/
Calc getDefaultValueCalc();
/**
* Returns the parameter.
*/
Parameter getParameter();
/**
* Sets the value of this parameter.
*
* <p>NOTE: This method will be removed when we store parameter values
* in the {@link mondrian.olap.Result} rather than in the
* {@link mondrian.olap.Query}.
*
* @param value New value
* @param assigned Whether {@link #isParameterSet()} should return true;
* supply value {@code false} if this is an internal assignment, to
* remember the default value
*/
void setParameterValue(Object value, boolean assigned);
/**
* Returns the value of this parameter.
*
* <p>NOTE: This method will be removed when we store parameter values
* in the {@link mondrian.olap.Result} rather than in the
* {@link mondrian.olap.Query}.
*/
Object getParameterValue();
/**
* Returns whether the parameter has been assigned a value. (That value
* may be null.)
*
* @return Whether parmaeter has been assigned a value.
*/
boolean isParameterSet();
void setCachedDefaultValue(Object value);
Object getCachedDefaultValue();
/**
* Unsets the parameter value.
*/
void unsetParameterValue();
}
// End ParameterSlot.java