Class AggregateFunction
- java.lang.Object
-
- org.eclipse.persistence.jpa.jpql.parser.AbstractExpression
-
- org.eclipse.persistence.jpa.jpql.parser.AbstractEncapsulatedExpression
-
- org.eclipse.persistence.jpa.jpql.parser.AbstractSingleEncapsulatedExpression
-
- org.eclipse.persistence.jpa.jpql.parser.AggregateFunction
-
- All Implemented Interfaces:
Expression
- Direct Known Subclasses:
AvgFunction,CountFunction,MaxFunction,MinFunction,SumFunction
public abstract class AggregateFunction extends AbstractSingleEncapsulatedExpression
In the SELECT clause the result of a query may be the result of an aggregate function applied to a path expression. The following aggregate functions can be used in the SELECT clause of a query: AVG, COUNT, MAX, MIN, SUM.A
single_valued_association_fieldis designated by the name of an association-field in a one-to-one or many-to-one relationship. The type of asingle_valued_association_fieldand thus asingle_valued_association_path_expressionis the abstract schema type of the related entity.The argument to an aggregate function may be preceded by the keyword DISTINCT to specify that duplicate values are to be eliminated before the aggregate function is applied. Null values are eliminated before the aggregate function is applied, regardless of whether the keyword DISTINCT is specified.
BNF:aggregate_expression ::= { AVG | MAX | MIN | SUM } ([DISTINCT] state_field_path_expression) | COUNT ([DISTINCT] identification_variable | state_field_path_expression | single_valued_object_path_expression)- Version:
- 2.5
- See Also:
AvgFunction,CountFunction,MaxFunction,MinFunction,SumFunction- Author:
- Pascal Filion
- Since:
- 2.3
-
-
Field Summary
-
Fields inherited from class org.eclipse.persistence.jpa.jpql.parser.AbstractExpression
COMMA, DOT, DOUBLE_QUOTE, LEFT_CURLY_BRACKET, LEFT_PARENTHESIS, NOT_DEFINED, RIGHT_CURLY_BRACKET, RIGHT_PARENTHESIS, SINGLE_QUOTE, SPACE, UNDERSCORE
-
Fields inherited from interface org.eclipse.persistence.jpa.jpql.parser.Expression
ABS, ALL, AND, ANY, AS, AS_OF, ASC, AVG, BETWEEN, BIT_LENGTH, BOTH, CASE, CAST, CHAR_LENGTH, CHARACTER_LENGTH, CLASS, COALESCE, COLUMN, CONCAT, CONNECT_BY, COUNT, CURRENT_DATE, CURRENT_TIME, CURRENT_TIMESTAMP, DELETE, DELETE_FROM, DESC, DIFFERENT, DISTINCT, DIVISION, ELSE, EMPTY, END, ENTRY, EQUAL, ESCAPE, EXCEPT, EXISTS, EXTRACT, FALSE, FETCH, FIRST, FROM, FUNC, FUNCTION, GREATER_THAN, GREATER_THAN_OR_EQUAL, GROUP_BY, HAVING, IN, INDEX, INNER, INNER_JOIN, INNER_JOIN_FETCH, INTERSECT, IS, IS_EMPTY, IS_NOT_EMPTY, IS_NOT_NULL, IS_NULL, JOIN, JOIN_FETCH, KEY, LAST, LEADING, LEFT, LEFT_JOIN, LEFT_JOIN_FETCH, LEFT_OUTER_JOIN, LEFT_OUTER_JOIN_FETCH, LENGTH, LIKE, LOCATE, LOWER, LOWER_THAN, LOWER_THAN_OR_EQUAL, MAX, MEMBER, MEMBER_OF, MIN, MINUS, MOD, MULTIPLICATION, NAMED_PARAMETER, NEW, NOT, NOT_BETWEEN, NOT_EQUAL, NOT_EXISTS, NOT_IN, NOT_LIKE, NOT_MEMBER, NOT_MEMBER_OF, NULL, NULLIF, NULLS, NULLS_FIRST, NULLS_LAST, OBJECT, OF, ON, OPERATOR, OR, ORDER_BY, ORDER_SIBLINGS_BY, OUTER, PLUS, POSITION, POSITIONAL_PARAMETER, QUOTE, REGEXP, SCN, SELECT, SET, SIZE, SOME, SQL, SQRT, START_WITH, SUBSTRING, SUM, TABLE, THEN, TIMESTAMP, TRAILING, TREAT, TRIM, TRUE, TYPE, UNION, UNKNOWN, UPDATE, UPPER, VALUE, WHEN, WHERE
-
-
Constructor Summary
Constructors Modifier Constructor Description protectedAggregateFunction(AbstractExpression parent, java.lang.String identifier)Creates a newAggregateFunction.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description protected voidaddOrderedEncapsulatedExpressionTo(java.util.List<Expression> children)Adds theExpressionsrepresenting the encapsulatedExpression.protected AbstractExpressionbuildEncapsulatedExpression(WordParser wordParser, java.lang.String word)Creates theAbstractExpressionto represent the given word.java.lang.StringgetActualDistinctIdentifier()Returns the actual DISTINCT identifier found in the string representation of the JPQL query, which has the actual case that was used.java.lang.StringgetEncapsulatedExpressionQueryBNFId()Returns the BNF used to parse the encapsulated expression.JPQLQueryBNFgetQueryBNF()Returns the BNF of thisExpression.booleanhasDistinct()Determines whether the DISTINCT identifier was specified in the query.booleanhasSpaceAfterDistinct()Determines whether a whitespace was parsed after DISTINCT.protected voidparseEncapsulatedExpression(WordParser wordParser, int whitespaceCount, boolean tolerant)Parses the encapsulated expression by starting at the current position, which is part of the givenWordParser.protected voidtoParsedTextEncapsulatedExpression(java.lang.StringBuilder writer, boolean actual)Generates a string representation of the encapsulatedExpression.-
Methods inherited from class org.eclipse.persistence.jpa.jpql.parser.AbstractSingleEncapsulatedExpression
acceptChildren, addChildrenTo, findQueryBNF, getExpression, hasEncapsulatedExpression, hasExpression, removeEncapsulatedExpression, setExpression
-
Methods inherited from class org.eclipse.persistence.jpa.jpql.parser.AbstractEncapsulatedExpression
addOrderedChildrenTo, areLogicalIdentifiersSupported, getActualIdentifier, getIdentifier, hasLeftParenthesis, hasRightParenthesis, hasSpaceAfterIdentifier, isParsingComplete, parse, shouldParseRightParenthesis, toParsedText
-
Methods inherited from class org.eclipse.persistence.jpa.jpql.parser.AbstractExpression
acceptUnknownVisitor, acceptUnknownVisitor, buildExpressionFromFallingBack, buildNullExpression, buildStringExpression, buildStringExpression, buildUnknownExpression, calculatePosition, children, findFallBackExpressionFactory, getExpressionFactory, getExpressionRegistry, getGrammar, getIdentifierVersion, getJPAVersion, getLength, getOffset, getParent, getQueryBNF, getRoot, getText, handleAggregate, handleCollection, isAncestor, isIdentifier, isNull, isTolerant, isUnknown, isVirtual, orderedChildren, parse, parseUsingExpressionFactory, populatePosition, rebuildActualText, rebuildParsedText, setParent, setText, shouldParseWithFactoryFirst, shouldSkipLiteral, toActualText, toParsedText, toString
-
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
-
Methods inherited from interface org.eclipse.persistence.jpa.jpql.parser.Expression
accept
-
-
-
-
Constructor Detail
-
AggregateFunction
protected AggregateFunction(AbstractExpression parent, java.lang.String identifier)
Creates a newAggregateFunction.- Parameters:
parent- The parent of this expressionidentifier- The JPQL identifier that starts this expression
-
-
Method Detail
-
addOrderedEncapsulatedExpressionTo
protected void addOrderedEncapsulatedExpressionTo(java.util.List<Expression> children)
Adds theExpressionsrepresenting the encapsulatedExpression.- Overrides:
addOrderedEncapsulatedExpressionToin classAbstractSingleEncapsulatedExpression- Parameters:
children- The list used to store the string representation of the encapsulatedExpression
-
buildEncapsulatedExpression
protected AbstractExpression buildEncapsulatedExpression(WordParser wordParser, java.lang.String word)
Creates theAbstractExpressionto represent the given word.- Parameters:
word- The word that was parsed- Returns:
- The encapsulated
AbstractExpression
-
getEncapsulatedExpressionQueryBNFId
public java.lang.String getEncapsulatedExpressionQueryBNFId()
Returns the BNF used to parse the encapsulated expression.- Specified by:
getEncapsulatedExpressionQueryBNFIdin classAbstractSingleEncapsulatedExpression- Returns:
- The BNF used to parse the encapsulated expression
-
getActualDistinctIdentifier
public java.lang.String getActualDistinctIdentifier()
Returns the actual DISTINCT identifier found in the string representation of the JPQL query, which has the actual case that was used.- Returns:
- The DISTINCT identifier that was actually parsed, or an empty string if it was not parsed
-
getQueryBNF
public JPQLQueryBNF getQueryBNF()
Returns the BNF of thisExpression.- Returns:
- The
JPQLQueryBNF, which represents the grammar of thisExpression
-
hasDistinct
public final boolean hasDistinct()
Determines whether the DISTINCT identifier was specified in the query.- Returns:
trueif the query has DISTINCT;falseotherwise
-
hasSpaceAfterDistinct
public final boolean hasSpaceAfterDistinct()
Determines whether a whitespace was parsed after DISTINCT.- Returns:
trueif there was a whitespace after DISTINCT;falseotherwise
-
parseEncapsulatedExpression
protected final void parseEncapsulatedExpression(WordParser wordParser, int whitespaceCount, boolean tolerant)
Parses the encapsulated expression by starting at the current position, which is part of the givenWordParser.- Overrides:
parseEncapsulatedExpressionin classAbstractSingleEncapsulatedExpression- Parameters:
wordParser- The text to parse based on the current position of the cursorwhitespaceCount- The number of whitespace characters that were parsed after '('tolerant- Determines whether the parsing system should be tolerant, meaning if it should try to parse invalid or incomplete queries
-
toParsedTextEncapsulatedExpression
protected void toParsedTextEncapsulatedExpression(java.lang.StringBuilder writer, boolean actual)Generates a string representation of the encapsulatedExpression.- Overrides:
toParsedTextEncapsulatedExpressionin classAbstractSingleEncapsulatedExpression- Parameters:
writer- The buffer used to append the encapsulatedExpression's string representationactual- Determines whether to include any characters that are considered virtual, i.e. that was parsed when the query is incomplete and is needed for functionality like content assist
-
-