Class ParameterNode

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

public class ParameterNode extends Object implements ParseTreeNode
A parameter to an MDX query.

Not all dialects of MDX support parameters. If a dialect supports parameters, the driver for that dialect should extend the parser to introduce a ParameterNode into the parse tree wherever a parameter is encountered.

For example, in Mondrian's dialect of MDX, a call to the Param(name, type, defaultValueExpr) function introduces a parameter, and ParamRef(name) creates a reference to a parameter defined elsewhere in the query.

  • Constructor Details

    • ParameterNode

      public ParameterNode(ParseRegion region, String name, Type type, ParseTreeNode defaultValueExpression)
      Creates a ParameterNode.

      The name must not be null, and the defaultValueExpression must be consistent with the type.

      Parameters:
      region - Region of source code
      name - Name of parameter
      type - Type of parameter
      defaultValueExpression - Expression which yields the default value of the parameter
  • 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
    • 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
    • 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
    • getName

      public String getName()
      Returns the name of this parameter.
      Returns:
      name of this parameter
    • setName

      public void setName(String name)
      Sets the name of this parameter.
      Parameters:
      name - Parameter name
    • setType

      public void setType(Type type)
      Sets the type of this parameter.
      Parameters:
      type - Type
    • getDefaultValueExpression

      public ParseTreeNode getDefaultValueExpression()
      Returns the expression which yields the default value of this parameter.
      Returns:
      expression which yields the default value of this parameter
    • setDefaultValueExpression

      public void setDefaultValueExpression(ParseTreeNode defaultValueExpression)
      Sets the expression which yields the default value of this parameter.
      Parameters:
      defaultValueExpression - default value expression
    • deepCopy

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