public final class CastExpression extends AbstractSingleEncapsulatedExpression
expression ::= CAST(scalar_expression [AS] database_type)
DatabaseType
COMMA, DOT, DOUBLE_QUOTE, LEFT_CURLY_BRACKET, LEFT_PARENTHESIS, NOT_DEFINED, RIGHT_CURLY_BRACKET, RIGHT_PARENTHESIS, SINGLE_QUOTE, SPACE, UNDERSCORE
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 and Description |
---|
CastExpression(AbstractExpression parent)
Creates a new
CastExpression . |
Modifier and Type | Method and Description |
---|---|
void |
accept(ExpressionVisitor visitor)
Visits this
Expression by the given visitor . |
protected void |
addOrderedEncapsulatedExpressionTo(java.util.List<Expression> children)
Adds the
Expressions representing the encapsulated Expression . |
Expression |
getDatabaseType()
Returns the database type to cast to.
|
java.lang.String |
getEncapsulatedExpressionQueryBNFId()
Returns the BNF used to parse the encapsulated expression.
|
JPQLQueryBNF |
getQueryBNF()
Returns the BNF of this
Expression . |
boolean |
hasAs()
Determines whether the identifier AS was part of the query.
|
boolean |
hasDatabaseType()
Determines whether the database type was parsed or not.
|
boolean |
hasEncapsulatedExpression()
Determines whether something was parsed after the left parenthesis.
|
boolean |
hasScalarExpression()
Determines whether something was parsed after the left parenthesis and before the
AS identifier. |
boolean |
hasSpaceAfterAs()
Determines whether a whitespace parsed after AS.
|
boolean |
hasSpaceAfterExpression()
Determines whether a whitespace was parsed after the expression.
|
protected boolean |
isParsingComplete(WordParser wordParser,
java.lang.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
given
WordParser . |
protected void |
removeEncapsulatedExpression()
Removes the encapsulated
Expression that was parsed, it should not be part of this one. |
protected boolean |
shouldParseWithFactoryFirst()
Determines whether the parsing of the query should be performed using the
factories first or it should automatically fallback to the fallback factory. |
protected void |
toParsedTextEncapsulatedExpression(java.lang.StringBuilder writer,
boolean actual)
Generates a string representation of the encapsulated
Expression . |
acceptChildren, addChildrenTo, findQueryBNF, getExpression, hasExpression, setExpression
addOrderedChildrenTo, areLogicalIdentifiersSupported, getActualIdentifier, getIdentifier, hasLeftParenthesis, hasRightParenthesis, hasSpaceAfterIdentifier, parse, shouldParseRightParenthesis, toParsedText
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
public CastExpression(AbstractExpression parent)
CastExpression
.parent
- The parent of this expressionpublic void accept(ExpressionVisitor visitor)
Expression
by the given visitor
.visitor
- The ExpressionVisitor
to visit this objectprotected void addOrderedEncapsulatedExpressionTo(java.util.List<Expression> children)
Expressions
representing the encapsulated Expression
.addOrderedEncapsulatedExpressionTo
in class AbstractSingleEncapsulatedExpression
children
- The list used to store the string representation of the encapsulated Expression
public java.lang.String getEncapsulatedExpressionQueryBNFId()
getEncapsulatedExpressionQueryBNFId
in class AbstractSingleEncapsulatedExpression
public Expression getDatabaseType()
Expression
representing the database typepublic JPQLQueryBNF getQueryBNF()
Expression
.JPQLQueryBNF
, which represents the grammar of this Expression
public boolean hasAs()
true
if the identifier AS was parsed; false
otherwisepublic boolean hasDatabaseType()
true
if the database type was parsed; false
otherwisepublic boolean hasEncapsulatedExpression()
hasEncapsulatedExpression
in class AbstractSingleEncapsulatedExpression
true
if something was parsed; false
otherwisepublic boolean hasScalarExpression()
AS
identifier.true
the expression to be cast was parsed; false
otherwisepublic boolean hasSpaceAfterAs()
true
if there was a whitespace parsed after AS;
false
otherwisepublic boolean hasSpaceAfterExpression()
true
if there was a whitespace parsed after the expression;
false
otherwiseprotected boolean isParsingComplete(WordParser wordParser, java.lang.String word, Expression expression)
isParsingComplete
in class AbstractEncapsulatedExpression
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
- The Expression
that has already been parsedtrue
if the text no longer can't be parsed by the current expression;
false
if more can be parsedprotected void parseEncapsulatedExpression(WordParser wordParser, int whitespaceCount, boolean tolerant)
WordParser
.parseEncapsulatedExpression
in class AbstractSingleEncapsulatedExpression
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 queriesprotected void removeEncapsulatedExpression()
Expression
that was parsed, it should not be part of this one.
This happens when the parsed information does not have both '(' and ')'.removeEncapsulatedExpression
in class AbstractSingleEncapsulatedExpression
protected boolean shouldParseWithFactoryFirst()
factories
first or it should automatically fallback to the fallback factory.shouldParseWithFactoryFirst
in class AbstractExpression
true
is returned by default so the factories are used before falling backprotected void toParsedTextEncapsulatedExpression(java.lang.StringBuilder writer, boolean actual)
Expression
.toParsedTextEncapsulatedExpression
in class AbstractSingleEncapsulatedExpression
writer
- The buffer used to append the encapsulated Expression
'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