Class CallNode
- java.lang.Object
-
- 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:
5 + 2
, a call to the infix arithmetic operator '+'[Measures].[Unit Sales] IS NULL
, a call applying thepostfix
operatorIS NULL
to a member expressionCrossJoin({[Gender].Children}, {[Store]})
, a call to theCrossJoin
function[Gender].Children
, a call to theChildren
operator, which hasproperty syntax
[Gender].Properties("FORMAT_STRING")
, a call to theProperties
operator, which hasmethod syntax
- Since:
- Jan 6, 2006
- Author:
- jhyde
-
-
Constructor Summary
Constructors Constructor Description 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
All Methods Instance Methods Concrete Methods Modifier and Type Method Description <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.boolean
equals(java.lang.Object obj)
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.int
hashCode()
void
setType(Type type)
Sets the type of this CallNode.void
unparse(ParseTreeWriter writer)
Converts this node into MDX text.
-
-
-
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 codename
- Name of operator or functionsyntax
- Syntax of callargs
- 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 codename
- Name of operator or functionsyntax
- Syntax of callargs
- 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 interfaceParseTreeNode
- 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 interfaceParseTreeNode
- 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 interfaceParseTreeNode
- 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 interfaceParseTreeNode
- 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 interfaceParseTreeNode
- Returns:
- The deep copy of this ParseTreeNode
-
hashCode
public int hashCode()
- Overrides:
hashCode
in classjava.lang.Object
-
equals
public boolean equals(java.lang.Object obj)
- Overrides:
equals
in classjava.lang.Object
-
-