Top Description Fields Constructors Methods
org.eclipse.persistence.jpa.jpql.parser

public final Class IdentificationVariable

extends AbstractExpression
Class Inheritance
Imports
java.util.List, .Locale, org.eclipse.persistence.jpa.jpql.WordParser

An identification variable is a valid identifier declared in the FROM clause of a query.

Requirements:

An identification variable can range over an entity, embeddable, or basic abstract schema type. An identification variable designates an instance of an abstract schema type or an element of a collection of abstract schema type instances.

Note that for identification variables referring to an instance of an association or collection represented as a java.util.Map, the identification variable is of the abstract schema type of the map value.

An identification variable always designates a reference to a single value. It is declared in one of three ways:

The identification variable declarations are evaluated from left to right in the FROM clause, and an identification variable declaration can use the result of a preceding identification variable declaration of the query string.

All identification variables used in the SELECT, WHERE, ORDER BY, GROUP BY, or HAVING clause of a SELECT or DELETE statement must be declared in the FROM clause. The identification variables used in the WHERE clause of an UPDATE statement must be declared in the UPDATE clause.

An identification variable is scoped to the query (or subquery) in which it is defined and is also visible to any subqueries within that query scope that do not define an identification variable of the same name.

Author
Pascal Filion
Since
2.3
Version
2.4

Field Summary

Modifier and TypeField and Description
private StateFieldPathExpression
stateFieldPathExpression

The virtual state field path expression having

private String
variableName

The uppercase version of the identification variable.

private boolean
virtual

Determines whether this identification variable is virtual, meaning it's not part of the query but is required for proper navigability.

Inherited from org.eclipse.persistence.jpa.jpql.parser.AbstractExpression:
COMMADOTDOUBLE_QUOTELEFT_CURLY_BRACKETLEFT_PARENTHESISNOT_DEFINEDRIGHT_CURLY_BRACKETRIGHT_PARENTHESISSINGLE_QUOTESPACEUNDERSCORE

Constructor Summary

AccessConstructor and Description
public
IdentificationVariable(AbstractExpression
The parent of this expression
parent
,
String
The actual identification variable
identificationVariable
)

Creates a new IdentificationVariable.

public
IdentificationVariable(AbstractExpression
The parent of this expression
parent
,
String
The actual identification variable
identificationVariable
,
boolean
Determines whether this identification variable is virtual, meaning it's not part of the query but is required for proper navigability
virtual
)

Creates a new IdentificationVariable.

Method Summary

Modifier and TypeMethod and Description
public void
accept(ExpressionVisitor
The ExpressionVisitor to visit this object
visitor
)

Implements org.eclipse.persistence.jpa.jpql.parser.Expression.accept.

Visits this Expression by the given visitor.
public void
acceptChildren(ExpressionVisitor
The visitor to visit the children of this object.
visitor
)

Implements org.eclipse.persistence.jpa.jpql.parser.Expression.acceptChildren.

Visits the children of this Expression.
protected void
addOrderedChildrenTo(List<Expression>
The list used to store the string representation of this AbstractExpression
children
)

Overrides org.eclipse.persistence.jpa.jpql.parser.AbstractExpression.addOrderedChildrenTo.

Adds the children of this AbstractExpression to the given list.
public JPQLQueryBNF
public StateFieldPathExpression

Returns:

The path expression that is qualified by the virtual identification variable
getStateFieldPathExpression
()

Returns the actual representation of the parsed information.

public String
getText()

Overrides org.eclipse.persistence.jpa.jpql.parser.AbstractExpression.getText.

Returns the encapsulated text of this AbstractExpression, which can be used in various ways, it can be a keyword, a literal, etc.
public String

Returns:

The uppercase version of the identification variable
getVariableName
()

Returns the identification variable, which has been changed to be upper case.

public boolean
isVirtual()

Overrides org.eclipse.persistence.jpa.jpql.parser.AbstractExpression.isVirtual.

Determines whether this AbstractExpression is virtual, meaning it's not part of the query but is required for proper navigability.
protected void
parse(WordParser
The text to parse based on the current position of the cursor
wordParser
,
boolean
Determines whether the parsing system should be tolerant, meaning if it should try to parse invalid or incomplete queries
tolerant
)

