mondrian.rolap
Class RolapStar.Table

java.lang.Object
  extended by mondrian.rolap.RolapStar.Table
Enclosing class:
RolapStar

public static class RolapStar.Table
extends Object

Definition of a table in a star schema.

A 'table' is defined by a MondrianDef.RelationOrJoin so may, in fact, be a view.

Every table in the star schema except the fact table has a parent table, and a condition which specifies how it is joined to its parent. So the star schema is, in effect, a hierarchy with the fact table at its root.

 

Method Summary
(package private)  RolapStar.Table addJoin(RolapCube cube, MondrianDef.RelationOrJoin relationOrJoin, RolapStar.Condition joinCondition)
          Extends this 'leg' of the star by adding relation joined by joinCondition.
 void addToFrom(SqlQuery query, boolean failIfExists, boolean joinToParent)
          Adds this table to the FROM clause of a query, and also, if joinToParent, any join condition.
 boolean containsColumn(RolapStar.Column column)
           
 boolean containsColumn(String columnName)
          Returns whether this table has a column with the given name.
 boolean equals(Object obj)
           
 boolean equalsTableName(String tableName)
           
 RolapStar.Table findAncestor(String tableName)
          Returns an ancestor with a given alias, or null if not found.
 RolapStar.Table findChild(MondrianDef.Relation relation, RolapStar.Condition joinCondition)
          Returns a child relation which maps onto a given relation, or null if there is none.
 RolapStar.Table findDescendant(String seekAlias)
          Returns a descendant with a given alias, or null if none found.
 RolapStar.Table findTableWithLeftCondition(MondrianDef.Expression left)
          This is used during aggregate table validation to make sure that the mapping from for the aggregate join condition is valid.
 RolapStar.Table findTableWithLeftJoinCondition(String columnName)
          Finds the child table of the fact table with the given columnName used in its left join condition.
 String getAlias()
           
 List<RolapStar.Table> getChildren()
          Returns a list of child RolapStar.Tables.
 List<RolapStar.Column> getColumns()
          Returns a list of this table's RolapStar.Columns.
 RolapStar.Condition getJoinCondition()
          Returns the condition by which a dimension table is connected to its parent; or null if this is the fact table.
 RolapStar.Table getParentTable()
          Returns this table's parent table, or null if this is the fact table (which is at the center of the star).
 MondrianDef.Relation getRelation()
           
(package private)  RolapStar getStar()
           
 String getTableName()
          Sometimes one need to get to the "real" name when the table has been given an alias.
 int hashCode()
           
 boolean isFunky()
          Note: I do not think that this is ever true.
 RolapStar.Column lookupColumn(String columnName)
           
 RolapStar.Column lookupColumnByExpression(MondrianDef.Expression xmlExpr)
          Given a MondrianDef.Expression return a column with that expression or null.
 RolapStar.Column[] lookupColumns(String columnName)
          Returns an array of all columns in this star with a given name.
 RolapStar.Measure lookupMeasureByName(String cubeName, String name)
          Look up a RolapStar.Measure by its name.
(package private)  RolapStar.Column makeColumns(RolapCube cube, RolapCubeLevel level, RolapStar.Column parentColumn, String usagePrefix)
          This is only called by RolapCube.
(package private)  void makeMeasure(RolapBaseCubeMeasure measure)
           
 void print(PrintWriter pw, String prefix)
          Prints this table and its children.
 String toString()
           
 
Methods inherited from class java.lang.Object
clone, finalize, getClass, notify, notifyAll, wait, wait, wait
 

Method Detail

getJoinCondition

public RolapStar.Condition getJoinCondition()
Returns the condition by which a dimension table is connected to its parent; or null if this is the fact table.


getParentTable

public RolapStar.Table getParentTable()
Returns this table's parent table, or null if this is the fact table (which is at the center of the star).


lookupColumns

public RolapStar.Column[] lookupColumns(String columnName)
Returns an array of all columns in this star with a given name.


lookupColumn

public RolapStar.Column lookupColumn(String columnName)

lookupColumnByExpression

public RolapStar.Column lookupColumnByExpression(MondrianDef.Expression xmlExpr)
Given a MondrianDef.Expression return a column with that expression or null.


containsColumn

public boolean containsColumn(RolapStar.Column column)

lookupMeasureByName

public RolapStar.Measure lookupMeasureByName(String cubeName,
                                             String name)
Look up a RolapStar.Measure by its name. Returns null if not found.


getStar

RolapStar getStar()

getRelation

public MondrianDef.Relation getRelation()

getAlias

public String getAlias()

getTableName

public String getTableName()
Sometimes one need to get to the "real" name when the table has been given an alias.


makeMeasure

void makeMeasure(RolapBaseCubeMeasure measure)

makeColumns

RolapStar.Column makeColumns(RolapCube cube,
                             RolapCubeLevel level,
                             RolapStar.Column parentColumn,
                             String usagePrefix)
This is only called by RolapCube. If the RolapLevel has a non-null name expression then two columns will be made, otherwise only one. Updates the RolapLevel to RolapStar.Column mapping associated with this cube.

Parameters:
cube - Cube
level - Level
parentColumn - Parent column

addJoin

RolapStar.Table addJoin(RolapCube cube,
                        MondrianDef.RelationOrJoin relationOrJoin,
                        RolapStar.Condition joinCondition)
Extends this 'leg' of the star by adding relation joined by joinCondition. If the same expression is already present, does not create it again. Stores the unaliased table names to RolapStar.Table mapping associated with the input cube.


findChild

public RolapStar.Table findChild(MondrianDef.Relation relation,
                                 RolapStar.Condition joinCondition)
Returns a child relation which maps onto a given relation, or null if there is none.


findDescendant

public RolapStar.Table findDescendant(String seekAlias)
Returns a descendant with a given alias, or null if none found.


findAncestor

public RolapStar.Table findAncestor(String tableName)
Returns an ancestor with a given alias, or null if not found.


equalsTableName

public boolean equalsTableName(String tableName)

addToFrom

public void addToFrom(SqlQuery query,
                      boolean failIfExists,
                      boolean joinToParent)
Adds this table to the FROM clause of a query, and also, if joinToParent, any join condition.

Parameters:
query - Query to add to
failIfExists - Pass in false if you might have already added the table before and if that happens you want to do nothing.
joinToParent - Pass in true if you are constraining a cell calculation, false if you are retrieving members.

getChildren

public List<RolapStar.Table> getChildren()
Returns a list of child RolapStar.Tables.


getColumns

public List<RolapStar.Column> getColumns()
Returns a list of this table's RolapStar.Columns.


findTableWithLeftJoinCondition

public RolapStar.Table findTableWithLeftJoinCondition(String columnName)
Finds the child table of the fact table with the given columnName used in its left join condition. This is used by the AggTableManager while characterizing the fact table columns.


findTableWithLeftCondition

public RolapStar.Table findTableWithLeftCondition(MondrianDef.Expression left)
This is used during aggregate table validation to make sure that the mapping from for the aggregate join condition is valid. It returns the child table with the matching left join condition.


isFunky

public boolean isFunky()
Note: I do not think that this is ever true.


equals

public boolean equals(Object obj)
Overrides:
equals in class Object

hashCode

public int hashCode()
Overrides:
hashCode in class Object

toString

public String toString()
Overrides:
toString in class Object

print

public void print(PrintWriter pw,
                  String prefix)
Prints this table and its children.


containsColumn

public boolean containsColumn(String columnName)
Returns whether this table has a column with the given name.


SourceForge.net_Logo