Class AbstractFromClauseStateObject
- java.lang.Object
-
- org.eclipse.persistence.jpa.jpql.tools.model.query.AbstractStateObject
-
- org.eclipse.persistence.jpa.jpql.tools.model.query.AbstractListHolderStateObject<VariableDeclarationStateObject>
-
- org.eclipse.persistence.jpa.jpql.tools.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 aFROM
clause, which is either theFROM
clause of the query or of a sub-query expression.- Version:
- 2.5
- See Also:
AbstractSelectStatementStateObject
,FromClauseStateObject
,AbstractFromClause
- Author:
- Pascal Filion
- Since:
- 2.4
-
-
Field Summary
Fields Modifier and Type Field Description static java.lang.String
VARIABLE_DECLARATIONS_LIST
Notifies the content of the list ofVariableDeclarationStateObject
has changed.
-
Constructor Summary
Constructors Modifier Constructor Description protected
AbstractFromClauseStateObject(AbstractSelectStatementStateObject parent)
Creates a newAbstractFromClauseStateObject
.
-
Method Summary
All Methods Instance Methods Abstract Methods Concrete Methods Modifier and Type Method Description CollectionMemberDeclarationStateObject
addCollectionDeclaration()
Adds a new collection declaration to theFROM
clause.CollectionMemberDeclarationStateObject
addCollectionDeclaration(java.lang.String collectionValuedPath, java.lang.String identificationVariable)
Adds a new collection declaration to theFROM
clause.protected void
addProblems(java.util.List<Problem> currentProblems)
Adds to the given list the problems that were found with the current state of thisStateObject
, which means there are validation issues.IdentificationVariableDeclarationStateObject
addRangeDeclaration()
Adds a new range variable declaration to theFROM
clause.IdentificationVariableDeclarationStateObject
addRangeDeclaration(java.lang.String entityName, java.lang.String identificationVariable)
Adds a new range variable declaration.IdentificationVariableDeclarationStateObject
addRangeDeclaration(IEntity entity, java.lang.String identificationVariable)
Adds to this select statement a new range variable declaration.protected abstract java.lang.String
declarationBNF()
Returns the BNF of the declaration part of this clause.ListIterable<? extends VariableDeclarationStateObject>
declarations()
Returns the list of declarations declared in the declaration clause of the current query.IdentificationVariableStateObject
findIdentificationVariable(java.lang.String variable)
Returns theIdentificationVariableStateObject
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 thisStateObject
representation of the JPQL query was created by parsing an existing JPQL query.IManagedType
getManagedType(StateObject stateObject)
Returns theIManagedType
for the given identification variable.AbstractSelectStatementStateObject
getParent()
Returns the parent of thisStateObject
.java.lang.Iterable<IdentificationVariableStateObject>
identificationVariables()
Returns theIdentificationVariableStateObjects
holding onto the identification variables, which are the variables defined in theFROM
clause.boolean
isEquivalent(StateObject stateObject)
Determines whether the givenStateObject
is equivalent to this one, i.e. the information of bothStateObject
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 thisStateObject
, which should not be used to define atrue
string representation of a JPQL query but should be used for debugging purposes.-
Methods inherited from class org.eclipse.persistence.jpa.jpql.tools.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.tools.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.tools.model.query.DeclarationStateObject
findManagedType
-
Methods inherited from interface org.eclipse.persistence.jpa.jpql.tools.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 ofVariableDeclarationStateObject
has changed.- See Also:
- Constant Field Values
-
-
Constructor Detail
-
AbstractFromClauseStateObject
protected AbstractFromClauseStateObject(AbstractSelectStatementStateObject parent)
Creates a newAbstractFromClauseStateObject
.- Parameters:
parent
- The parent of this state object, which cannot benull
- Throws:
java.lang.NullPointerException
- The given parent cannot benull
-
-
Method Detail
-
addCollectionDeclaration
public CollectionMemberDeclarationStateObject addCollectionDeclaration()
Adds a new collection declaration to theFROM
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 theFROM
clause.- Parameters:
collectionValuedPath
- The collection-valued path expressionidentificationVariable
- 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 thisStateObject
, which means there are validation issues.- Overrides:
addProblems
in classAbstractStateObject
- Parameters:
currentProblems
- The list to which the problems are added
-
addRangeDeclaration
public IdentificationVariableDeclarationStateObject addRangeDeclaration()
Adds a new range variable declaration to theFROM
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 listidentificationVariable
- 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 nameidentificationVariable
- 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 ListIterable<? extends VariableDeclarationStateObject> declarations()
Returns the list of declarations declared in the declaration clause of the current query.- Specified by:
declarations
in interfaceDeclarationStateObject
- Returns:
- The list of
VariableDeclarationStateObject
that define the domain of the query
-
findIdentificationVariable
public IdentificationVariableStateObject findIdentificationVariable(java.lang.String variable)
Returns theIdentificationVariableStateObject
representing the given identification variable.- Specified by:
findIdentificationVariable
in interfaceStateObject
- Overrides:
findIdentificationVariable
in classAbstractStateObject
- Parameters:
variable
- The name of the identification variable to retrieve its state object- 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 interfaceStateObject
- Overrides:
getDeclaration
in classAbstractStateObject
- 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 thisStateObject
representation of the JPQL query was created by parsing an existing JPQL query.- Specified by:
getExpression
in interfaceStateObject
- Overrides:
getExpression
in classAbstractStateObject
- Returns:
- The parsed object when a JPQL query is parsed and converted into a
StateObject
ornull
when the JPQL query is manually created (i.e. not from a string)
-
getManagedType
public IManagedType getManagedType(StateObject stateObject)
Returns theIManagedType
for the given identification variable. The search does not traverse up the query hierarchy if this declaration is for a subquery.
In the above query, the managed type associated with the identification variable:SELECT e FROM Department d JOIN KEY(d.employees).addresses a
- d is "Department"
- a is "Address"
- Specified by:
getManagedType
in interfaceDeclarationStateObject
- Parameters:
stateObject
- TheStateObject
that should be an simple identification variable or an encapsulated identification variable with the identifierKEY
orVALUE
- 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 thisStateObject
.- Specified by:
getParent
in interfaceStateObject
- Overrides:
getParent
in classAbstractStateObject
- Returns:
- Returns the parent of this
StateObject
, which isnull
only when this is the root of the hierarchy
-
identificationVariables
public java.lang.Iterable<IdentificationVariableStateObject> identificationVariables()
Returns theIdentificationVariableStateObjects
holding onto the identification variables, which are the variables defined in theFROM
clause.Example:
Employee e
; e is returnedIN (e.employees) AS emps
; emps is returnedManager m JOIN m.employees emps
; m and emps are returned
- Returns:
- The list of
IdentificationVariableStateObjects
-
isEquivalent
public boolean isEquivalent(StateObject stateObject)
Determines whether the givenStateObject
is equivalent to this one, i.e. the information of bothStateObject
is the same.- Specified by:
isEquivalent
in interfaceStateObject
- Overrides:
isEquivalent
in classAbstractStateObject
- Parameters:
stateObject
- TheStateObject
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 classAbstractListHolderStateObject<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 thisStateObject
, which should not be used to define atrue
string representation of a JPQL query but should be used for debugging purposes.- Specified by:
toTextInternal
in classAbstractStateObject
- Parameters:
writer
- The writer used to print out the string representation- Throws:
java.io.IOException
- This should never happens, it is only required becauseAppendable
is used instead of any concrete class
-
-