public abstract class AggregateFunctionStateObject extends AbstractSingleEncapsulatedExpressionStateObject
SELECT clause the result of a query may be the result of an aggregate
function applied to a path expression.
BNF: aggregate_expression ::= {AVG|MAX|MIN|SUM}([DISTINCT] state_field_path_expression) |
COUNT([DISTINCT] identification_variable | state_field_path_expression | single_valued_association_path_expression)AggregateFunction| Modifier and Type | Field and Description |
|---|---|
static java.lang.String |
DISTINCT_PROPERTY
Notifies the visibility of the
DISTINCT identifier has changed. |
STATE_OBJECT_PROPERTY| Modifier | Constructor and Description |
|---|---|
protected |
AggregateFunctionStateObject(StateObject parent)
Creates a new
AggregateFunctionStateObject. |
protected |
AggregateFunctionStateObject(StateObject parent,
boolean distinct,
StateObject stateObject)
Creates a new
AggregateStateObject. |
protected |
AggregateFunctionStateObject(StateObject parent,
boolean distinct,
java.lang.String path)
Creates a new
AggregateFunctionStateObject. |
protected |
AggregateFunctionStateObject(StateObject parent,
StateObject stateObject)
Creates a new
AggregateStateObject. |
protected |
AggregateFunctionStateObject(StateObject parent,
java.lang.String path)
Creates a new
AggregateFunctionStateObject. |
| Modifier and Type | Method and Description |
|---|---|
AggregateFunction |
getExpression()
Returns the actual parsed object if this
StateObject representation of the JPQL query
was created by parsing an existing JPQL query. |
boolean |
hasDistinct()
Sets whether the
DISTINCT keyword should be part of the query, which is
used to return only distinct (different) values. |
boolean |
isEquivalent(StateObject stateObject)
Determines whether the given
StateObject is equivalent to this one, i.e. the
information of both StateObject is the same. |
void |
setDistinct(boolean distinct)
Sets whether the
DISTINCT keyword should be part of the query, which is
used to return only distinct (different) values |
void |
setStateObject(StateObject stateObject)
Sets the given
StateObject to represent the new encapsulated expression. |
void |
toggleDistinct()
Reverses the visibility of the
DISTINCT identifier. |
protected void |
toTextEncapsulatedExpression(java.lang.Appendable writer)
Prints out a string representation of this encapsulated information, which should not be used
to define a
true string representation of a JPQL query but should be used for
debugging purposes. |
addChildren, getQueryBNFId, getStateObject, hasStateObject, parsegetIdentifier, toTextInternalacceptUnknownVisitor, 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, initialize, isDecorated, parent, parent, parent, removePropertyChangeListener, setExpression, setParent, toString, toString, toStringInternal, toStringItems, toTextclone, finalize, getClass, notify, notifyAll, wait, wait, waitacceptpublic static final java.lang.String DISTINCT_PROPERTY
DISTINCT identifier has changed.protected AggregateFunctionStateObject(StateObject parent)
AggregateFunctionStateObject.parent - The parent of this state object, which cannot be nulljava.lang.NullPointerException - The given parent cannot be nullprotected AggregateFunctionStateObject(StateObject parent, boolean distinct, StateObject stateObject)
AggregateStateObject.parent - The parent of this state object, which cannot be nulldistinct - true to add DISTINCT to the query in order to
have distinct values; false if it is not requiredstateObject - The StateObject representing the encapsulated expressionjava.lang.NullPointerException - The given parent cannot be nullprotected AggregateFunctionStateObject(StateObject parent, boolean distinct, java.lang.String path)
AggregateFunctionStateObject.parent - The parent of this state object, which cannot be nulldistinct - true to add DISTINCT to the query in order to
have distinct values; false if it is not requiredpath - Either the identification variable or the state field path expressionjava.lang.NullPointerException - The given parent cannot be nullprotected AggregateFunctionStateObject(StateObject parent, StateObject stateObject)
AggregateStateObject.parent - The parent of this state object, which cannot be nullstateObject - The StateObject representing the encapsulated expressionjava.lang.NullPointerException - The given parent cannot be nullprotected AggregateFunctionStateObject(StateObject parent, java.lang.String path)
AggregateFunctionStateObject.parent - The parent of this state object, which cannot be nullpath - Either the identification variable or the state field path expressionjava.lang.NullPointerException - The given parent cannot be nullpublic AggregateFunction getExpression()
StateObject representation of the JPQL query
was created by parsing an existing JPQL query.getExpression in interface StateObjectgetExpression in class AbstractSingleEncapsulatedExpressionStateObjectStateObject
or null when the JPQL query is manually created (i.e. not from a string)public boolean hasDistinct()
DISTINCT keyword should be part of the query, which is
used to return only distinct (different) values.true to add DISTINCT to the query in order to have
distinct values; false if it is not requiredpublic boolean isEquivalent(StateObject stateObject)
StateObject is equivalent to this one, i.e. the
information of both StateObject is the same.isEquivalent in interface StateObjectisEquivalent in class AbstractSingleEncapsulatedExpressionStateObjectstateObject - The StateObject to compare its content to this onetrue if both object are equivalent; false otherwisepublic void setDistinct(boolean distinct)
DISTINCT keyword should be part of the query, which is
used to return only distinct (different) valuesdistinct - true to add DISTINCT to the query in order to
have distinct values; false if it is not requiredpublic void setStateObject(StateObject stateObject)
StateObject to represent the new encapsulated expression.setStateObject in class AbstractSingleEncapsulatedExpressionStateObjectstateObject - The new encapsulated StateObjectpublic void toggleDistinct()
DISTINCT identifier.protected void toTextEncapsulatedExpression(java.lang.Appendable writer)
throws java.io.IOException
true string representation of a JPQL query but should be used for
debugging purposes.toTextEncapsulatedExpression in class AbstractSingleEncapsulatedExpressionStateObjectwriter - The writer used to print out the string representation of the encapsulated
informationjava.io.IOException - This should never happens, only required because Appendable is
used instead of StringBuilder for instance