mondrian.rolap.agg
Class CellRequest

java.lang.Object
  extended by mondrian.rolap.agg.CellRequest
Direct Known Subclasses:
DrillThroughCellRequest

public class CellRequest
extends Object

A CellRequest contains the context necessary to get a cell value from a star.

Since:
21 March, 2002
Author:
jhyde

Field Summary
 boolean drillThrough
           
 boolean extendedContext
           
 
Constructor Summary
CellRequest(RolapStar.Measure measure, boolean extendedContext, boolean drillThrough)
          Creates a CellRequest.
 
Method Summary
 void addAggregateList(BitKey compoundBitKey, StarPredicate compoundPredicate)
          Add compound member (formed via aggregate function) constraint to the Cell.
 void addConstrainedColumn(RolapStar.Column column, StarColumnPredicate predicate)
          Adds a constraint to this request.
(package private)  SortedMap<BitKey,StarPredicate> getCompoundPredicateMap()
          Returns the map of compound predicates, or null if empty.
 RolapStar.Column[] getConstrainedColumns()
           
 BitKey getConstrainedColumnsBitKey()
          Returns the BitKey for the list of columns.
 Map<String,Comparable> getMappedCellValues()
          Builds a map of column names to values, as specified by this cell request object.
 RolapStar.Measure getMeasure()
          Returns the measure of this cell request.
 int getNumValues()
          Return the number of column constraints associated with this CellRequest.
 Object[] getSingleValues()
          Returns an array of the values for each column.
 StarColumnPredicate getValueAt(int index)
          Return the predicate value associated with the given index.
 boolean isUnsatisfiable()
          Returns whether this cell request is impossible to satisfy.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

extendedContext

public final boolean extendedContext

drillThrough

public final boolean drillThrough
Constructor Detail

CellRequest

public CellRequest(RolapStar.Measure measure,
                   boolean extendedContext,
                   boolean drillThrough)
Creates a CellRequest.

Parameters:
measure - Measure the request is for
extendedContext - If a drill-through request, whether to join in unconstrained levels so as to display extra columns
drillThrough - Whether this is a request for a drill-through set
Method Detail

addConstrainedColumn

public final void addConstrainedColumn(RolapStar.Column column,
                                       StarColumnPredicate predicate)
Adds a constraint to this request.

Parameters:
column - Column to constraint
predicate - Constraint to apply, or null to add column to the output without applying constraint

addAggregateList

public void addAggregateList(BitKey compoundBitKey,
                             StarPredicate compoundPredicate)
Add compound member (formed via aggregate function) constraint to the Cell.

Parameters:
compoundBitKey - Compound bit key
compoundPredicate - Compound predicate

getMeasure

public RolapStar.Measure getMeasure()
Returns the measure of this cell request.

Returns:
Measure

getConstrainedColumns

public RolapStar.Column[] getConstrainedColumns()

getConstrainedColumnsBitKey

public BitKey getConstrainedColumnsBitKey()
Returns the BitKey for the list of columns.

Returns:
BitKey for the list of columns

getCompoundPredicateMap

SortedMap<BitKey,StarPredicate> getCompoundPredicateMap()
Returns the map of compound predicates, or null if empty.

NOTE: It is not generally considered good API design to return null to represent empty collections, but this collection is very often empty and the the implementation of Collections.emptyMap().keySet().iterator() is slow, so we optimize for the common case.

Returns:
predicate map, or null if empty

getValueAt

public StarColumnPredicate getValueAt(int index)
Return the predicate value associated with the given index. Note that index is different than bit position; if there are three constraints then the indices are 0, 1, and 2, while the bitPositions could span a larger range.

It is valid for the predicate at a given index to be null (there should always be a column at that index, but it may not have an associated predicate).

Parameters:
index - Index of the constraint we're looking up
Returns:
predicate value associated with the given index

getNumValues

public int getNumValues()
Return the number of column constraints associated with this CellRequest.

Returns:
number of columns in the CellRequest

getSingleValues

public Object[] getSingleValues()
Returns an array of the values for each column.

The caller must check whether this request is satisfiable before calling this method. May throw NullPointerException if request is not satisfiable.

Returns:
Array of values for each column
Pre-condition:
!isUnsatisfiable()

getMappedCellValues

public Map<String,Comparable> getMappedCellValues()
Builds a map of column names to values, as specified by this cell request object.


isUnsatisfiable

public boolean isUnsatisfiable()
Returns whether this cell request is impossible to satisfy. This occurs when the same column has two or more inconsistent constraints.

Returns:
whether this cell request is impossible to satisfy

Get Mondrian at SourceForge.net. Fast, secure and free Open Source software downloads