Class ExtractExpression
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.ExtractExpression
- All Implemented Interfaces:
Expression
The EXTRACT function extracts a date part from a date/time value. The date part can be
YEAR, MONTH, DAY, HOUR, MINUTE,
SECOND. Some databases may support other parts.
BNF:
extract_expression ::= EXTRACT(date_part_literal [FROM] scalar_expression)date_part_literal ::= { MICROSECOND | SECOND | MINUTE | HOUR | DAY | WEEK | MONTH | QUARTER | YEAR | SECOND_MICROSECOND | MINUTE_MICROSECOND | MINUTE_SECOND | HOUR_MICROSECOND | HOUR_SECOND | HOUR_MINUTE | DAY_MICROSECOND | DAY_SECOND | DAY_MINUTE | DAY_HOUR | YEAR_MONTH, etc }
- Version:
- 2.5
- Author:
- James Sutherland
-
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, 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
ConstructorsConstructorDescriptionExtractExpression(AbstractExpression parent) Creates a newExtractExpression. -
Method Summary
Modifier and TypeMethodDescriptionvoidaccept(ExpressionVisitor visitor) Visits thisExpressionby the givenvisitor.protected voidaddOrderedEncapsulatedExpressionTo(List<Expression> children) Adds theExpressionsrepresenting the encapsulatedExpression.Returns the actual FROM identifier found in the string representation of the JPQL query, which has the actual case that was used.Returns the date part that was parsed, it is used to extract a single part of a date/time, such as year, month, day, your, etc.Returns the BNF used to parse the encapsulated expression.Returns the BNF of thisExpression.booleanDetermines whether the date part literal was parsed or not.booleanDetermines whether something was parsed after the left parenthesis.booleanhasFrom()Determines whether the identifier FROM was part of the query.booleanDetermines whether a whitespace was found after the date part literal.booleanDetermines whether a whitespace was found after FROM.protected booleanisParsingComplete(WordParser wordParser, 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 voidRemoves the encapsulatedExpressionthat was parsed, it should not be part of this one.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, setExpressionMethods inherited from class org.eclipse.persistence.jpa.jpql.parser.AbstractEncapsulatedExpression
addOrderedChildrenTo, areLogicalIdentifiersSupported, getActualIdentifier, getIdentifier, hasLeftParenthesis, hasRightParenthesis, hasSpaceAfterIdentifier, 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
-
ExtractExpression
Creates a newExtractExpression.- Parameters:
parent- The parent of this 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
-
getActualFromIdentifier
Returns the actual FROM identifier found in the string representation of the JPQL query, which has the actual case that was used.- Returns:
- The FROM identifier that was actually parsed, or an empty string if it was not parsed
-
getDatePart
Returns the date part that was parsed, it is used to extract a single part of a date/time, such as year, month, day, your, etc.- Returns:
- The part of the date/time to retrieve
-
getQueryBNF
Description copied from interface:ExpressionReturns the BNF of thisExpression.- Returns:
- The
JPQLQueryBNF, which represents the grammar of thisExpression
-
hasDatePart
public boolean hasDatePart()Determines whether the date part literal was parsed or not.- Returns:
trueif the date part literal was parsed;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
-
hasFrom
public boolean hasFrom()Determines whether the identifier FROM was part of the query.- Returns:
trueif the identifier FROM was parsed;falseotherwise
-
hasSpaceAfterDatePart
public boolean hasSpaceAfterDatePart()Determines whether a whitespace was found after the date part literal.- Returns:
trueif there was a whitespace after the date part literal;falseotherwise
-
hasSpaceAfterFrom
public boolean hasSpaceAfterFrom()Determines whether a whitespace was found after FROM.- Returns:
trueif there was a whitespace after FROM;falseotherwise
-
isParsingComplete
Description copied from class:AbstractExpressionDetermines 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) 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
-
removeEncapsulatedExpression
protected void removeEncapsulatedExpression()Description copied from class:AbstractEncapsulatedExpressionRemoves 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
-
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
-