EclipseLink 2.4.2, build 'v20130514-5956486' API Reference

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

java.lang.Object
  extended by org.eclipse.persistence.jpa.jpql.model.query.AbstractStateObject
      extended by org.eclipse.persistence.jpa.jpql.model.query.AbstractListHolderStateObject<VariableDeclarationStateObject>
          extended by org.eclipse.persistence.jpa.jpql.model.query.AbstractFromClauseStateObject
All Implemented Interfaces:
DeclarationStateObject, ListHolderStateObject<VariableDeclarationStateObject>, StateObject
Direct Known Subclasses:
FromClauseStateObject, SimpleFromClauseStateObject

public abstract class AbstractFromClauseStateObject
extends AbstractListHolderStateObject<VariableDeclarationStateObject>
implements DeclarationStateObject

This state object represents the abstract definition of a FROM clause, which is either the FROM clause of the query or of a sub-query expression.

Version:
2.4
See Also:
AbstractSelectStatementStateObject, FromClauseStateObject, SubQueryFromClauseStateObject, AbstractFromClause
Author:
Pascal Filion
Since:
2.4

Field Summary
static java.lang.String VARIABLE_DECLARATIONS_LIST
          Notifies the content of the list of VariableDeclarationStateObject has changed.
 
Constructor Summary
protected AbstractFromClauseStateObject(AbstractSelectStatementStateObject parent)
          Creates a new AbstractFromClauseStateObject.
 
Method Summary
 CollectionMemberDeclarationStateObject addCollectionDeclaration()
          Adds a new collection declaration to the FROM clause.
 CollectionMemberDeclarationStateObject addCollectionDeclaration(java.lang.String collectionValuedPath, java.lang.String identificationVariable)
          Adds a new collection declaration to the FROM clause.
protected  void addProblems(java.util.List<Problem> currentProblems)
          Adds to the given list the problems that were found with the current state of this StateObject, which means there are validation issues.
 IdentificationVariableDeclarationStateObject addRangeDeclaration()
          Adds a new range variable declaration to the FROM clause.
 IdentificationVariableDeclarationStateObject addRangeDeclaration(IEntity entity, java.lang.String identificationVariable)
          Adds to this select statement a new range variable declaration.
 IdentificationVariableDeclarationStateObject addRangeDeclaration(java.lang.String entityName, java.lang.String identificationVariable)
          Adds a new range variable declaration.
protected abstract  java.lang.String declarationBNF()
          Returns the BNF of the declaration part of this clause.
 IterableListIterator<? extends VariableDeclarationStateObject> declarations()
          Returns the list of declarations declared in the declaration clause of the current query.
 IdentificationVariableStateObject findIdentificationVariable(java.lang.String variable)
          Returns the IdentificationVariableStateObject representing the given identification variable.
 DeclarationStateObject getDeclaration()
          Returns the declaration clause which defines the domain of the query by declaring identification variables.
 AbstractFromClause getExpression()
          Returns the actual parsed object if this StateObject representation of the JPQL query was created by parsing an existing JPQL query.
 IManagedType getManagedType(StateObject stateObject)
          Returns the IManagedType for the given identification variable.
 AbstractSelectStatementStateObject getParent()
          Returns the parent of this StateObject.
 IterableIterator<IdentificationVariableStateObject> identificationVariables()
          Returns the IdentificationVariableStateObjects holding onto the identification variables, which are the variables defined in the FROM clause.
 boolean isEquivalent(StateObject stateObject)
          Determines whether the given StateObject is equivalent to this one, i.e. the information of both StateObject is the same.
protected  java.lang.String listName()
          Returns the name that is uniquely identifying the list.
 void parse(java.lang.String jpqlFragment)
          Parses the given JPQL fragment and create the select item.
protected  void toTextInternal(java.lang.Appendable writer)
          Prints out a string representation of this StateObject, which should not be used to define a true string representation of a JPQL query but should be used for debugging purposes.
 
Methods inherited from class org.eclipse.persistence.jpa.jpql.model.query.AbstractListHolderStateObject
addChildren, addItem, addItems, addListChangeListener, areChildrenEquivalent, canMoveDown, canMoveUp, getItem, hasItems, initialize, items, itemsSize, moveDown, moveUp, removeItem, removeItems, removeListChangeListener, toStringItems
 
Methods inherited from class org.eclipse.persistence.jpa.jpql.model.query.AbstractStateObject
acceptUnknownVisitor, acceptUnknownVisitor, addPropertyChangeListener, areEquivalent, buildProblem, buildProblem, buildStateObject, buildStateObjects, checkParent, children, decorate, equals, firePropertyChanged, getChangeSupport, getDecorator, getGrammar, getManagedTypeProvider, 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.DeclarationStateObject
findManagedType
 
Methods inherited from interface org.eclipse.persistence.jpa.jpql.model.query.StateObject
accept, addPropertyChangeListener, children, decorate, getDecorator, getGrammar, getManagedTypeProvider, getQueryBuilder, getRoot, isDecorated, removePropertyChangeListener, setParent, toString, toText
 

Field Detail

VARIABLE_DECLARATIONS_LIST

public static final java.lang.String VARIABLE_DECLARATIONS_LIST
Notifies the content of the list of VariableDeclarationStateObject has changed.

See Also:
Constant Field Values
Constructor Detail

AbstractFromClauseStateObject

protected AbstractFromClauseStateObject(AbstractSelectStatementStateObject parent)
Creates a new AbstractFromClauseStateObject.

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

