EclipseLink 2.4.2, build 'v20130514-5956486' API Reference

org.eclipse.persistence.jpa.jpql.model.query
Class RangeVariableDeclarationStateObject

java.lang.Object
  extended by org.eclipse.persistence.jpa.jpql.model.query.AbstractStateObject
      extended by org.eclipse.persistence.jpa.jpql.model.query.AbstractRangeVariableDeclarationStateObject
          extended by org.eclipse.persistence.jpa.jpql.model.query.RangeVariableDeclarationStateObject
All Implemented Interfaces:
StateObject, VariableDeclarationStateObject

public class RangeVariableDeclarationStateObject
extends AbstractRangeVariableDeclarationStateObject

Range variable declarations allow the developer to designate a "root" for objects which may not be reachable by navigation. In order to select values by comparing more than one instance of an entity abstract schema type, more than one identification variable ranging over the abstract schema type is needed in the FROM clause.

BNF: range_variable_declaration ::= abstract_schema_name [AS] identification_variable

Version:
2.4
See Also:
RangeVariableDeclaration
Author:
Pascal Filion
Since:
2.4

Field Summary
 
Fields inherited from class org.eclipse.persistence.jpa.jpql.model.query.AbstractRangeVariableDeclarationStateObject
AS_PROPERTY, IDENTIFICATION_VARIABLE_PROPERTY
 
Constructor Summary
RangeVariableDeclarationStateObject(AbstractModifyClauseStateObject parent)
          Creates a new RangeVariableDeclarationStateObject.
RangeVariableDeclarationStateObject(IdentificationVariableDeclarationStateObject parent)
          Creates a new RangeVariableDeclarationStateObject.
RangeVariableDeclarationStateObject(IdentificationVariableDeclarationStateObject parent, java.lang.String entityName)
          Creates a new RangeVariableDeclarationStateObject.
 
Method Summary
 void accept(StateObjectVisitor visitor)
          Visits this StateObject by the given visitor.
 RangeVariableDeclarationStateObject addAs()
          Makes sure the AS identifier is specified.
protected  StateObject buildRootStateObject()
          
 IEntity getEntity()
          Returns the actual IEntity that has the abstract schema name.
 java.lang.String getEntityName()
          Returns the abstract schema name.
 IManagedType getManagedType(StateObject stateObject)
          Returns the IManagedType for the given identification variable.
 java.lang.String getRootPath()
          Returns the "root" object for objects which may not be reachable by navigation.
 AbstractSchemaNameStateObject getRootStateObject()
          Returns the StateObject holding onto the abstract schema name.
 void setDeclaration(IEntity entity)
          Sets the abstract schema name to the given value.
 void setDeclaration(IEntity entity, java.lang.String identificationVariable)
          Sets the abstract schema name to the given value and the identification variable that will range over it.
 void setDeclaration(java.lang.String entityName, java.lang.String identificationVariable)
          Sets the abstract schema name to the given value and the identification variable that will range over it.
 void setEntity(IEntity entity)
          Sets the actual IEntity and updates the abstract schema name.
 void setEntityName(java.lang.String abstractSchemaName)
          Sets the name of the abstract schema, which is the name of the entity.
 void setRootPath(java.lang.String root)
          Sets the "root" object for objects which may not be reachable by navigation.
 
Methods inherited from class org.eclipse.persistence.jpa.jpql.model.query.AbstractRangeVariableDeclarationStateObject
addChildren, addProblems, getExpression, getIdentificationVariable, getIdentificationVariableStateObject, hasAs, hasIdentificationVariable, identificationVariables, initialize, isEquivalent, isIdentificationVariableOptional, isIdentificationVariableVirtual, setAs, setExpression, setIdentificationVariable, setIdentificationVariableOptional, toggleAs, toTextInternal
 
Methods inherited from class org.eclipse.persistence.jpa.jpql.model.query.AbstractStateObject
acceptUnknownVisitor, acceptUnknownVisitor, addPropertyChangeListener, areEquivalent, buildProblem, buildProblem, buildStateObject, buildStateObjects, checkParent, children, decorate, equals, findIdentificationVariable, firePropertyChanged, getChangeSupport, getDeclaration, getDecorator, getGrammar, getManagedTypeProvider, getParent, getQueryBuilder, getRoot, getType, getType, getTypeHelper, getTypeRepository, hashCode, isDecorated, parent, parent, parent, removePropertyChangeListener, setExpression, setParent, toString, toString, toStringInternal, toStringItems, toText
 
Methods inherited from class java.lang.Object
clone, finalize, getClass, notify, notifyAll, wait, wait, wait
 