Implements abstract org.eclipse.persistence.jpa.jpql.parser.AbstractExpression.parse.

Parses the query by starting at the current position, which is part of the given WordParser.
public void
setVirtualIdentificationVariable(String
The identification variable that was generated to identify the "root" object
variableName
)

Sets a virtual identification variable because the abstract schema name was parsed without one.

public String
protected void
toParsedText(StringBuilder
The buffer used to append this Expression's string representation
writer
,
boolean
Determines whether the string representation should represent what was parsed, i.e. include any "virtual" whitespace (such as ending whitespace) and the actual case of the JPQL identifiers
actual
)

Implements abstract org.eclipse.persistence.jpa.jpql.parser.AbstractExpression.toParsedText.

Generates a string representation of this Expression, including its children, if it has any.
Inherited from org.eclipse.persistence.jpa.jpql.parser.AbstractExpression:
acceptUnknownVisitoracceptUnknownVisitoraddChildrenTobuildExpressionFromFallingBackbuildNullExpressionbuildStringExpressionbuildStringExpressionbuildUnknownExpressioncalculatePositionchildrenfindFallBackExpressionFactoryfindQueryBNFgetExpressionFactorygetExpressionRegistrygetGrammargetIdentifierVersiongetJPAVersiongetLengthgetOffsetgetParentgetQueryBNFgetRoothandleAggregatehandleCollectionisAncestorisIdentifierisNullisParsingCompleteisTolerantisUnknownorderedChildrenparseparseUsingExpressionFactorypopulatePositionrebuildActualTextrebuildParsedTextsetParentsetTextshouldParseWithFactoryFirstshouldSkipLiteraltoActualTexttoString

Field Detail

stateFieldPathExpressionback to summary
private StateFieldPathExpression stateFieldPathExpression

The virtual state field path expression having

variableNameback to summary
private String variableName

The uppercase version of the identification variable.

virtualback to summary
private boolean virtual

Determines whether this identification variable is virtual, meaning it's not part of the query but is required for proper navigability.

Constructor Detail

IdentificationVariableback to summary
public IdentificationVariable(AbstractExpression parent, String identificationVariable)

Creates a new IdentificationVariable.

Parameters
parent:AbstractExpression

The parent of this expression

identificationVariable:String

The actual identification variable

IdentificationVariableback to summary
public IdentificationVariable(AbstractExpression parent, String identificationVariable, boolean virtual)

Creates a new IdentificationVariable.

Parameters
parent:AbstractExpression

The parent of this expression

identificationVariable:String

The actual identification variable

virtual:boolean

Determines whether this identification variable is virtual, meaning it's not part of the query but is required for proper navigability

Method Detail

acceptback to summary
public void accept(ExpressionVisitor visitor)

Implements org.eclipse.persistence.jpa.jpql.parser.Expression.accept.

Doc from org.eclipse.persistence.jpa.jpql.parser.Expression.accept.

Visits this Expression by the given visitor.

Parameters
visitor:ExpressionVisitor

The ExpressionVisitor to visit this object

Annotations
@Override
acceptChildrenback to summary
public void acceptChildren(ExpressionVisitor visitor)

Implements org.eclipse.persistence.jpa.jpql.parser.Expression.acceptChildren.

Doc from org.eclipse.persistence.jpa.jpql.parser.Expression.acceptChildren.

Visits the children of this Expression. This method can be used to optimize traversing the children since a new list is not created every time children() is called.

This does not traverse the Expression sub-hierarchy, use a subclass of AbstractTraverseChildrenVisitor in order to traverse the entire sub-hierarchy.

Parameters
visitor:ExpressionVisitor

The visitor to visit the children of this object.

Annotations
@Override
addOrderedChildrenToback to summary
protected void addOrderedChildrenTo(List<Expression> children)

Overrides org.eclipse.persistence.jpa.jpql.parser.AbstractExpression.addOrderedChildrenTo.

Doc from org.eclipse.persistence.jpa.jpql.parser.AbstractExpression.addOrderedChildrenTo.

Adds the children of this AbstractExpression to the given list.

Parameters
children:List<Expression>

The list used to store the string representation of this AbstractExpression

