org.olap4j.mdx
Class SelectNode

java.lang.Object
  extended by org.olap4j.mdx.SelectNode
All Implemented Interfaces:
ParseTreeNode

public class SelectNode
extends Object
implements ParseTreeNode

Parse tree model for an MDX SELECT statement.

Since:
Jun 4, 2007
Version:
$Id: SelectNode.java 482 2012-01-05 23:27:27Z jhyde $
Author:
jhyde

Constructor Summary
SelectNode()
          Creates an empty SelectNode.
SelectNode(ParseRegion region, List<ParseTreeNode> withList, List<AxisNode> axisList, ParseTreeNode from, AxisNode filterAxis, List<IdentifierNode> cellPropertyList)
          Creates a SelectNode.
 
Method Summary
<T> T
accept(ParseTreeVisitor<T> visitor)
          Accepts a visitor to this MDX parse tree node.
 SelectNode deepCopy()
          Creates a deep copy of this ParseTreeNode object.
 List<AxisNode> getAxisList()
          Returns a list of axes in this SelectNode.
 List<IdentifierNode> getCellPropertyList()
          Returns a list of cell properties in this SelectNode.
 AxisNode getFilterAxis()
          Returns the filter axis defined by the WHERE clause of this SelectNode.
 ParseTreeNode getFrom()
          Returns the node representing the FROM clause of this SELECT statement.
 ParseRegion getRegion()
          Returns the region of the source code which this node was created from, if it was created by parsing.
 Type getType()
          Returns the type of this expression.
 List<ParseTreeNode> getWithList()
          Returns a list of calculated members and sets defined as the WITH clause of this SelectNode.
 void setFrom(ParseTreeNode from)
          Sets the FROM clause of this SELECT statement.
 String toString()
           
 void unparse(ParseTreeWriter writer)
          Converts this node into MDX text.
 
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Constructor Detail

SelectNode

public SelectNode(ParseRegion region,
                  List<ParseTreeNode> withList,
                  List<AxisNode> axisList,
                  ParseTreeNode from,
                  AxisNode filterAxis,
                  List<IdentifierNode> cellPropertyList)
Creates a SelectNode.

Parameters:
region - Region of source code from which this node was created
withList - List of members and sets defined in this query using a WITH clause
axisList - List of axes
from - Contents of FROM clause (name of cube, or subquery)
filterAxis - Filter axis
cellPropertyList - List of properties

SelectNode

public SelectNode()
Creates an empty SelectNode.

The contents of the SelectNode, such as the axis list, can be populated after construction.

Method Detail

getRegion

public ParseRegion getRegion()
Description copied from interface: ParseTreeNode
Returns the region of the source code which this node was created from, if it was created by parsing.

A non-leaf node's region will encompass the regions of all of its children. For example, a the region of a function call node Crossjoin([Gender], {[Store].[USA]}) stretches from the first character of the function name to the closing parenthesis.

Region may be null, if the node was created programmatically, not from a piece of source code.

Specified by:
getRegion in interface ParseTreeNode
Returns:
Region of the source code this node was created from, if it was created by parsing

accept

public <T> T accept(ParseTreeVisitor<T> visitor)
Description copied from interface: ParseTreeNode
Accepts a visitor to this MDX parse tree node.

The implementation should generally dispatches to the ParseTreeVisitor.visit(org.olap4j.mdx.SelectNode) method appropriate to the type of expression.

Specified by:
accept in interface ParseTreeNode
Parameters:
visitor - Visitor
Returns:
T, the specific return type of the visitor

getType

public Type getType()
Description copied from interface: ParseTreeNode
Returns the type of this expression.

Returns null if this node is not an expression, for instance a SELECT node.

Specified by:
getType in interface ParseTreeNode
Returns:
type of this expression

toString

public String toString()
Overrides:
toString in class Object

unparse

public void unparse(ParseTreeWriter writer)
Description copied from interface: ParseTreeNode
Converts this node into MDX text.

Specified by:
unparse in interface ParseTreeNode
Parameters:
writer - Parse tree writer

getWithList

public List<ParseTreeNode> getWithList()
Returns a list of calculated members and sets defined as the WITH clause of this SelectNode.

For example, the WITH clause of query

WITH MEMBER [Measures].[Foo] AS ' [Measures].[Unit Sales] * 2 ' SET [Customers].[Top] AS ' TopCount([Customers].Members, 10) ' SELECT FROM [Sales]
contains one WithMemberNode and one WithSetNode.

The returned list is mutable.

Returns:
list of calculated members and sets

getAxisList

public List<AxisNode> getAxisList()
Returns a list of axes in this SelectNode.

The returned list is mutable.

Returns:
list of axes

getFilterAxis

public AxisNode getFilterAxis()
Returns the filter axis defined by the WHERE clause of this SelectNode.

Never returns null. If there is no WHERE clause, returns an AxisNode for which AxisNode.getExpression() returns null.

You can modify the filter expression by calling AxisNode.getExpression() on the filter AxisNode; null means that there is no filter axis.

Returns:
filter axis

getFrom

public ParseTreeNode getFrom()
Returns the node representing the FROM clause of this SELECT statement. The node is typically an IdentifierNode, a CubeNode or a SelectNode.

Returns:
FROM clause

setFrom

public void setFrom(ParseTreeNode from)
Sets the FROM clause of this SELECT statement.

fromNode should typically by an IdentifierNode containing the cube name, or a CubeNode referencing an explicit Cube object.

Parameters:
from - FROM clause

getCellPropertyList

public List<IdentifierNode> getCellPropertyList()
Returns a list of cell properties in this SelectNode.

The returned list is mutable.

Returns:
list of cell properties

deepCopy

public SelectNode deepCopy()
Description copied from interface: ParseTreeNode
Creates a deep copy of this ParseTreeNode object.

Note: implementing classes can return the concrete type instead of ParseTreeNode (using Java 1.5 covariant return types)

Specified by:
deepCopy in interface ParseTreeNode
Returns:
The deep copy of this ParseTreeNode

SourceForge.net_Logo