Class CallNode

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

public class CallNode extends Object implements ParseTreeNode
A parse tree node representing a call to a function or operator.

Examples of calls include:

  • 5 + 2, a call to the infix arithmetic operator '+'
  • [Measures].[Unit Sales] IS NULL, a call applying the postfix operator IS NULL to a member expression
  • CrossJoin({[Gender].Children}, {[Store]}), a call to the CrossJoin function
  • [Gender].Children, a call to the Children operator, which has property syntax
  • [Gender].Properties("FORMAT_STRING"), a call to the Properties operator, which has method syntax
Since:
Jan 6, 2006
Author:
jhyde
  • Constructor Details

    • CallNode

      public CallNode(ParseRegion region, String name, Syntax syntax, List<ParseTreeNode> args)
      Creates a CallNode.

      The syntax argument determines whether this is a prefix, infix or postfix operator, a function call, and so forth.

      The list of arguments args must be specified, even if there are zero arguments, and each argument must be not null.

      The type is initially null, but can be set using setType(org.olap4j.type.Type) after validation.

      Parameters:
      region - Region of source code
      name - Name of operator or function
      syntax - Syntax of call
      args - List of zero or more arguments
    • CallNode

      public CallNode(ParseRegion region, String name, Syntax syntax, ParseTreeNode... args)
      Creates an CallNode using a variable number of arguments.

      The syntax argument determines whether this is a prefix, infix or postfix operator, a function call, and so forth.

      The list of arguments args must be specified, even if there are zero arguments, and each argument must be not null.

      Parameters:
      region - Region of source code
      name - Name of operator or function
      syntax - Syntax of call
      args - List of zero or more arguments
  • 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
    • setType

      public void setType(Type type)
      Sets the type of this CallNode.

      Typically, this method would be called by the validator when it has deduced the argument types, chosen between any overloaded functions or operators, and determined the result type of the function or operator.

      Parameters:
      type - Result type of this call
    • 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
    • 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
    • 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
    • getOperatorName

      public String getOperatorName()
      Returns the name of the function or operator.
      Returns:
      name of the function or operator
    • getSyntax

      public Syntax getSyntax()
      Returns the syntax of this call.
      Returns:
      the syntax of the call
    • getArgList

      public List<ParseTreeNode> getArgList()
      Returns the list of arguments to this call.
      Returns:
      list of arguments
    • deepCopy

      public CallNode 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
    • hashCode

      public int hashCode()
      Overrides:
      hashCode in class Object
    • equals

      public boolean equals(Object obj)
      Overrides:
      equals in class Object