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
public final class FunctionExpression extends AbstractSingleEncapsulatedExpression
This expression adds support to call native database functions.New to JPA 2.1.
BNF:func_expression ::= <identifier>('function_name' {, func_item}*)
- Version:
- 2.5
- Author:
- James
- Since:
- 2.4
-
-
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 Constructor Description FunctionExpression(AbstractExpression parent, java.lang.String identifier)
Creates a newFuncExpression
.FunctionExpression(AbstractExpression parent, java.lang.String identifier, FunctionExpressionFactory.ParameterCount parameterCount, java.lang.String parameterQueryBNFId)
Creates a newFunctionExpression
.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description void
accept(ExpressionVisitor visitor)
Visits thisExpression
by the givenvisitor
.protected void
addOrderedEncapsulatedExpressionTo(java.util.List<Expression> children)
Adds theExpressions
representing the encapsulatedExpression
.java.lang.String
getEncapsulatedExpressionQueryBNFId()
Returns the BNF used to parse the encapsulated expression.java.lang.String
getFunctionName()
Returns the name of the SQL function.FunctionExpressionFactory.ParameterCount
getParameterCount()
Returns the number of parameters aFunctionExpression
can have, which will be during validation.JPQLQueryBNF
getQueryBNF()
Returns the BNF of thisExpression
.java.lang.String
getUnquotedFunctionName()
Returns the name of the SQL function.boolean
hasComma()
Determines whether the comma was parsed after the function name.boolean
hasEncapsulatedExpression()
Determines whether something was parsed after the left parenthesis.boolean
hasFunctionName()
Determines whether the function name was parsed.boolean
hasSpaceAfterComma()
Determines whether a whitespace was parsed after the comma.protected void
parseEncapsulatedExpression(WordParser wordParser, int whitespaceCount, boolean tolerant)
Parses the encapsulated expression by starting at the current position, which is part of the givenWordParser
.protected void
toParsedTextEncapsulatedExpression(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, 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
-
-
-
-
Constructor Detail
-
FunctionExpression
public FunctionExpression(AbstractExpression parent, java.lang.String identifier)
Creates a newFuncExpression
.- Parameters:
parent
- The parent of this expressionidentifier
- The JPQL identifier
-
FunctionExpression
public FunctionExpression(AbstractExpression parent, java.lang.String identifier, FunctionExpressionFactory.ParameterCount parameterCount, java.lang.String parameterQueryBNFId)
Creates a newFunctionExpression
.- Parameters:
parent
- The parent of this expressionidentifier
- The JPQL identifierparameterCount
- The number ofparameters
aFunctionExpression
can haveparameterQueryBNFId
- The unique identifier of theJPQLQueryBNF
that will be used to parse the arguments of the function expression
-
-
Method Detail
-
accept
public void accept(ExpressionVisitor visitor)
Visits thisExpression
by the givenvisitor
.- Parameters:
visitor
- TheExpressionVisitor
to visit this object
-
addOrderedEncapsulatedExpressionTo
protected void addOrderedEncapsulatedExpressionTo(java.util.List<Expression> children)
Adds theExpressions
representing the encapsulatedExpression
.- Overrides:
addOrderedEncapsulatedExpressionTo
in classAbstractSingleEncapsulatedExpression
- Parameters:
children
- The list used to store the string representation of the encapsulatedExpression
-
getEncapsulatedExpressionQueryBNFId
public java.lang.String getEncapsulatedExpressionQueryBNFId()
Returns the BNF used to parse the encapsulated expression.- Specified by:
getEncapsulatedExpressionQueryBNFId
in classAbstractSingleEncapsulatedExpression
- Returns:
- The BNF used to parse the encapsulated expression
-
getFunctionName
public java.lang.String getFunctionName()
Returns the name of the SQL function.- Returns:
- The name of the SQL function
-
getParameterCount
public FunctionExpressionFactory.ParameterCount getParameterCount()
Returns the number of parameters aFunctionExpression
can have, which will be during validation.- Returns:
- The number of parameters (encapsulated expressions) allowed by this expression
- Since:
- 2.4
-
getQueryBNF
public JPQLQueryBNF getQueryBNF()
Returns the BNF of thisExpression
.- Returns:
- The
JPQLQueryBNF
, which represents the grammar of thisExpression
-
getUnquotedFunctionName
public java.lang.String 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:
true
if a comma was parsed after the function name and the first expression;false
otherwise
-
hasEncapsulatedExpression
public boolean hasEncapsulatedExpression()
Determines whether something was parsed after the left parenthesis.- Overrides:
hasEncapsulatedExpression
in classAbstractSingleEncapsulatedExpression
- Returns:
true
if something was parsed;false
otherwise
-
hasFunctionName
public boolean hasFunctionName()
Determines whether the function name was parsed.- Returns:
true
if the function name was parsed;false
otherwise
-
hasSpaceAfterComma
public boolean hasSpaceAfterComma()
Determines whether a whitespace was parsed after the comma.- Returns:
true
if there was a whitespace after the comma;false
otherwise
-
parseEncapsulatedExpression
protected 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:
parseEncapsulatedExpression
in 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:
toParsedTextEncapsulatedExpression
in 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
-
-