mondrian.rolap.agg
Class AbstractQuerySpec

java.lang.Object
  extended by mondrian.rolap.agg.AbstractQuerySpec
All Implemented Interfaces:
QuerySpec
Direct Known Subclasses:
DrillThroughQuerySpec, SegmentArrayQuerySpec

public abstract class AbstractQuerySpec
extends Object
implements QuerySpec

Base class for QuerySpec implementations.

Author:
jhyde, Richard M. Emberson
 

Field Summary
protected  boolean countOnly
           
 
Constructor Summary
protected AbstractQuerySpec(RolapStar star, boolean countOnly)
          Creates an AbstractQuerySpec.
 
Method Summary
protected  void addGroupingFunction(SqlQuery sqlQuery)
           
protected  void addGroupingSets(SqlQuery sqlQuery)
           
protected  void addMeasure(int i, SqlQuery sqlQuery)
          Adds a measure to a query.
protected  void distinctGenerateSql(SqlQuery outerSqlQuery, boolean countOnly)
          Generates a SQL query to retrieve the values in this segment using an algorithm which converts distinct-aggregates to non-distinct aggregates over subqueries.
protected  void extraPredicates(SqlQuery sqlQuery)
          Adds predicates not associated with columns.
 String generateSqlQuery()
           
protected  int getDistinctMeasureCount()
          Returns the number of measures whose aggregation function is distinct-count.
protected  List<StarPredicate> getPredicateList()
          Returns a list of predicates not associated with a particular column.
 RolapStar getStar()
           
protected abstract  boolean isAggregate()
           
protected  boolean isOrdered()
          Whether to add an ORDER BY clause to make results deterministic.
protected  SqlQuery newSqlQuery()
          Creates a query object.
protected  void nonDistinctGenerateSql(SqlQuery sqlQuery)
           
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 
Methods inherited from interface mondrian.rolap.agg.QuerySpec
getColumnAlias, getColumnPredicate, getColumns, getMeasure, getMeasureAlias, getMeasureCount
 

Field Detail

countOnly

protected final boolean countOnly
Constructor Detail

AbstractQuerySpec

protected AbstractQuerySpec(RolapStar star,
                            boolean countOnly)
Creates an AbstractQuerySpec.

Parameters:
star - Star which defines columns of interest and their relationships
countOnly - If true, generate no GROUP BY clause, so the query returns a single row containing a grand total
Method Detail

newSqlQuery

protected SqlQuery newSqlQuery()
Creates a query object.

Returns:
a new query object

getStar

public RolapStar getStar()
Specified by:
getStar in interface QuerySpec

addMeasure

protected void addMeasure(int i,
                          SqlQuery sqlQuery)
Adds a measure to a query.

Parameters:
i - Ordinal of measure
sqlQuery - Query object

isAggregate

protected abstract boolean isAggregate()

nonDistinctGenerateSql

protected void nonDistinctGenerateSql(SqlQuery sqlQuery)

isOrdered

protected boolean isOrdered()
Whether to add an ORDER BY clause to make results deterministic. Necessary if query returns more than one row and results are for human consumption.

Returns:
whether to sort query

generateSqlQuery

public String generateSqlQuery()
Specified by:
generateSqlQuery in interface QuerySpec

addGroupingFunction

protected void addGroupingFunction(SqlQuery sqlQuery)

addGroupingSets

protected void addGroupingSets(SqlQuery sqlQuery)

getDistinctMeasureCount

protected int getDistinctMeasureCount()
Returns the number of measures whose aggregation function is distinct-count.

Returns:
Number of distinct-count measures

distinctGenerateSql

protected void distinctGenerateSql(SqlQuery outerSqlQuery,
                                   boolean countOnly)
Generates a SQL query to retrieve the values in this segment using an algorithm which converts distinct-aggregates to non-distinct aggregates over subqueries.

Parameters:
outerSqlQuery - Query to modify
countOnly - If true, only generate a single row: no need to generate a GROUP BY clause or put any constraining columns in the SELECT clause

extraPredicates

protected void extraPredicates(SqlQuery sqlQuery)
Adds predicates not associated with columns.

Parameters:
sqlQuery - Query

getPredicateList

protected List<StarPredicate> getPredicateList()
Returns a list of predicates not associated with a particular column.

Returns:
list of non-column predicates

SourceForge.net_Logo