Class RolapResult.CellInfoPool
- java.lang.Object
-
- mondrian.rolap.RolapResult.CellInfoPool
-
- All Implemented Interfaces:
RolapResult.CellInfoContainer
- Enclosing class:
- RolapResult
static class RolapResult.CellInfoPool extends java.lang.Object implements RolapResult.CellInfoContainer
Implementation ofRolapResult.CellInfoContainer
which uses anObjectPool
to storeRolapResult.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 nextexecuteStripe
call, the Cell ordinal, the position integer array could converted to anlong
, could be generated on the call stack!! Just a thought for the future.
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description (package private) static interface
RolapResult.CellInfoPool.CellKeyMaker
Implementations of CellKeyMaker convert the Cell position integer array to along
.(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
Fields Modifier and Type Field Description 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
Constructors Constructor Description CellInfoPool(int axisLength)
CellInfoPool(int axisLength, int initialSize)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description void
clear()
Removes all CellInfo objects from container.RolapResult.CellInfo
create(int[] pos)
Creates a new CellInfo object, adds it to the container a locationpos
and returns it.RolapResult.CellInfo
lookup(int[] pos)
Gets the CellInfo object at the locationpos
.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.
-
-
-
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
-
-
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 interfaceRolapResult.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 interfaceRolapResult.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 interfaceRolapResult.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 locationpos
and returns it.- Specified by:
create
in interfaceRolapResult.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 locationpos
.- Specified by:
lookup
in interfaceRolapResult.CellInfoContainer
- Parameters:
pos
- where to find the CellInfo object.- Returns:
- the CellInfo found or null.
-
-