public class SimpleFromClauseStateObject extends AbstractFromClauseStateObject
FROM
clause of a sub-query defines the domain of the sub-query by
declaring identification variables. An identification variable is an identifier declared in the
FROM
clause of a sub-query. The domain of the sub-query may be constrained by
path expressions. Identification variables designate instances of a particular entity abstract
schema type. The FROM
clause can contain multiple identification variable
declarations separated by a comma (,).
BNF: subquery_from_clause ::= FROM subselect_identification_variable_declaration {, subselect_identification_variable_declaration}*
SimpleFromClause
VARIABLE_DECLARATIONS_LIST
Constructor and Description |
---|
SimpleFromClauseStateObject(SimpleSelectStatementStateObject parent)
Creates a new
SimpleFromClauseStateObject . |
Modifier and Type | Method and Description |
---|---|
void |
accept(StateObjectVisitor visitor)
Visits this
StateObject by the given visitor . |
CollectionMemberDeclarationStateObject |
addDerivedCollectionDeclaration()
Adds a new derived collection declaration to the
FROM clause. |
CollectionMemberDeclarationStateObject |
addDerivedCollectionDeclaration(java.lang.String collectionValuedPath)
Adds a new derived collection declaration to the
FROM clause. |
DerivedPathIdentificationVariableDeclarationStateObject |
addDerivedPathDeclaration()
Adds a new derived identification variable declaration to the
FROM clause. |
DerivedPathIdentificationVariableDeclarationStateObject |
addDerivedPathDeclaration(java.lang.String path,
java.lang.String identificationVariable)
Adds a new derived identification variable declaration to the
FROM clause. |
java.lang.String |
declarationBNF()
Returns the BNF of the declaration part of this clause.
|
IManagedType |
findManagedType(StateObject stateObject)
Returns the
IManagedType for the given identification variable. |
SimpleFromClause |
getExpression()
Returns the actual parsed object if this
StateObject representation of the JPQL query
was created by parsing an existing JPQL query. |
SimpleSelectStatementStateObject |
getParent()
Returns the parent of this
StateObject . |
void |
setExpression(SimpleFromClause expression)
Keeps a reference of the
parsed object object, which should only be
done when this object is instantiated during the conversion of a parsed JPQL query into
StateObjects . |
addCollectionDeclaration, addCollectionDeclaration, addProblems, addRangeDeclaration, addRangeDeclaration, addRangeDeclaration, declarations, findIdentificationVariable, getDeclaration, getManagedType, identificationVariables, isEquivalent, listName, parse, toTextInternal
addChildren, addItem, addItems, addListChangeListener, areChildrenEquivalent, canMoveDown, canMoveUp, getItem, hasItems, initialize, items, itemsSize, moveDown, moveUp, removeItem, removeItems, removeListChangeListener, toStringItems
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
clone, finalize, getClass, notify, notifyAll, wait, wait, wait
addPropertyChangeListener, children, decorate, getDecorator, getGrammar, getManagedTypeProvider, getQueryBuilder, getRoot, isDecorated, removePropertyChangeListener, setParent, toString, toText
public SimpleFromClauseStateObject(SimpleSelectStatementStateObject parent)
SimpleFromClauseStateObject
.parent
- The parent of this state object, which cannot be null
java.lang.NullPointerException
- The given parent cannot be null
public void accept(StateObjectVisitor visitor)
StateObject
by the given visitor
.visitor
- The visitor
to visit this objectpublic CollectionMemberDeclarationStateObject addDerivedCollectionDeclaration()
FROM
clause.CollectionMemberDeclarationStateObject
representing the collection
declarationpublic CollectionMemberDeclarationStateObject addDerivedCollectionDeclaration(java.lang.String collectionValuedPath)
FROM
clause.collectionValuedPath
- The collection-valued path expressionCollectionMemberDeclarationStateObject
representing the collection
declarationpublic DerivedPathIdentificationVariableDeclarationStateObject addDerivedPathDeclaration()
FROM
clause.DerivedPathIdentificationVariableDeclarationStateObject
representing the
path declarationpublic DerivedPathIdentificationVariableDeclarationStateObject addDerivedPathDeclaration(java.lang.String path, java.lang.String identificationVariable)
FROM
clause.path
- Either the derived singled-valued object field or the collection-valued path expressionidentificationVariable
- The identification variable defining the given pathDerivedPathIdentificationVariableDeclarationStateObject
representing the
path declarationpublic java.lang.String declarationBNF()
declarationBNF
in class AbstractFromClauseStateObject
public IManagedType findManagedType(StateObject stateObject)
IManagedType
for the given identification variable. If the declaration is
for a subquery and there is no managed type associated with the identification then the search
will traverse up the query hierarchy.
SELECT e FROM Department d JOIN KEY(d.employees).addresses a
In the above query, the managed type associated with the identification variable:
stateObject
- The StateObject
that should be an simple identification variable or
an encapsulated identification variable with the identifier KEY
or
VALUE
IManagedType
representing the domain object declared by the given
identification variableDeclarationStateObject.getManagedType(StateObject)
public SimpleFromClause getExpression()
StateObject
representation of the JPQL query
was created by parsing an existing JPQL query.getExpression
in interface StateObject
getExpression
in class AbstractFromClauseStateObject
StateObject
or null
when the JPQL query is manually created (i.e. not from a string)public SimpleSelectStatementStateObject getParent()
StateObject
.getParent
in interface StateObject
getParent
in class AbstractFromClauseStateObject
StateObject
, which is null
only when
this is the root of the hierarchypublic void setExpression(SimpleFromClause expression)
parsed object
object, which should only be
done when this object is instantiated during the conversion of a parsed JPQL query into
StateObjects
.expression
- The parsed object
representing a subquery
FROM
clause