Class InExpressionStateObject
- java.lang.Object
-
- org.eclipse.persistence.jpa.jpql.tools.model.query.AbstractStateObject
-
- org.eclipse.persistence.jpa.jpql.tools.model.query.AbstractListHolderStateObject<StateObject>
-
- org.eclipse.persistence.jpa.jpql.tools.model.query.InExpressionStateObject
-
- All Implemented Interfaces:
ListHolderStateObject<StateObject>,StateObject
public class InExpressionStateObject extends AbstractListHolderStateObject<StateObject>
The state field path expression must have a string, numeric, or enum value. The literal and/or input parameter values must be like the same abstract schema type of the state field path expression in type.The results of the subquery must be like the same abstract schema type of the state field path expression in type.
There must be at least one element in the comma separated list that defines the set of values for the
INexpression. If the value of a state field path expression in anINorNOT INexpression isNULLor unknown, the value of the expression is unknown.JPA 1.0:
BNF:JPA 2.0in_expression ::= state_field_path_expression [NOT] IN(in_item {, in_item}* | subquery)BNF:in_expression ::= {state_field_path_expression | type_discriminator} [NOT] IN { ( in_item {, in_item}* ) | (subquery) | collection_valued_input_parameter }- Version:
- 2.4
- See Also:
InExpression- Author:
- Pascal Filion
- Since:
- 2.4
-
-
Field Summary
Fields Modifier and Type Field Description static java.lang.StringITEMS_LISTNotifies the list of items has changed.static java.lang.StringNOT_PROPERTYNotifies the visibility of theNOTidentifier has changed.static java.lang.StringSTATE_OBJECT_PROPERTYNotifies theStateObjectrepresenting the state field path expression or the input parameter has changed.
-
Constructor Summary
Constructors Constructor Description InExpressionStateObject(StateObject parent)Creates a newInExpressionStateObject.InExpressionStateObject(StateObject parent, boolean not, java.lang.String path, java.lang.String parameter)Creates a newInExpressionStateObject.InExpressionStateObject(StateObject parent, boolean not, java.lang.String path, java.util.List<java.lang.String> items)Creates a newInExpressionStateObject.InExpressionStateObject(StateObject parent, java.lang.String path, java.util.List<java.lang.String> items)Creates a newInExpressionStateObject.InExpressionStateObject(StateObject parent, StateObject stateObject, boolean not, java.util.List<? extends StateObject> items)Creates a newInExpressionStateObject.InExpressionStateObject(StateObject parent, StateObject stateFieldPath, java.util.List<? extends StateObject> items)Creates a newInExpressionStateObject.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description voidaccept(StateObjectVisitor visitor)Visits thisStateObjectby the givenvisitor.protected voidaddChildren(java.util.List<StateObject> children)Adds the children of thisStateObjectto the given list.InExpressionStateObjectaddNot()Makes sure theNOTidentifier is specified.InExpressiongetExpression()Returns the actual parsed object if thisStateObjectrepresentation of the JPQL query was created by parsing an existing JPQL query.StateObjectgetStateObject()ReturnsbooleanhasNot()Determines whether theNOTidentifier is used or not.booleanhasStateObject()Determines whetherbooleanisEquivalent(StateObject stateObject)Determines whether the givenStateObjectis equivalent to this one, i.e. the information of bothStateObjectis the same.booleanisSingleInputParameter()Determines whether what was parsed after theINidentifier is a single input parameter.protected java.lang.StringlistName()Returns the name that is uniquely identifying the list.voidparse(java.lang.String jpqlFragment)Parses the given JPQL fragment, which represents either a single or many items, the fragment will be parsed and converted intoStateObject.voidremoveNot()Makes sure theNOTidentifier is not specified.voidsetExpression(InExpression expression)Keeps a reference of theparsed objectobject, which should only be done when this object is instantiated during the conversion of a parsed JPQL query intoStateObjects.voidsetNot(boolean not)Sets whether theNOTidentifier should be part of the expression or not.voidsetSingleInputParameter(boolean singleInputParameter)Sets whether what was parsed after theINidentifier is a single input parameter.voidsetStateObject(StateObject stateObject)SetsvoidtoggleNot()Changes the visibility state of theNOTidentifier.protected voidtoTextInternal(java.lang.Appendable writer)Prints out a string representation of thisStateObject, which should not be used to define atruestring 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
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, addProblems, 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.tools.model.query.StateObject
addPropertyChangeListener, children, decorate, findIdentificationVariable, getDeclaration, getDecorator, getGrammar, getManagedTypeProvider, getParent, getQueryBuilder, getRoot, isDecorated, removePropertyChangeListener, setParent, toString, toText
-
-
-
-
Field Detail
-
ITEMS_LIST
public static final java.lang.String ITEMS_LIST
Notifies the list of items has changed.- See Also:
- Constant Field Values
-
NOT_PROPERTY
public static final java.lang.String NOT_PROPERTY
Notifies the visibility of theNOTidentifier has changed.- See Also:
- Constant Field Values
-
STATE_OBJECT_PROPERTY
public static final java.lang.String STATE_OBJECT_PROPERTY
Notifies theStateObjectrepresenting the state field path expression or the input parameter has changed.- See Also:
- Constant Field Values
-
-
Constructor Detail
-
InExpressionStateObject
public InExpressionStateObject(StateObject parent)
Creates a newInExpressionStateObject.- Parameters:
parent- The parent of this state object, which cannot benull- Throws:
java.lang.NullPointerException- The given parent cannot benull
-
InExpressionStateObject
public InExpressionStateObject(StateObject parent, boolean not, java.lang.String path, java.util.List<java.lang.String> items)
Creates a newInExpressionStateObject.- Parameters:
parent- The parent of this state object, which cannot benullpath-not- Determines whether theNOTidentifier is part of the expression or notitems- The list of JPQL fragments that will be parsed and converted intoStateObject- Throws:
java.lang.NullPointerException- The given parent cannot benull
-
InExpressionStateObject
public InExpressionStateObject(StateObject parent, boolean not, java.lang.String path, java.lang.String parameter)
Creates a newInExpressionStateObject.- Parameters:
parent- The parent of this state object, which cannot benullpath-not- Determines whether theNOTidentifier is part of the expression or notparameter- The- Throws:
java.lang.NullPointerException- The given parent cannot benull
-
InExpressionStateObject
public InExpressionStateObject(StateObject parent, StateObject stateObject, boolean not, java.util.List<? extends StateObject> items)
Creates a newInExpressionStateObject.- Parameters:
parent- The parent of this state object, which cannot benullstateObject-not- Determines whether theNOTidentifier is part of the expression or notitems-- Throws:
java.lang.NullPointerException- The given parent cannot benull
-
InExpressionStateObject
public InExpressionStateObject(StateObject parent, StateObject stateFieldPath, java.util.List<? extends StateObject> items)
Creates a newInExpressionStateObject.- Parameters:
parent- The parent of this state object, which cannot benullstateFieldPath-items-- Throws:
java.lang.NullPointerException- The given parent cannot benull
-
InExpressionStateObject
public InExpressionStateObject(StateObject parent, java.lang.String path, java.util.List<java.lang.String> items)
Creates a newInExpressionStateObject.- Parameters:
parent- The parent of this state object, which cannot benullpath-items- The list of JPQL fragments that will be parsed and converted intoStateObject- Throws:
java.lang.NullPointerException- The given parent cannot benull
-
-
Method Detail
-
accept
public void accept(StateObjectVisitor visitor)
Visits thisStateObjectby the givenvisitor.- Parameters:
visitor- Thevisitorto visit this object
-
addChildren
protected void addChildren(java.util.List<StateObject> children)
Adds the children of thisStateObjectto the given list.- Overrides:
addChildrenin classAbstractListHolderStateObject<StateObject>- Parameters:
children- The list used to store the children
-
addNot
public InExpressionStateObject addNot()
Makes sure theNOTidentifier is specified.- Returns:
- This object
-
getExpression
public InExpression getExpression()
Returns the actual parsed object if thisStateObjectrepresentation of the JPQL query was created by parsing an existing JPQL query.- Specified by:
getExpressionin interfaceStateObject- Overrides:
getExpressionin classAbstractStateObject- Returns:
- The parsed object when a JPQL query is parsed and converted into a
StateObjectornullwhen the JPQL query is manually created (i.e. not from a string)
-
getStateObject
public StateObject getStateObject()
Returns- Returns:
-
hasNot
public boolean hasNot()
Determines whether theNOTidentifier is used or not.- Returns:
trueif theNOTidentifier is part of the expression;falseotherwise
-
hasStateObject
public boolean hasStateObject()
Determines whether- Returns:
-
isEquivalent
public boolean isEquivalent(StateObject stateObject)
Determines whether the givenStateObjectis equivalent to this one, i.e. the information of bothStateObjectis the same.- Specified by:
isEquivalentin interfaceStateObject- Overrides:
isEquivalentin classAbstractStateObject- Parameters:
stateObject- TheStateObjectto compare its content to this one- Returns:
trueif both object are equivalent;falseotherwise
-
isSingleInputParameter
public boolean isSingleInputParameter()
Determines whether what was parsed after theINidentifier is a single input parameter.- Returns:
trueif the only item is an input parameter;falseotherwise
-
listName
protected java.lang.String listName()
Returns the name that is uniquely identifying the list.- Specified by:
listNamein classAbstractListHolderStateObject<StateObject>- Returns:
- The unique name identifying the list
-
parse
public void parse(java.lang.String jpqlFragment)
Parses the given JPQL fragment, which represents either a single or many items, the fragment will be parsed and converted intoStateObject.- Parameters:
jpqlFragment- The portion of the query to parse
-
removeNot
public void removeNot()
Makes sure theNOTidentifier is not specified.
-
setExpression
public void setExpression(InExpression expression)
Keeps a reference of theparsed objectobject, which should only be done when this object is instantiated during the conversion of a parsed JPQL query intoStateObjects.- Parameters:
expression- Theparsed objectrepresenting anINexpression
-
setNot
public void setNot(boolean not)
Sets whether theNOTidentifier should be part of the expression or not.- Parameters:
not-trueif theNOTidentifier should be part of the expression;falseotherwise
-
setSingleInputParameter
public void setSingleInputParameter(boolean singleInputParameter)
Sets whether what was parsed after theINidentifier is a single input parameter.- Parameters:
singleInputParameter-trueif the only item is an input parameter;falseotherwise
-
setStateObject
public void setStateObject(StateObject stateObject)
Sets- Parameters:
stateObject-
-
toggleNot
public void toggleNot()
Changes the visibility state of theNOTidentifier.
-
toTextInternal
protected void toTextInternal(java.lang.Appendable writer) throws java.io.IOExceptionPrints out a string representation of thisStateObject, which should not be used to define atruestring representation of a JPQL query but should be used for debugging purposes.- Specified by:
toTextInternalin classAbstractStateObject- Parameters:
writer- The writer used to print out the string representation- Throws:
java.io.IOException- This should never happens, it is only required becauseAppendableis used instead of any concrete class
-
-