Methods inherited from interface org.eclipse.persistence.jpa.jpql.model.query.StateObject
addPropertyChangeListener, children, decorate, findIdentificationVariable, getDeclaration, getDecorator, getGrammar, getManagedTypeProvider, getParent, getQueryBuilder, getRoot, isDecorated, removePropertyChangeListener, setParent, toString, toText
 

Constructor Detail

RangeVariableDeclarationStateObject

public RangeVariableDeclarationStateObject(AbstractModifyClauseStateObject parent)
Creates a new RangeVariableDeclarationStateObject.

Parameters:
parent - The parent of this state object, which cannot be null
Throws:
java.lang.NullPointerException - The given parent cannot be null

RangeVariableDeclarationStateObject

public RangeVariableDeclarationStateObject(IdentificationVariableDeclarationStateObject parent)
Creates a new RangeVariableDeclarationStateObject.

Parameters:
parent - The parent of this state object, which cannot be null
Throws:
java.lang.NullPointerException - The given parent cannot be null

RangeVariableDeclarationStateObject

public RangeVariableDeclarationStateObject(IdentificationVariableDeclarationStateObject parent,
                                           java.lang.String entityName)
Creates a new RangeVariableDeclarationStateObject.

Parameters:
parent - The parent of this state object, which cannot be null
entityName - The name of the abstract schema, which is the name of the entity
Throws:
java.lang.NullPointerException - The given parent cannot be null
Method Detail

accept

public void accept(StateObjectVisitor visitor)
Visits this StateObject by the given visitor.

Parameters:
visitor - The visitor to visit this object

addAs

public RangeVariableDeclarationStateObject addAs()
Makes sure the AS identifier is specified.

Overrides:
addAs in class AbstractRangeVariableDeclarationStateObject
Returns:
This object

buildRootStateObject

protected StateObject buildRootStateObject()

Specified by:
buildRootStateObject in class AbstractRangeVariableDeclarationStateObject

getEntity

public IEntity getEntity()
Returns the actual IEntity that has the abstract schema name.

Returns:
The actual IEntity or null if no entity exists

getEntityName

public java.lang.String getEntityName()
Returns the abstract schema name.

Returns:
The name of the abstract schema type for which the identification variable is ranging over

getManagedType

public IManagedType getManagedType(StateObject stateObject)
Returns the IManagedType for the given identification variable. The search does not traverse up the query hierarchy if this declaration is for a subquery.

SELECT e FROM Department d JOIN KEY(d.employees).addresses a
In the above query, the managed type associated with the identification variable:
  • d is "Department"
  • a is "Address"

Parameters:
stateObject - The StateObject that should be an simple identification variable or an encapsulated identification variable with the identifier KEY or VALUE
Returns:
The IManagedType representing the domain object declared by the given identification variable

getRootPath

public java.lang.String getRootPath()
Returns the "root" object for objects which may not be reachable by navigation.

Specified by:
getRootPath in class AbstractRangeVariableDeclarationStateObject
Returns:
The "root" object

getRootStateObject

public AbstractSchemaNameStateObject getRootStateObject()
Returns the StateObject holding onto the abstract schema name.

Overrides:
getRootStateObject in class AbstractRangeVariableDeclarationStateObject
Returns:
The StateObject, which is never null

setDeclaration

public void setDeclaration(IEntity entity)
Sets the abstract schema name to the given value.

Parameters:
entity - The IEntity that this clause will range over

setDeclaration

public void setDeclaration(IEntity entity,
                           java.lang.String identificationVariable)
Sets the abstract schema name to the given value and the identification variable that will range over it.

Parameters:
entity - The IEntity that this clause will range over
identificationVariable - The new identification variable

setDeclaration

public void setDeclaration(java.lang.String entityName,
                           java.lang.String identificationVariable)
Sets the abstract schema name to the given value and the identification variable that will range over it.

Parameters:
entityName - The name of the entity name
identificationVariable - The new identification variable

setEntity

public void setEntity(IEntity entity)
Sets the actual IEntity and updates the abstract schema name.

Parameters:
entity - The IEntity that the clause will range over

setEntityName

public void setEntityName(java.lang.String abstractSchemaName)
Sets the name of the abstract schema, which is the name of the entity.

Parameters:
abstractSchemaName - The name of the abstract schema, which is the name of the entity

setRootPath

public void setRootPath(java.lang.String root)
Sets the "root" object for objects which may not be reachable by navigation.

Specified by:
setRootPath in class AbstractRangeVariableDeclarationStateObject
Parameters:
root - The "root" object

EclipseLink 2.4.2, build 'v20130514-5956486' API Reference