Class AbstractSingleEncapsulatedExpression
- java.lang.Object
-
- org.eclipse.persistence.jpa.jpql.parser.AbstractExpression
-
- org.eclipse.persistence.jpa.jpql.parser.AbstractEncapsulatedExpression
-
- org.eclipse.persistence.jpa.jpql.parser.AbstractSingleEncapsulatedExpression
-
- All Implemented Interfaces:
Expression
- Direct Known Subclasses:
AbsExpression,AggregateFunction,AllOrAnyExpression,CastExpression,CoalesceExpression,ConcatExpression,EncapsulatedIdentificationVariableExpression,ExistsExpression,ExtractExpression,FunctionExpression,LengthExpression,LowerExpression,SizeExpression,SqrtExpression,SubExpression,TableExpression,TrimExpression,TypeExpression,UpperExpression
public abstract class AbstractSingleEncapsulatedExpression extends AbstractEncapsulatedExpression
This expression handles parsing a JPQL identifier followed by an expression encapsulated within parenthesis.BNF:expression ::= <identifier>(expression)- Version:
- 2.5
- Author:
- Pascal Filion
- Since:
- 2.3
-
-
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 Modifier Constructor Description protectedAbstractSingleEncapsulatedExpression(AbstractExpression parent, java.lang.String identifier)Creates a newEncapsulatedExpression.
-
Method Summary
All Methods Instance Methods Abstract Methods Concrete Methods Modifier and Type Method Description voidacceptChildren(ExpressionVisitor visitor)Visits the children of thisExpression.protected voidaddChildrenTo(java.util.Collection<Expression> children)Adds the children of thisAbstractExpressionto the given collection.protected voidaddOrderedEncapsulatedExpressionTo(java.util.List<Expression> children)Adds theExpressionsrepresenting the encapsulatedExpression.JPQLQueryBNFfindQueryBNF(Expression expression)Retrieves theJPQLQueryBNFthat represents the fragment of thisExpressionthat was used when parsing the givenExpression.abstract java.lang.StringgetEncapsulatedExpressionQueryBNFId()Returns the BNF used to parse the encapsulated expression.ExpressiongetExpression()Returns theExpressionthat is encapsulated within parenthesis.booleanhasEncapsulatedExpression()Determines whether something was parsed after the left parenthesis.booleanhasExpression()Determines whether the encapsulated expression of the query was parsed.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.voidsetExpression(AbstractExpression expression)Manually sets the encapsulatedExpressionto become the given one.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.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
-
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
-
Methods inherited from interface org.eclipse.persistence.jpa.jpql.parser.Expression
accept, getQueryBNF
-
-
-
-
Constructor Detail
-
AbstractSingleEncapsulatedExpression
protected AbstractSingleEncapsulatedExpression(AbstractExpression parent, java.lang.String identifier)
Creates a newEncapsulatedExpression.- Parameters:
parent- The parent of this expressionidentifier- The JPQL identifier that starts this expression
-
-
Method Detail
-
acceptChildren
public void acceptChildren(ExpressionVisitor visitor)
Visits the children of thisExpression. This method can be used to optimize traversing the children since a new list is not created every timeExpression.children()is called.This does not traverse the
Expressionsub-hierarchy, use a subclass ofAbstractTraverseChildrenVisitorin order to traverse the entire sub-hierarchy.- Parameters:
visitor- Thevisitorto visit the children of this object.
-
addChildrenTo
protected final void addChildrenTo(java.util.Collection<Expression> children)
Adds the children of thisAbstractExpressionto the given collection.- Overrides:
addChildrenToin classAbstractExpression- Parameters:
children- The collection used to store the children
-
addOrderedEncapsulatedExpressionTo
protected void addOrderedEncapsulatedExpressionTo(java.util.List<Expression> children)
Adds theExpressionsrepresenting the encapsulatedExpression.- Specified by:
addOrderedEncapsulatedExpressionToin classAbstractEncapsulatedExpression- Parameters:
children- The list used to store the string representation of the encapsulatedExpression
-
findQueryBNF
public JPQLQueryBNF findQueryBNF(Expression expression)
Retrieves theJPQLQueryBNFthat represents the fragment of thisExpressionthat was used when parsing the givenExpression.- Specified by:
findQueryBNFin interfaceExpression- Overrides:
findQueryBNFin classAbstractExpression- Parameters:
expression- TheExpressionthat is a descendant of this one- Returns:
- The
JPQLQueryBNFthat was used to parse the given expression
-
getEncapsulatedExpressionQueryBNFId
public abstract java.lang.String getEncapsulatedExpressionQueryBNFId()
Returns the BNF used to parse the encapsulated expression.- Returns:
- The BNF used to parse the encapsulated expression
-
getExpression
public final Expression getExpression()
Returns theExpressionthat is encapsulated within parenthesis.- Returns:
- The
Expressionthat is encapsulated within parenthesis
-
hasEncapsulatedExpression
public boolean hasEncapsulatedExpression()
Determines whether something was parsed after the left parenthesis.- Specified by:
hasEncapsulatedExpressionin classAbstractEncapsulatedExpression- Returns:
trueif something was parsed;falseotherwise
-
hasExpression
public final boolean hasExpression()
Determines whether the encapsulated expression of the query was parsed.- Returns:
trueif the encapsulated expression was parsed;falseif it was not 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.- Specified by:
parseEncapsulatedExpressionin classAbstractEncapsulatedExpression- 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 ')'.- Specified by:
removeEncapsulatedExpressionin classAbstractEncapsulatedExpression
-
setExpression
public final void setExpression(AbstractExpression expression)
Manually sets the encapsulatedExpressionto become the given one.- Parameters:
expression- The new encapsulatedExpression, which cannot benull- Throws:
java.lang.NullPointerException- The givenAbstractExpressioncannot benull
-
toParsedTextEncapsulatedExpression
protected void toParsedTextEncapsulatedExpression(java.lang.StringBuilder writer, boolean actual)Generates a string representation of the encapsulatedExpression.- Specified by:
toParsedTextEncapsulatedExpressionin classAbstractEncapsulatedExpression- 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
-
-