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
public final class CastExpression extends AbstractSingleEncapsulatedExpression
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)- Version:
- 2.5
- See Also:
DatabaseType- Author:
- James Sutherland
- 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 CastExpression(AbstractExpression parent)Creates a newCastExpression.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description voidaccept(ExpressionVisitor visitor)Visits thisExpressionby the givenvisitor.protected voidaddOrderedEncapsulatedExpressionTo(java.util.List<Expression> children)Adds theExpressionsrepresenting the encapsulatedExpression.ExpressiongetDatabaseType()Returns the database type to cast to.java.lang.StringgetEncapsulatedExpressionQueryBNFId()Returns the BNF used to parse the encapsulated expression.JPQLQueryBNFgetQueryBNF()Returns the BNF of thisExpression.booleanhasAs()Determines whether the identifier AS was part of the query.booleanhasDatabaseType()Determines whether the database type was parsed or not.booleanhasEncapsulatedExpression()Determines whether something was parsed after the left parenthesis.booleanhasScalarExpression()Determines whether something was parsed after the left parenthesis and before theASidentifier.booleanhasSpaceAfterAs()Determines whether a whitespace parsed after AS.booleanhasSpaceAfterExpression()Determines whether a whitespace was parsed after the expression.protected booleanisParsingComplete(WordParser wordParser, java.lang.String word, Expression expression)Determines whether the parsing is complete based on what is left in the given text.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 voidremoveEncapsulatedExpression()Removes the encapsulatedExpressionthat was parsed, it should not be part of this one.protected booleanshouldParseWithFactoryFirst()Determines whether the parsing of the query should be performed using thefactoriesfirst or it should automatically fallback to the fallback factory.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, 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 Detail
-
CastExpression
public CastExpression(AbstractExpression parent)
Creates a newCastExpression.- Parameters:
parent- The parent of this expression
-
-
Method Detail
-
accept
public void accept(ExpressionVisitor visitor)
Visits thisExpressionby the givenvisitor.- Parameters:
visitor- TheExpressionVisitorto visit this object
-
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
-
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
-
getDatabaseType
public Expression getDatabaseType()
Returns the database type to cast to.- Returns:
- The
Expressionrepresenting the database type
-
getQueryBNF
public JPQLQueryBNF getQueryBNF()
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:
trueif the identifier AS was parsed;falseotherwise
-
hasDatabaseType
public boolean hasDatabaseType()
Determines whether the database type was parsed or not.- Returns:
trueif the database type was parsed;falseotherwise
-
hasEncapsulatedExpression
public boolean hasEncapsulatedExpression()
Determines whether something was parsed after the left parenthesis.- Overrides:
hasEncapsulatedExpressionin classAbstractSingleEncapsulatedExpression- Returns:
trueif something was parsed;falseotherwise
-
hasScalarExpression
public boolean hasScalarExpression()
Determines whether something was parsed after the left parenthesis and before theASidentifier.- Returns:
truethe expression to be cast was parsed;falseotherwise- Since:
- 2.5
-
hasSpaceAfterAs
public boolean hasSpaceAfterAs()
Determines whether a whitespace parsed after AS.- Returns:
trueif there was a whitespace parsed after AS;falseotherwise
-
hasSpaceAfterExpression
public boolean hasSpaceAfterExpression()
Determines whether a whitespace was parsed after the expression.- Returns:
trueif there was a whitespace parsed after the expression;falseotherwise
-
isParsingComplete
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. The text is never empty.- Overrides:
isParsingCompletein 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- TheExpressionthat has already been parsed- Returns:
trueif the text no longer can't be parsed by the current expression;falseif more can be parsed
-
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:
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
-
removeEncapsulatedExpression
protected void removeEncapsulatedExpression()
Removes the encapsulatedExpressionthat was parsed, it should not be part of this one. This happens when the parsed information does not have both '(' and ')'.- Overrides:
removeEncapsulatedExpressionin classAbstractSingleEncapsulatedExpression
-
shouldParseWithFactoryFirst
protected boolean shouldParseWithFactoryFirst()
Determines whether the parsing of the query should be performed using thefactoriesfirst or it should automatically fallback to the fallback factory.- Overrides:
shouldParseWithFactoryFirstin classAbstractExpression- Returns:
trueis returned by default so the factories are used before falling back
-
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
-
-