Class CastExpression
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.CastExpression
- All Implemented Interfaces:
Expression
The CAST function cast value to a different type. The database type is the second parameter,
and can be any valid database type including size and scale.
BNF:
expression ::= CAST(scalar_expression [AS] database_type)
- Since:
- 2.4
- Version:
- 2.5
- See Also:
-
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, 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
-
Method Summary
Modifier and TypeMethodDescriptionvoid
accept
(ExpressionVisitor visitor) Visits thisExpression
by the givenvisitor
.protected void
addOrderedEncapsulatedExpressionTo
(List<Expression> children) Adds theExpressions
representing the encapsulatedExpression
.Returns the database type to cast to.Returns the BNF used to parse the encapsulated expression.Returns the BNF of thisExpression
.boolean
hasAs()
Determines whether the identifier AS was part of the query.boolean
Determines whether the database type was parsed or not.boolean
Determines whether something was parsed after the left parenthesis.boolean
Determines whether something was parsed after the left parenthesis and before theAS
identifier.boolean
Determines whether a whitespace parsed after AS.boolean
Determines whether a whitespace was parsed after the expression.protected boolean
isParsingComplete
(WordParser wordParser, String word, Expression expression) Determines whether the parsing is complete based on what is left in the given text.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
Removes the encapsulatedExpression
that was parsed, it should not be part of this one.protected boolean
Determines whether the parsing of the query should be performed using thefactories
first or it should automatically fallback to the fallback factory.protected void
toParsedTextEncapsulatedExpression
(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, setExpression
Methods inherited from class org.eclipse.persistence.jpa.jpql.parser.AbstractEncapsulatedExpression
addOrderedChildrenTo, areLogicalIdentifiersSupported, getActualIdentifier, getIdentifier, hasLeftParenthesis, hasRightParenthesis, hasSpaceAfterIdentifier, 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, shouldSkipLiteral, toActualText, toParsedText, toString
-
Constructor Details
-
CastExpression
Creates a newCastExpression
.- Parameters:
parent
- The parent of this expression
-
-
Method Details
-
accept
Description copied from interface:Expression
Visits thisExpression
by the givenvisitor
.- Parameters:
visitor
- TheExpressionVisitor
to visit this object
-
addOrderedEncapsulatedExpressionTo
Description copied from class:AbstractEncapsulatedExpression
Adds theExpressions
representing the encapsulatedExpression
.- Overrides:
addOrderedEncapsulatedExpressionTo
in classAbstractSingleEncapsulatedExpression
- Parameters:
children
- The list used to store the string representation of the encapsulatedExpression
-
getEncapsulatedExpressionQueryBNFId
Description copied from class:AbstractSingleEncapsulatedExpression
Returns the BNF used to parse the encapsulated expression.- Specified by:
getEncapsulatedExpressionQueryBNFId
in classAbstractSingleEncapsulatedExpression
- Returns:
- The BNF used to parse the encapsulated expression
-
getDatabaseType
Returns the database type to cast to.- Returns:
- The
Expression
representing the database type
-
getQueryBNF
Description copied from interface:Expression
Returns the BNF of thisExpression
.- Returns:
- The
JPQLQueryBNF
, which represents the grammar of thisExpression
-
hasAs
public boolean hasAs()Determines whether the identifier AS was part of the query.- Returns:
true
if the identifier AS was parsed;false
otherwise
-
hasDatabaseType
public boolean hasDatabaseType()Determines whether the database type was parsed or not.- Returns:
true
if the database type was parsed;false
otherwise
-
hasEncapsulatedExpression
public boolean hasEncapsulatedExpression()Description copied from class:AbstractEncapsulatedExpression
Determines whether something was parsed after the left parenthesis.- Overrides:
hasEncapsulatedExpression
in classAbstractSingleEncapsulatedExpression
- Returns:
true
if something was parsed;false
otherwise
-
hasScalarExpression
public boolean hasScalarExpression()Determines whether something was parsed after the left parenthesis and before theAS
identifier.- Returns:
true
the expression to be cast was parsed;false
otherwise- Since:
- 2.5
-
hasSpaceAfterAs
public boolean hasSpaceAfterAs()Determines whether a whitespace parsed after AS.- Returns:
true
if there was a whitespace parsed after AS;false
otherwise
-
hasSpaceAfterExpression
public boolean hasSpaceAfterExpression()Determines whether a whitespace was parsed after the expression.- Returns:
true
if there was a whitespace parsed after the expression;false
otherwise
-
isParsingComplete
Description copied from class:AbstractExpression
Determines whether the parsing is complete based on what is left in the given text. The text is never empty.- Overrides:
isParsingComplete
in classAbstractEncapsulatedExpression
- Parameters:
wordParser
- The text to parse based on the current position of the cursorword
- The word that was retrieved from the given text, which is the first word in the textexpression
- TheExpression
that has already been parsed- Returns:
true
if the text no longer can't be parsed by the current expression;false
if more can be parsed
-
parseEncapsulatedExpression
protected void parseEncapsulatedExpression(WordParser wordParser, int whitespaceCount, boolean tolerant) Description copied from class:AbstractEncapsulatedExpression
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
-
removeEncapsulatedExpression
protected void removeEncapsulatedExpression()Description copied from class:AbstractEncapsulatedExpression
Removes the encapsulatedExpression
that was parsed, it should not be part of this one. This happens when the parsed information does not have both '(' and ')'.- Overrides:
removeEncapsulatedExpression
in classAbstractSingleEncapsulatedExpression
-
shouldParseWithFactoryFirst
protected boolean shouldParseWithFactoryFirst()Description copied from class:AbstractExpression
Determines whether the parsing of the query should be performed using thefactories
first or it should automatically fallback to the fallback factory.- Overrides:
shouldParseWithFactoryFirst
in classAbstractExpression
- Returns:
true
is returned by default so the factories are used before falling back
-
toParsedTextEncapsulatedExpression
Description copied from class:AbstractEncapsulatedExpression
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
-