|
|||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Objectorg.olap4j.mdx.IdentifierNode
public class IdentifierNode
Multi-part identifier.
An identifier is immutable.
An identifer consists of one or more IdentifierNode.Segment
s. A segment is
either:
CA
',
[San Francisco]
', or
&[Key 1]&Key2&[5]
'.
Segment types are indicated by the IdentifierNode.Quoting
enumeration.
A key segment is of type IdentifierNode.Quoting.KEY
, and has one or more
component parts accessed via the
IdentifierNode.Segment.getKeyParts()
method. The parts
are of type IdentifierNode.Quoting.UNQUOTED
or IdentifierNode.Quoting.QUOTED
.
A simple example is the identifier Measures.[Unit Sales]
. It
has two segments:
A more complex example illustrates a compound key. The identifier [Customers].[City].&[San Francisco]&CA&USA.&[cust1234]
contains four segments as follows:
KEY
.
It has 3 sub-segments:
Nested Class Summary | |
---|---|
static class |
IdentifierNode.KeySegment
Segment that represents a key or compound key. |
static class |
IdentifierNode.NameSegment
Component in a compound identifier that describes the name of an object. |
static class |
IdentifierNode.Quoting
Enumeration of styles by which the component of an identifier can be quoted. |
static interface |
IdentifierNode.Segment
Component in a compound identifier. |
Constructor Summary | |
---|---|
IdentifierNode(IdentifierNode.Segment... segments)
Creates an identifier containing one or more segments. |
|
IdentifierNode(java.util.List<IdentifierNode.Segment> segments)
Creates an identifier containing a list of segments. |
Method Summary | ||
---|---|---|
|
accept(ParseTreeVisitor<T> visitor)
Accepts a visitor to this MDX parse tree node. |
|
IdentifierNode |
append(IdentifierNode.Segment segment)
Returns a new Identifier consisting of this one with another segment appended. |
|
IdentifierNode |
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. |
|
java.util.List<IdentifierNode.Segment> |
getSegmentList()
Returns the list of segments which consistitute this identifier. |
|
Type |
getType()
Returns the type of this expression. |
|
static java.util.List<IdentifierNode.Segment> |
parseIdentifier(java.lang.String identifier)
Parses an MDX identifier into a list of segments. |
|
java.lang.String |
toString()
|
|
void |
unparse(ParseTreeWriter writer)
Converts this node into MDX text. |
Methods inherited from class java.lang.Object |
---|
equals, getClass, hashCode, notify, notifyAll, wait, wait, wait |
Constructor Detail |
---|
public IdentifierNode(IdentifierNode.Segment... segments)
segments
- Array of Segments, each consisting of a name and quoting
stylepublic IdentifierNode(java.util.List<IdentifierNode.Segment> segments)
segments
- List of segmentsMethod Detail |
---|
public Type getType()
ParseTreeNode
Returns null if this node is not an expression, for instance a
SELECT
node.
getType
in interface ParseTreeNode
public java.util.List<IdentifierNode.Segment> getSegmentList()
public 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 IdentifierNode append(IdentifierNode.Segment segment)
segment
- Name of segment
public <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
- Visitor
public void unparse(ParseTreeWriter writer)
ParseTreeNode
unparse
in interface ParseTreeNode
writer
- Parse tree writerpublic java.lang.String toString()
toString
in class java.lang.Object
public IdentifierNode deepCopy()
ParseTreeNode
Note: implementing classes can return the concrete type instead of ParseTreeNode (using Java 1.5 covariant return types)
deepCopy
in interface ParseTreeNode
public static java.util.List<IdentifierNode.Segment> parseIdentifier(java.lang.String identifier)
Each segment is a name combined with a description of how the name
was quoted
. For example,
parseIdentifier(
"[Customers].USA.[South Dakota].[Sioux Falls].&[1245]")
returns
{ Segment("Customers", QUOTED),
Segment("USA", UNQUOTED),
Segment("South Dakota", QUOTED),
Segment("Sioux Falls", QUOTED),
Segment("1245", KEY) }
identifier
- MDX identifier string
java.lang.IllegalArgumentException
- if the format of the identifier is
invalidCube.lookupMember(String[])
|
|
||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |