mondrian.rolap
Class RolapResult.CellInfoPool

java.lang.Object
  extended by mondrian.rolap.RolapResult.CellInfoPool
All Implemented Interfaces:
RolapResult.CellInfoContainer
Enclosing class:
RolapResult

static class RolapResult.CellInfoPool
extends Object
implements RolapResult.CellInfoContainer

Implementation of RolapResult.CellInfoContainer which uses an ObjectPool to store RolapResult.CellInfo Objects.

There is an inner interface (CellKeyMaker) and implementations for 0 through 4 axes that convert the Cell position integer array into a long.

It should be noted that there is an alternate approach. As the executeStripe method is recursively called, at each call it is known which axis is being iterated across and it is known whether or not the Position object for that axis is a List or just an Iterable. It it is a List, then one knows the real size of the axis. If it is an Iterable, then one has to use one of the MAX_AXIS_SIZE values. Given that this information is available when one recursives down to the next executeStripe call, the Cell ordinal, the position integer array could converted to an long, could be generated on the call stack!! Just a thought for the future.

 

Nested Class Summary
(package private) static interface RolapResult.CellInfoPool.CellKeyMaker
          Implementations of CellKeyMaker convert the Cell position integer array to a long.
(package private) static class RolapResult.CellInfoPool.Four
          For axis of size 4.
(package private) static class RolapResult.CellInfoPool.One
          For axis of size 1.
(package private) static class RolapResult.CellInfoPool.Three
          For axis of size 3.
(package private) static class RolapResult.CellInfoPool.Two
          For axis of size 2.
(package private) static class RolapResult.CellInfoPool.Zero
          For axis of size 0.
 
Field Summary
protected static long MAX_AXIS_SIZE_2
          The maximum number of Members, 2,147,483,647, that can be any given Axis when the number of Axes is 2.
protected static long MAX_AXIS_SIZE_3
          The maximum number of Members, 2,000,000, that can be any given Axis when the number of Axes is 3.
protected static long MAX_AXIS_SIZE_4
          The maximum number of Members, 50,000, that can be any given Axis when the number of Axes is 4.
 
Constructor Summary
RolapResult.CellInfoPool(int axisLength)
           
RolapResult.CellInfoPool(int axisLength, int initialSize)
           
 
Method Summary
 void clear()
          Removes all CellInfo objects from container.
 RolapResult.CellInfo create(int[] pos)
          Creates a new CellInfo object, adds it to the container a location pos and returns it.
 RolapResult.CellInfo lookup(int[] pos)
          Gets the CellInfo object at the location pos.
 int size()
          Returns the number of CellInfo objects in this container.
 void trimToSize()
          Reduces the size of the internal data structures needed to support the current entries.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

MAX_AXIS_SIZE_2

protected static final long MAX_AXIS_SIZE_2
The maximum number of Members, 2,147,483,647, that can be any given Axis when the number of Axes is 2.

See Also:
Constant Field Values

MAX_AXIS_SIZE_3

protected static final long MAX_AXIS_SIZE_3
The maximum number of Members, 2,000,000, that can be any given Axis when the number of Axes is 3.

See Also:
Constant Field Values

MAX_AXIS_SIZE_4

protected static final long MAX_AXIS_SIZE_4
The maximum number of Members, 50,000, that can be any given Axis when the number of Axes is 4.

See Also:
Constant Field Values
Constructor Detail

RolapResult.CellInfoPool

RolapResult.CellInfoPool(int axisLength)

RolapResult.CellInfoPool

RolapResult.CellInfoPool(int axisLength,
                         int initialSize)
Method Detail

size

public int size()
Description copied from interface: RolapResult.CellInfoContainer
Returns the number of CellInfo objects in this container.

Specified by:
size in interface RolapResult.CellInfoContainer
Returns:
the number of CellInfo objects.

trimToSize

public void trimToSize()
Description copied from interface: RolapResult.CellInfoContainer
Reduces the size of the internal data structures needed to support the current entries. This should be called after all CellInfo objects have been added to container.

Specified by:
trimToSize in interface RolapResult.CellInfoContainer

clear

public void clear()
Description copied from interface: RolapResult.CellInfoContainer
Removes all CellInfo objects from container. Does not change the size of the internal data structures.

Specified by:
clear in interface RolapResult.CellInfoContainer

create

public RolapResult.CellInfo create(int[] pos)
Description copied from interface: RolapResult.CellInfoContainer
Creates a new CellInfo object, adds it to the container a location pos and returns it.

Specified by:
create in interface RolapResult.CellInfoContainer
Parameters:
pos - where to store CellInfo object.
Returns:
the newly create CellInfo object.

lookup

public RolapResult.CellInfo lookup(int[] pos)
Description copied from interface: RolapResult.CellInfoContainer
Gets the CellInfo object at the location pos.

Specified by:
lookup in interface RolapResult.CellInfoContainer
Parameters:
pos - where to find the CellInfo object.
Returns:
the CellInfo found or null.

SourceForge.net_Logo