Class AxisNode

java.lang.Object
org.olap4j.mdx.AxisNode
All Implemented Interfaces:
ParseTreeNode

public class AxisNode extends Object implements ParseTreeNode
An axis in an MDX query. For example, the typical MDX query has two axes, which appear as the "ON COLUMNS" and "ON ROWS" clauses.
  • Constructor Details

    • AxisNode

      public AxisNode(ParseRegion region, boolean nonEmpty, Axis axis, List<IdentifierNode> dimensionProperties, ParseTreeNode expression)
      Creates an axis.
      Parameters:
      region - Region of source code
      nonEmpty - Whether to filter out members of this axis whose cells are all empty
      axis - Which axis (ROWS, COLUMNS, etc.)
      dimensionProperties - List of dimension properties; if null, empty list is assumed
      expression - Expression to populate the axis
  • 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
    • getAxis

      public Axis getAxis()
      Returns the name of the axis this axis expression is populating.
      Returns:
      axis name
    • isNonEmpty

      public boolean isNonEmpty()
      Returns whether the axis has the NON EMPTY property set.
      Returns:
      whether the axis is NON EMPTY
    • setNonEmpty

      public void setNonEmpty(boolean nonEmpty)
      Sets whether the axis has the NON EMPTY property set. See isNonEmpty().
      Parameters:
      nonEmpty - whether the axis is NON EMPTY
    • getExpression

      public ParseTreeNode getExpression()
      Returns the expression which is used to compute the value of this axis.
      Returns:
      the expression which is used to compute the value of this axis
    • setExpression

      public void setExpression(ParseTreeNode expr)
      Sets the expression which is used to compute the value of this axis. See getExpression().
      Parameters:
      expr - the expression which is used to compute the value of this axis
    • 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
    • getDimensionProperties

      public List<IdentifierNode> getDimensionProperties()
      Returns the list of dimension properties of this axis.
      Returns:
      list of dimension properties
    • 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
    • deepCopy

      public AxisNode 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