mondrian.rolap.agg
Class AggregationManager

java.lang.Object
  extended by mondrian.rolap.RolapAggregationManager
      extended by mondrian.rolap.agg.AggregationManager

public class AggregationManager
extends RolapAggregationManager

RolapAggregationManager manages all Aggregations in the system. It is a singleton class.

Since:
30 August, 2001
Author:
jhyde

Nested Class Summary
static class AggregationManager.PinSetImpl
          Implementation of RolapAggregationManager.PinSet using a HashSet.
 
Nested classes/interfaces inherited from class mondrian.rolap.RolapAggregationManager
RolapAggregationManager.PinSet
 
Field Summary
 SegmentCacheManager cacheMgr
           
 
Constructor Summary
AggregationManager(MondrianServer server)
          Creates the AggregationManager.
 
Method Summary
 RolapAggregationManager.PinSet createPinSet()
          Creates a RolapAggregationManager.PinSet.
static AggStar findAgg(RolapStar star, BitKey levelBitKey, BitKey measureBitKey, boolean[] rollup)
          Finds an aggregate table in the given star which has the desired levels and measures.
static Pair<String,List<SqlStatement.Type>> generateSql(GroupingSetsList groupingSetsList, List<StarPredicate> compoundPredicateList)
          Generates the query to retrieve the cells for a list of segments.
 CacheControl getCacheControl(RolapConnection connection, PrintWriter pw)
          Returns an API with which to explicitly manage the contents of the cache.
 Object getCellFromAllCaches(CellRequest request)
           
 Object getCellFromCache(CellRequest request)
          Retrieves the value of a cell from the cache.
 Object getCellFromCache(CellRequest request, RolapAggregationManager.PinSet pinSet)
           
 String getDrillThroughSql(DrillThroughCellRequest request, StarPredicate starPredicateSlicer, List<Exp> fields, boolean countOnly)
          Generates a SQL statement which will return the rows which contribute to this request.
 org.apache.log4j.Logger getLogger()
          Returns the log4j logger.
static AggregationManager instance()
          Deprecated. No longer a singleton, and will be removed in mondrian-4. Use MondrianServer.getAggregationManager(). To get a server, call MondrianServer.forConnection(mondrian.olap.Connection), passing in a null connection if you absolutely must.
static void loadAggregation(SegmentCacheManager cacheMgr, int cellRequestCount, List<RolapStar.Measure> measures, RolapStar.Column[] columns, AggregationKey aggregationKey, StarColumnPredicate[] predicates, GroupingSetsCollector groupingSetsCollector, List<Future<Map<Segment,SegmentWithData>>> segmentFutures)
          Called by FastBatchingCellReader.load where the RolapStar creates an Aggregation if needed.
 void shutdown()
           
 
Methods inherited from class mondrian.rolap.RolapAggregationManager
getCacheCellReader, makeCacheRegion, makeDrillThroughRequest, makeRequest, makeRequest
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

cacheMgr

public final SegmentCacheManager cacheMgr
Constructor Detail

AggregationManager

public AggregationManager(MondrianServer server)
Creates the AggregationManager.

Method Detail

getLogger

public final org.apache.log4j.Logger getLogger()
Returns the log4j logger.

Returns:
Logger

instance

public static AggregationManager instance()
Deprecated. No longer a singleton, and will be removed in mondrian-4. Use MondrianServer.getAggregationManager(). To get a server, call MondrianServer.forConnection(mondrian.olap.Connection), passing in a null connection if you absolutely must.

Returns or creates the singleton.


loadAggregation

public static void loadAggregation(SegmentCacheManager cacheMgr,
                                   int cellRequestCount,
                                   List<RolapStar.Measure> measures,
                                   RolapStar.Column[] columns,
                                   AggregationKey aggregationKey,
                                   StarColumnPredicate[] predicates,
                                   GroupingSetsCollector groupingSetsCollector,
                                   List<Future<Map<Segment,SegmentWithData>>> segmentFutures)
Called by FastBatchingCellReader.load where the RolapStar creates an Aggregation if needed.

Parameters:
cacheMgr - Cache manager
cellRequestCount - Number of missed cells that led to this request
measures - Measures to load
columns - this is the CellRequest's constrained columns
aggregationKey - this is the CellRequest's constraint key
predicates - Array of constraints on each column
groupingSetsCollector - grouping sets collector
segmentFutures - List of futures into which each statement will place a list of the segments it has loaded, when it completes

getCacheControl

public CacheControl getCacheControl(RolapConnection connection,
                                    PrintWriter pw)
Returns an API with which to explicitly manage the contents of the cache.

Parameters:
connection - Server whose cache to control
pw - Print writer, for tracing
Returns:
CacheControl API

getCellFromCache

public Object getCellFromCache(CellRequest request)
Description copied from class: RolapAggregationManager
Retrieves the value of a cell from the cache.

Specified by:
getCellFromCache in class RolapAggregationManager
Parameters:
request - Cell request
Returns:
Cell value, or null if cell is not in any aggregation in cache, or Util.nullValue if cell's value is null

getCellFromCache

public Object getCellFromCache(CellRequest request,
                               RolapAggregationManager.PinSet pinSet)
Specified by:
getCellFromCache in class RolapAggregationManager

getCellFromAllCaches

public Object getCellFromAllCaches(CellRequest request)

getDrillThroughSql

public String getDrillThroughSql(DrillThroughCellRequest request,
                                 StarPredicate starPredicateSlicer,
                                 List<Exp> fields,
                                 boolean countOnly)
Description copied from class: RolapAggregationManager
Generates a SQL statement which will return the rows which contribute to this request.

Specified by:
getDrillThroughSql in class RolapAggregationManager
Parameters:
request - Cell request
starPredicateSlicer - A StarPredicate representing slicer positions that could not be represented by the CellRequest, or null if no additional predicate is necessary.
countOnly - If true, return a statment which returns only the count
Returns:
SQL statement

generateSql

public static Pair<String,List<SqlStatement.Type>> generateSql(GroupingSetsList groupingSetsList,
                                                               List<StarPredicate> compoundPredicateList)
Generates the query to retrieve the cells for a list of segments. Called by Segment.load.

Returns:
A pair consisting of a SQL statement and a list of suggested types of columns

findAgg

public static AggStar findAgg(RolapStar star,
                              BitKey levelBitKey,
                              BitKey measureBitKey,
                              boolean[] rollup)
Finds an aggregate table in the given star which has the desired levels and measures. Returns null if no aggregate table is suitable.

If there no aggregate is an exact match, returns a more granular aggregate which can be rolled up, and sets rollup to true. If one or more of the measures are distinct-count measures rollup is possible only in limited circumstances.

Parameters:
star - Star
levelBitKey - Set of levels
measureBitKey - Set of measures
rollup - Out parameter, is set to true if the aggregate is not an exact match
Returns:
An aggregate, or null if none is suitable.

createPinSet

public RolapAggregationManager.PinSet createPinSet()
Description copied from class: RolapAggregationManager
Creates a RolapAggregationManager.PinSet.

Specified by:
createPinSet in class RolapAggregationManager
Returns:
a new PinSet

shutdown

public void shutdown()

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