org.olap4j.mdx
public class SelectNode extends Object implements ParseTreeNode
Constructor and Description |
---|
SelectNode()
Creates an empty SelectNode.
|
SelectNode(ParseRegion region,
List<ParseTreeNode> withList,
List<AxisNode> axisList,
ParseTreeNode from,
AxisNode filterAxis,
List<IdentifierNode> cellPropertyList)
Creates a SelectNode.
|
Modifier and Type | Method and Description |
---|---|
<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.
|
public SelectNode(ParseRegion region, List<ParseTreeNode> withList, List<AxisNode> axisList, ParseTreeNode from, AxisNode filterAxis, List<IdentifierNode> cellPropertyList)
region
- Region of source code from which this node was createdwithList
- List of members and sets defined in this query using
a WITH
clauseaxisList
- List of axesfrom
- Contents of FROM clause (name of cube, or subquery)filterAxis
- Filter axiscellPropertyList
- List of propertiespublic SelectNode()
The contents of the SelectNode, such as the axis list, can be populated after construction.
public ParseRegion getRegion()
ParseTreeNode
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.
getRegion
in interface ParseTreeNode
public <T> T accept(ParseTreeVisitor<T> visitor)
ParseTreeNode
The implementation should generally dispatches to the
ParseTreeVisitor.visit(org.olap4j.mdx.SelectNode)
method appropriate to the type of expression.
accept
in interface ParseTreeNode
visitor
- Visitorpublic Type getType()
ParseTreeNode
Returns null if this node is not an expression, for instance a
SELECT
node.
getType
in interface ParseTreeNode
public void unparse(ParseTreeWriter writer)
ParseTreeNode
unparse
in interface ParseTreeNode
writer
- Parse tree writerpublic List<ParseTreeNode> getWithList()
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.
public List<AxisNode> getAxisList()
The returned list is mutable.
public AxisNode getFilterAxis()
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.
public ParseTreeNode getFrom()
IdentifierNode
, a CubeNode
or
a SelectNode
.public void setFrom(ParseTreeNode from)
fromNode
should typically by an
IdentifierNode
containing the cube name, or
a CubeNode
referencing an explicit
Cube
object.
from
- FROM clausepublic List<IdentifierNode> getCellPropertyList()
The returned list is mutable.
public SelectNode deepCopy()
ParseTreeNode
Note: implementing classes can return the concrete type instead of ParseTreeNode (using Java 1.5 covariant return types)
deepCopy
in interface ParseTreeNode