addCollectionDeclaration

public CollectionMemberDeclarationStateObject addCollectionDeclaration()
Adds a new collection declaration to the FROM clause.

Returns:
The CollectionMemberDeclarationStateObject representing the collection declaration

addCollectionDeclaration

public CollectionMemberDeclarationStateObject addCollectionDeclaration(java.lang.String collectionValuedPath,
                                                                       java.lang.String identificationVariable)
Adds a new collection declaration to the FROM clause.

Parameters:
collectionValuedPath - The collection-valued path expression
identificationVariable - The variable defining the collection-valued path expression
Returns:
The CollectionMemberDeclarationStateObject representing the collection declaration

addProblems

protected void addProblems(java.util.List<Problem> currentProblems)
Adds to the given list the problems that were found with the current state of this StateObject, which means there are validation issues.

Overrides:
addProblems in class AbstractStateObject
Parameters:
currentProblems - The list to which the problems are added

addRangeDeclaration

public IdentificationVariableDeclarationStateObject addRangeDeclaration()
Adds a new range variable declaration to the FROM clause.

Returns:
The StateObject representing the range variable declaration

addRangeDeclaration

public IdentificationVariableDeclarationStateObject addRangeDeclaration(IEntity entity,
                                                                        java.lang.String identificationVariable)
Adds to this select statement a new range variable declaration.

Parameters:
entity - The external form of the entity to add to the declaration list
identificationVariable - The unique identifier identifying the abstract schema name
Returns:
The state object of the new declaration

addRangeDeclaration

public IdentificationVariableDeclarationStateObject addRangeDeclaration(java.lang.String entityName,
                                                                        java.lang.String identificationVariable)
Adds a new range variable declaration.

Parameters:
entityName - The name of the entity name
identificationVariable - The new identification variable
Returns:
The state object of the new declaration

declarationBNF

protected abstract java.lang.String declarationBNF()
Returns the BNF of the declaration part of this clause.

Returns:
The BNF of the declaration part of this clause

declarations

public IterableListIterator<? extends VariableDeclarationStateObject> declarations()
Returns the list of declarations declared in the declaration clause of the current query.

Specified by:
declarations in interface DeclarationStateObject
Returns:
The list of VariableDeclarationStateObject that define the domain of the query

findIdentificationVariable

public IdentificationVariableStateObject findIdentificationVariable(java.lang.String variable)
Returns the IdentificationVariableStateObject representing the given identification variable.

Specified by:
findIdentificationVariable in interface StateObject
Overrides:
findIdentificationVariable in class AbstractStateObject
Returns:
The IdentificationVariableStateObject defining the given identification variable

getDeclaration

public DeclarationStateObject getDeclaration()
Returns the declaration clause which defines the domain of the query by declaring identification variables.

Specified by:
getDeclaration in interface StateObject
Overrides:
getDeclaration in class AbstractStateObject
Returns:
The declaration clause of which this StateObject is a child; i.e. either the top-level declaration if this is part of the top query or the sub-level declaration if this is part of a subquery

getExpression

public AbstractFromClause getExpression()
Returns the actual parsed object if this StateObject representation of the JPQL query was created by parsing an existing JPQL query.

Specified by:
getExpression in interface StateObject
Overrides:
getExpression in class AbstractStateObject
Returns:
The parsed object when a JPQL query is parsed and converted into a StateObject or null when the JPQL query is manually created (i.e. not from a string)

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:

Specified by:
getManagedType in interface DeclarationStateObject
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
See Also:
DeclarationStateObject.findManagedType(StateObject)

getParent

public AbstractSelectStatementStateObject getParent()
Returns the parent of this StateObject.

Specified by:
getParent in interface StateObject
Overrides:
getParent in class AbstractStateObject
Returns:
Returns the parent of this StateObject, which is null only when this is the root of the hierarchy

identificationVariables

public IterableIterator<IdentificationVariableStateObject> identificationVariables()
Returns the IdentificationVariableStateObjects holding onto the identification variables, which are the variables defined in the FROM clause.

Example:

Returns:
The list of IdentificationVariableStateObjects

isEquivalent

public boolean isEquivalent(StateObject stateObject)
Determines whether the given StateObject is equivalent to this one, i.e. the information of both StateObject is the same.

Specified by:
isEquivalent in interface StateObject
Overrides:
isEquivalent in class AbstractStateObject
Parameters:
stateObject - The StateObject to compare its content to this one
Returns:
true if both object are equivalent; false otherwise

listName

protected java.lang.String listName()
Returns the name that is uniquely identifying the list.

Specified by:
listName in class AbstractListHolderStateObject<VariableDeclarationStateObject>
Returns:
The unique name identifying the list

parse

public void parse(java.lang.String jpqlFragment)
Parses the given JPQL fragment and create the select item. For the top-level query, the fragment can contain several select items but for a subquery, it can represent only one.

Parameters:
jpqlFragment - The portion of the query representing one or several select items

toTextInternal

protected void toTextInternal(java.lang.Appendable writer)
                       throws java.io.IOException
Prints out a string representation of this StateObject, which should not be used to define a true string representation of a JPQL query but should be used for debugging purposes.

Specified by:
toTextInternal in class AbstractStateObject
Parameters:
writer - The writer used to print out the string representation
Throws:
java.io.IOException - This should never happens, it is only required because Appendable is used instead of any concrete class

EclipseLink 2.4.2, build 'v20130514-5956486' API Reference