org.olap4j.mdx
Class LiteralNode

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

public class LiteralNode
extends java.lang.Object
implements ParseTreeNode

Represents a constant value, such as a string or number, in a parse tree.

Symbols, such as the ASC keyword in Order([Store].Members, [Measures].[Unit Sales], ASC), are also represented as Literals.

A LiteralNode is immutable.

Version:
$Id: LiteralNode.java 229 2009-05-08 19:11:29Z jhyde $
Author:
jhyde

Method Summary
<T> T
accept(ParseTreeVisitor<T> visitor)
          Accepts a visitor to this MDX parse tree node.
static LiteralNode create(ParseRegion region, java.lang.Double value)
          Creates a floating-point numeric literal.
static LiteralNode create(ParseRegion region, java.lang.Integer value)
          Creates an integer literal.
static LiteralNode createNull(ParseRegion region)
          Creates a literal with the NULL value.
static LiteralNode createString(ParseRegion region, java.lang.String value)
          Creates a string literal.
static LiteralNode createSymbol(ParseRegion region, java.lang.String value)
          Creates a symbol literal.
 LiteralNode deepCopy()
          Creates a deep copy of this ParseTreeNode object.
 ParseRegion getRegion()
          Returns the region of the source code which this node was created from, if it was created by parsing.
 Type getType()
          Returns the type of this expression.
 java.lang.Object getValue()
          Returns the value of this literal.
 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
 

Method Detail

createNull

public static LiteralNode createNull(ParseRegion region)
Creates a literal with the NULL value.

Parameters:
region - Region of source code
Returns:
literal representing the NULL value

createString

public static LiteralNode createString(ParseRegion region,
                                       java.lang.String value)
Creates a string literal.

Parameters:
region - Region of source code
value - String value
Returns:
literal representing the string value
See Also:
createSymbol(org.olap4j.mdx.ParseRegion, java.lang.String)

createSymbol

public static LiteralNode createSymbol(ParseRegion region,
                                       java.lang.String value)
Creates a symbol literal.

Parameters:
region - Region of source code
value - Name of symbol
Returns:
literal representing the symbol value
See Also:
createString(org.olap4j.mdx.ParseRegion, java.lang.String)

create

public static LiteralNode create(ParseRegion region,
                                 java.lang.Double value)
Creates a floating-point numeric literal.

Parameters:
region - Region of source code
value - Value of literal; must not be null
Returns:
literal representing the floating-point value

create

public static LiteralNode create(ParseRegion region,
                                 java.lang.Integer value)
Creates an integer literal.

Parameters:
region - Region of source code
value - Value of literal; must not be null
Returns:
literal representing the integer value

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

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

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

getValue

public java.lang.Object getValue()
Returns the value of this literal.

Returns:
value

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

deepCopy

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