Class CoalesceExpressionStateObject
- java.lang.Object
-
- org.eclipse.persistence.jpa.jpql.tools.model.query.AbstractStateObject
-
- org.eclipse.persistence.jpa.jpql.tools.model.query.AbstractEncapsulatedExpressionStateObject
-
- org.eclipse.persistence.jpa.jpql.tools.model.query.CoalesceExpressionStateObject
-
- All Implemented Interfaces:
ListHolderStateObject<StateObject>
,StateObject
public class CoalesceExpressionStateObject extends AbstractEncapsulatedExpressionStateObject implements ListHolderStateObject<StateObject>
ACOALESCE
expression returnsnull
if all its arguments evaluate tonull
, and the value of the first non-null
argument otherwise.The return type is the type returned by the arguments if they are all of the same type, otherwise it is undetermined.
BNF:coalesce_expression::= COALESCE(scalar_expression {, scalar_expression}+)
- Since:
- 2.4
- Version:
- 2.4
- Author:
- Pascal Filion
- See Also:
CoalesceExpression
-
-
Field Summary
Fields Modifier and Type Field Description static String
STATE_OBJECTS_LIST
Notifies the content of the state object list has changed.
-
Constructor Summary
Constructors Constructor Description CoalesceExpressionStateObject(StateObject parent)
Creates a newCoalesceExpressionStateObject
.CoalesceExpressionStateObject(StateObject parent, String... items)
Creates a newCoalesceExpressionStateObject
.CoalesceExpressionStateObject(StateObject parent, List<StateObject> items)
Creates a newCoalesceExpressionStateObject
.CoalesceExpressionStateObject(StateObject parent, StateObject... items)
Creates a newCoalesceExpressionStateObject
.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description void
accept(StateObjectVisitor visitor)
Visits thisStateObject
by the givenvisitor
.<S extends StateObject>
SaddItem(S item)
Adds the givenStateObject
as a child of this one.void
addItems(List<? extends StateObject> items)
Adds the given list ofStateObjects
as children of this one.void
addListChangeListener(String listName, IListChangeListener<StateObject> listener)
Registers the givenIListChangeListener
for the specified list.boolean
canMoveDown(StateObject item)
Determines whether the givenStateObject
can be moved down by one position in the list owned by its parent.boolean
canMoveUp(StateObject item)
Determines whether the givenStateObject
can be moved up by one position in the list owned by its parent.CoalesceExpression
getExpression()
Returns the actual parsed object if thisStateObject
representation of the JPQL query was created by parsing an existing JPQL query.String
getIdentifier()
Returns the JPQL identifier of the expression represented by thisAbstractSingleEncapsulatedExpressionStateObject
.StateObject
getItem(int index)
Returns theStateObject
at the given positions from the listboolean
hasItems()
Determines whether thisStateObject
has any children.boolean
isEquivalent(StateObject stateObject)
Determines whether the givenStateObject
is equivalent to this one, i.e.ListIterable<StateObject>
items()
Returns anListIterable
over the children.int
itemsSize()
Returns the number of children this list holder has.StateObject
moveDown(StateObject item)
Moves the givenStateObject
down by one position in the list owned by its parent.StateObject
moveUp(StateObject item)
Moves the givenStateObject
up by one position in the list owned by its parent.void
parseItem(String jpqlFragment)
Parses the given JPQL fragment, which represents a single encapsulated expression, and creates theStateObject
.void
parseItems(String... items)
Parses the given JPQL fragments, which represent individual expression, and creates theStateObjects
.void
parseItems(ListIterator<String> items)
Parses the given JPQL fragments, which represent individual expression, and creates theStateObjects
.void
removeItem(StateObject item)
Removes the givenStateObject
from the list of children.void
removeItems(Collection<StateObject> items)
Removes the givenStateObject
from the list of children.void
removeListChangeListener(String listName, IListChangeListener<StateObject> listener)
Unregisters the givenIListChangeListener
that was registered for the specified list.void
setExpression(CoalesceExpression expression)
Keeps a reference of theparsed object
object, which should only be done when this object is instantiated during the conversion of a parsed JPQL query intoStateObjects
.-
Methods inherited from class org.eclipse.persistence.jpa.jpql.tools.model.query.AbstractStateObject
addPropertyChangeListener, children, decorate, equals, findIdentificationVariable, getDeclaration, getDecorator, getGrammar, getManagedTypeProvider, getParent, getQueryBuilder, getRoot, getType, getType, getTypeHelper, getTypeRepository, hashCode, isDecorated, removePropertyChangeListener, setExpression, setParent, toString, toString, toText
-
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
-
STATE_OBJECTS_LIST
public static final String STATE_OBJECTS_LIST
Notifies the content of the state object list has changed.- See Also:
- Constant Field Values
-
-
Constructor Detail
-
CoalesceExpressionStateObject
public CoalesceExpressionStateObject(StateObject parent)
Creates a newCoalesceExpressionStateObject
.- Parameters:
parent
- The parent of this state object, which cannot benull
- Throws:
NullPointerException
- The given parent cannot benull
-
CoalesceExpressionStateObject
public CoalesceExpressionStateObject(StateObject parent, List<StateObject> items)
Creates a newCoalesceExpressionStateObject
.- Parameters:
parent
- The parent of this state object, which cannot benull
items
- The list ofStateObjects
representing the encapsulated expressions- Throws:
NullPointerException
- The given parent cannot benull
-
CoalesceExpressionStateObject
public CoalesceExpressionStateObject(StateObject parent, StateObject... items)
Creates a newCoalesceExpressionStateObject
.- Parameters:
parent
- The parent of this state object, which cannot benull
items
- The list ofStateObjects
representing the encapsulated expressions- Throws:
NullPointerException
- The given parent cannot benull
-
CoalesceExpressionStateObject
public CoalesceExpressionStateObject(StateObject parent, String... items)
Creates a newCoalesceExpressionStateObject
.- Parameters:
parent
- The parent of this state object, which cannot benull
items
- The list of expression to parse into theirStateObject
- Throws:
NullPointerException
- The given parent cannot benull
-
-
Method Detail
-
accept
public void accept(StateObjectVisitor visitor)
Visits thisStateObject
by the givenvisitor
.- Specified by:
accept
in interfaceStateObject
- Parameters:
visitor
- Thevisitor
to visit this object
-
addItem
public <S extends StateObject> S addItem(S item)
Adds the givenStateObject
as a child of this one.- Specified by:
addItem
in interfaceListHolderStateObject<StateObject>
- Parameters:
item
- The childStateObject
to become a child of this one return The given item
-
addItems
public void addItems(List<? extends StateObject> items)
Adds the given list ofStateObjects
as children of this one.- Specified by:
addItems
in interfaceListHolderStateObject<StateObject>
- Parameters:
items
- TheStateObjects
to become children of this one
-
addListChangeListener
public void addListChangeListener(String listName, IListChangeListener<StateObject> listener)
Registers the givenIListChangeListener
for the specified list. The listener will be notified only when items are added, removed, moved from the list.- Specified by:
addListChangeListener
in interfaceListHolderStateObject<StateObject>
- Parameters:
listName
- The name of the list for which the listener will be notified when the content of the list has changedlistener
- The listener to be notified upon changes
-
canMoveDown
public boolean canMoveDown(StateObject item)
Determines whether the givenStateObject
can be moved down by one position in the list owned by its parent.- Specified by:
canMoveDown
in interfaceListHolderStateObject<StateObject>
- Parameters:
item
- TheStateObject
that could potentially be moved down- Returns:
true
if the object can be moved down by one unit;false
otherwise
-
canMoveUp
public boolean canMoveUp(StateObject item)
Determines whether the givenStateObject
can be moved up by one position in the list owned by its parent.- Specified by:
canMoveUp
in interfaceListHolderStateObject<StateObject>
- Parameters:
item
- TheStateObject
that could potentially be moved up- Returns:
true
if the object can be moved up by one unit;false
otherwise
-
getExpression
public CoalesceExpression 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 classAbstractEncapsulatedExpressionStateObject
- 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)
-
getIdentifier
public String getIdentifier()
Returns the JPQL identifier of the expression represented by thisAbstractSingleEncapsulatedExpressionStateObject
.- Specified by:
getIdentifier
in classAbstractEncapsulatedExpressionStateObject
- Returns:
- The JPQL identifier that is shown before the left parenthesis
-
getItem
public StateObject getItem(int index)
Returns theStateObject
at the given positions from the list- Specified by:
getItem
in interfaceListHolderStateObject<StateObject>
- Parameters:
index
- The position of theStateObject
to retrieve- Returns:
- The
StateObject
at the given position
-
hasItems
public boolean hasItems()
Determines whether thisStateObject
has any children.- Specified by:
hasItems
in interfaceListHolderStateObject<StateObject>
- Returns:
true
if thisStateObject
has children;false
otherwise
-
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
-
items
public ListIterable<StateObject> items()
Returns anListIterable
over the children.- Specified by:
items
in interfaceListHolderStateObject<StateObject>
- Returns:
- An
ListIterable
that is iterating over the children
-
itemsSize
public int itemsSize()
Returns the number of children this list holder has.- Specified by:
itemsSize
in interfaceListHolderStateObject<StateObject>
- Returns:
- The count of
StateObjects
that are children of this one
-
moveDown
public StateObject moveDown(StateObject item)
Moves the givenStateObject
down by one position in the list owned by its parent.- Specified by:
moveDown
in interfaceListHolderStateObject<StateObject>
- Parameters:
item
- TheStateObject
to move down in the list- Returns:
- The given item
-
moveUp
public StateObject moveUp(StateObject item)
Moves the givenStateObject
up by one position in the list owned by its parent.- Specified by:
moveUp
in interfaceListHolderStateObject<StateObject>
- Parameters:
item
- TheStateObject
to move up in the list- Returns:
- The given item
-
parseItem
public void parseItem(String jpqlFragment)
Parses the given JPQL fragment, which represents a single encapsulated expression, and creates theStateObject
.- Parameters:
jpqlFragment
- The portion of the query representing a single encapsulated expression
-
parseItems
public void parseItems(ListIterator<String> items)
Parses the given JPQL fragments, which represent individual expression, and creates theStateObjects
.- Parameters:
items
- The portion of the query representing a single encapsulated expression
-
parseItems
public void parseItems(String... items)
Parses the given JPQL fragments, which represent individual expression, and creates theStateObjects
.- Parameters:
items
- The portion of the query representing a single encapsulated expression
-
removeItem
public void removeItem(StateObject item)
Removes the givenStateObject
from the list of children.- Specified by:
removeItem
in interfaceListHolderStateObject<StateObject>
- Parameters:
item
- The childStateObject
to not longer be a child
-
removeItems
public void removeItems(Collection<StateObject> items)
Removes the givenStateObject
from the list of children.- Specified by:
removeItems
in interfaceListHolderStateObject<StateObject>
- Parameters:
items
- TheStateObjects
to remove from this one
-
removeListChangeListener
public void removeListChangeListener(String listName, IListChangeListener<StateObject> listener)
Unregisters the givenIListChangeListener
that was registered for the specified list. The listener will no longer be notified only when items are added, removed, moved from the list.- Specified by:
removeListChangeListener
in interfaceListHolderStateObject<StateObject>
- Parameters:
listName
- The name of the list for which the listener was registeredlistener
- The listener to unregister
-
setExpression
public void setExpression(CoalesceExpression expression)
Keeps a reference of theparsed object
object, which should only be done when this object is instantiated during the conversion of a parsed JPQL query intoStateObjects
.- Parameters:
expression
- Theparsed object
representing aCASE
expression
-
-