Class RolapResult.CellInfoPool

  • All Implemented Interfaces:
    RolapResult.CellInfoContainer
    Enclosing class:
    RolapResult

    static class RolapResult.CellInfoPool
    extends java.lang.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.

    • 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 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

      • CellInfoPool

        CellInfoPool​(int axisLength)
      • CellInfoPool

        CellInfoPool​(int axisLength,
                     int initialSize)