Class FunctionExpression
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.FunctionExpression
- All Implemented Interfaces:
Expression
This expression adds support to call native database functions.
New to JPA 2.1.
BNF:
func_expression ::= <identifier>('function_name' {, func_item}*)- Since:
- 2.4
- Version:
- 2.5
-
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, UNDERSCOREFields 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, CEILING, CHAR_LENGTH, CHARACTER_LENGTH, CLASS, COALESCE, COLUMN, CONCAT, CONNECT_BY, COUNT, CURRENT_DATE, CURRENT_TIME, CURRENT_TIMESTAMP, DATE, DATETIME, DELETE, DELETE_FROM, DESC, DIFFERENT, DISTINCT, DIVISION, ELSE, EMPTY, END, ENTRY, EQUAL, ESCAPE, EXCEPT, EXISTS, EXP, EXTRACT, FALSE, FETCH, FIRST, FLOOR, 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, LN, LOCAL, 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, POWER, QUOTE, REGEXP, ROUND, SCN, SELECT, SET, SIGN, SIZE, SOME, SQL, SQRT, START_WITH, SUBSTRING, SUM, TABLE, THEN, TIME, TIMESTAMP, TRAILING, TREAT, TRIM, TRUE, TYPE, UNION, UNKNOWN, UPDATE, UPPER, VALUE, WHEN, WHERE -
Constructor Summary
ConstructorsConstructorDescriptionFunctionExpression(AbstractExpression parent, String identifier) Creates a newFuncExpression.FunctionExpression(AbstractExpression parent, String identifier, FunctionExpressionFactory.ParameterCount parameterCount, String parameterQueryBNFId) Creates a newFunctionExpression. -
Method Summary
Modifier and TypeMethodDescriptionvoidaccept(ExpressionVisitor visitor) Visits thisExpressionby the givenvisitor.protected voidaddOrderedEncapsulatedExpressionTo(List<Expression> children) Adds theExpressionsrepresenting the encapsulatedExpression.Returns the BNF used to parse the encapsulated expression.Returns the name of the SQL function.Returns the number of parameters aFunctionExpressioncan have, which will be during validation.Returns the BNF of thisExpression.Returns the name of the SQL function.booleanhasComma()Determines whether the comma was parsed after the function name.booleanDetermines whether something was parsed after the left parenthesis.booleanDetermines whether the function name was parsed.booleanDetermines whether a whitespace was parsed after the comma.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(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, hasExpression, removeEncapsulatedExpression, setExpressionMethods inherited from class org.eclipse.persistence.jpa.jpql.parser.AbstractEncapsulatedExpression
addOrderedChildrenTo, areLogicalIdentifiersSupported, getActualIdentifier, getIdentifier, hasLeftParenthesis, hasRightParenthesis, hasSpaceAfterIdentifier, isParsingComplete, parse, shouldParseRightParenthesis, toParsedTextMethods 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
-
Constructor Details
-
FunctionExpression
Creates a newFuncExpression.- Parameters:
parent- The parent of this expressionidentifier- The JPQL identifier
-
FunctionExpression
public FunctionExpression(AbstractExpression parent, String identifier, FunctionExpressionFactory.ParameterCount parameterCount, String parameterQueryBNFId) Creates a newFunctionExpression.- Parameters:
parent- The parent of this expressionidentifier- The JPQL identifierparameterCount- The number ofparametersaFunctionExpressioncan haveparameterQueryBNFId- The unique identifier of theJPQLQueryBNFthat will be used to parse the arguments of the function expression
-
-
Method Details
-
accept
Description copied from interface:ExpressionVisits thisExpressionby the givenvisitor.- Parameters:
visitor- TheExpressionVisitorto visit this object
-
addOrderedEncapsulatedExpressionTo
Description copied from class:AbstractEncapsulatedExpressionAdds theExpressionsrepresenting the encapsulatedExpression.- Overrides:
addOrderedEncapsulatedExpressionToin classAbstractSingleEncapsulatedExpression- Parameters:
children- The list used to store the string representation of the encapsulatedExpression
-
getEncapsulatedExpressionQueryBNFId
Description copied from class:AbstractSingleEncapsulatedExpressionReturns the BNF used to parse the encapsulated expression.- Specified by:
getEncapsulatedExpressionQueryBNFIdin classAbstractSingleEncapsulatedExpression- Returns:
- The BNF used to parse the encapsulated expression
-
getFunctionName
Returns the name of the SQL function.- Returns:
- The name of the SQL function
-
getParameterCount
Returns the number of parameters aFunctionExpressioncan have, which will be during validation.- Returns:
- The number of parameters (encapsulated expressions) allowed by this expression
- Since:
- 2.4
-
getQueryBNF
Description copied from interface:ExpressionReturns the BNF of thisExpression.- Returns:
- The
JPQLQueryBNF, which represents the grammar of thisExpression
-
getUnquotedFunctionName
Returns the name of the SQL function.- Returns:
- The name of the SQL function
-
hasComma
public boolean hasComma()Determines whether the comma was parsed after the function name.- Returns:
trueif a comma was parsed after the function name and the first expression;falseotherwise
-
hasEncapsulatedExpression
public boolean hasEncapsulatedExpression()Description copied from class:AbstractEncapsulatedExpressionDetermines whether something was parsed after the left parenthesis.- Overrides:
hasEncapsulatedExpressionin classAbstractSingleEncapsulatedExpression- Returns:
trueif something was parsed;falseotherwise
-
hasFunctionName
public boolean hasFunctionName()Determines whether the function name was parsed.- Returns:
trueif the function name was parsed;falseotherwise
-
hasSpaceAfterComma
public boolean hasSpaceAfterComma()Determines whether a whitespace was parsed after the comma.- Returns:
trueif there was a whitespace after the comma;falseotherwise
-
parseEncapsulatedExpression
protected void parseEncapsulatedExpression(WordParser wordParser, int whitespaceCount, boolean tolerant) Description copied from class:AbstractEncapsulatedExpressionParses 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
Description copied from class:AbstractEncapsulatedExpressionGenerates 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
-