org.olap4j.mdx
Class CallNode

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

public class CallNode
extends java.lang.Object
implements ParseTreeNode

A parse tree node representing a call to a function or operator.

Examples of calls include:

Since:
Jan 6, 2006
Version:
$Id: CallNode.java 247 2009-06-20 05:52:40Z jhyde $
Author:
jhyde

Constructor Summary
CallNode(ParseRegion region, java.lang.String name, Syntax syntax, java.util.List<ParseTreeNode> args)
          Creates a CallNode.
CallNode(ParseRegion region, java.lang.String name, Syntax syntax, ParseTreeNode... args)
          Creates an CallNode using a variable number of arguments.
 
Method Summary
<T> T
accept(ParseTreeVisitor<T> visitor)
          Accepts a visitor to this MDX parse tree node.
 CallNode deepCopy()
          Creates a deep copy of this ParseTreeNode object.
 java.util.List<ParseTreeNode> getArgList()
          Returns the list of arguments to this call.
 java.lang.String getOperatorName()
          Returns the name of the function or operator.
 ParseRegion getRegion()
          Returns the region of the source code which this node was created from, if it was created by parsing.
 Syntax getSyntax()
          Returns the syntax of this call.
 Type getType()
          Returns the type of this expression.
 void setType(Type type)
          Sets the type of this CallNode.
 void unparse(ParseTreeWriter writer)
          Converts this node into MDX text.
 
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

CallNode

public CallNode(ParseRegion region,
                java.lang.String name,
                Syntax syntax,
                java.util.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,
                java.lang.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 Detail

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 java.lang.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 java.util.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

SourceForge.net_Logo