public class CallNode extends Object implements ParseTreeNode
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 expressionCrossJoin({[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
Constructor and Description |
---|
CallNode(ParseRegion region,
String name,
Syntax syntax,
List<ParseTreeNode> args)
Creates a CallNode.
|
CallNode(ParseRegion region,
String name,
Syntax syntax,
ParseTreeNode... args)
Creates an CallNode using a variable number of arguments.
|
Modifier and Type | Method and 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(Object obj) |
List<ParseTreeNode> |
getArgList()
Returns the list of arguments to this call.
|
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.
|
public CallNode(ParseRegion region, String name, Syntax syntax, List<ParseTreeNode> args)
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.
region
- Region of source codename
- Name of operator or functionsyntax
- Syntax of callargs
- List of zero or more argumentspublic CallNode(ParseRegion region, String name, Syntax syntax, ParseTreeNode... args)
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.
region
- Region of source codename
- Name of operator or functionsyntax
- Syntax of callargs
- List of zero or more argumentspublic ParseRegion getRegion()
ParseTreeNode
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.
getRegion
in interface ParseTreeNode
public void setType(Type type)
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.
type
- Result type of this callpublic Type getType()
ParseTreeNode
Returns null if this node is not an expression, for instance a
SELECT
node.
getType
in interface ParseTreeNode
public void unparse(ParseTreeWriter writer)
ParseTreeNode
unparse
in interface ParseTreeNode
writer
- Parse tree writerpublic <T> T accept(ParseTreeVisitor<T> visitor)
ParseTreeNode
The implementation should generally dispatches to the
ParseTreeVisitor.visit(org.olap4j.mdx.SelectNode)
method appropriate to the type of expression.
accept
in interface ParseTreeNode
visitor
- Visitorpublic String getOperatorName()
public Syntax getSyntax()
public List<ParseTreeNode> getArgList()
public CallNode deepCopy()
ParseTreeNode
Note: implementing classes can return the concrete type instead of ParseTreeNode (using Java 1.5 covariant return types)
deepCopy
in interface ParseTreeNode