Class SelectNode

java.lang.Object
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
Author:
jhyde
  • Constructor Details

    • 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 Details

    • 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