Annotations
@Override
getQueryBNFback to summary
public JPQLQueryBNF getQueryBNF()

Implements org.eclipse.persistence.jpa.jpql.parser.Expression.getQueryBNF.

Doc from org.eclipse.persistence.jpa.jpql.parser.Expression.getQueryBNF.

Returns the BNF of this Expression.

Returns:JPQLQueryBNF

The JPQLQueryBNF, which represents the grammar of this Expression

Annotations
@Override
getStateFieldPathExpressionback to summary
public StateFieldPathExpression getStateFieldPathExpression()

Returns the actual representation of the parsed information. This method should only be called if isVirtual() returns true. This is valid in an UPDATE and DELETE queries where the identification variable is not specified.

Returns:StateFieldPathExpression

The path expression that is qualified by the virtual identification variable

Annotations
@SuppressWarnings:nls
Exceptions
IllegalAccessError:
If this expression does not have a virtual identification variable
getTextback to summary
public String getText()

Overrides org.eclipse.persistence.jpa.jpql.parser.AbstractExpression.getText.

Doc from org.eclipse.persistence.jpa.jpql.parser.AbstractExpression.getText.

Returns the encapsulated text of this AbstractExpression, which can be used in various ways, it can be a keyword, a literal, etc.

Returns:String

Either the JPQL identifier for this AbstractExpression, the literal it encapsulates or an empty string

Annotations
@Override
getVariableNameback to summary
public String getVariableName()

Returns the identification variable, which has been changed to be upper case.

Returns:String

The uppercase version of the identification variable

Since
2.4
isVirtualback to summary
public boolean isVirtual()

Overrides org.eclipse.persistence.jpa.jpql.parser.AbstractExpression.isVirtual.

Doc from org.eclipse.persistence.jpa.jpql.parser.AbstractExpression.isVirtual.

Determines whether this AbstractExpression is virtual, meaning it's not part of the query but is required for proper navigability.

Returns:boolean

true if this AbstractExpression was virtually created to fully qualify path expression; false if it was parsed

Annotations
@Override
parseback to summary
protected void parse(WordParser wordParser, boolean tolerant)

Implements abstract org.eclipse.persistence.jpa.jpql.parser.AbstractExpression.parse.

Doc from org.eclipse.persistence.jpa.jpql.parser.AbstractExpression.parse.

Parses the query by starting at the current position, which is part of the given WordParser.

Parameters
wordParser:WordParser

The text to parse based on the current position of the cursor

tolerant:boolean

Determines whether the parsing system should be tolerant, meaning if it should try to parse invalid or incomplete queries

Annotations
@Override
setVirtualIdentificationVariableback to summary
public void setVirtualIdentificationVariable(String variableName)

Sets a virtual identification variable because the abstract schema name was parsed without one. This is valid in an UPDATE and DELETE queries. This internally transforms the what was thought to be an identification variable to a path expression.

Parameters
variableName:String

The identification variable that was generated to identify the "root" object

toParsedTextback to summary
public String toParsedText()

Overrides org.eclipse.persistence.jpa.jpql.parser.AbstractExpression.toParsedText.

Implements org.eclipse.persistence.jpa.jpql.parser.Expression.toParsedText.

Doc from org.eclipse.persistence.jpa.jpql.parser.Expression.toParsedText.

Returns a string representation of this Expression and its children. The expression should contain whitespace even if the beautified version would not have any. For instance, "SELECT e " should be returned where Expression#toActualText() would return "SELECT e".

Returns:String

The string representation of this Expression

Annotations
@Override
toParsedTextback to summary
protected void toParsedText(StringBuilder writer, boolean actual)

Implements abstract org.eclipse.persistence.jpa.jpql.parser.AbstractExpression.toParsedText.

Doc from org.eclipse.persistence.jpa.jpql.parser.AbstractExpression.toParsedText.

Generates a string representation of this Expression, including its children, if it has any.

Parameters
writer:StringBuilder

The buffer used to append this Expression's string representation

actual:boolean

Determines whether the string representation should represent what was parsed, i.e. include any "virtual" whitespace (such as ending whitespace) and the actual case of the JPQL identifiers

Annotations
@Override