public final class CollectionExpression extends AbstractExpression
CollectionExpression
wraps many expression which they are separated by spaces
and/or commas.
expression ::= child_item {, child_item }*
expression ::= child_item { child_item }*
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 |
---|
CollectionExpression(AbstractExpression parent,
java.util.List<AbstractExpression> children,
java.util.List<java.lang.Boolean> commas,
java.util.List<java.lang.Boolean> spaces)
Creates a new
CollectionExpression . |
CollectionExpression(AbstractExpression parent,
java.util.List<AbstractExpression> children,
java.util.List<java.lang.Boolean> commas,
java.util.List<java.lang.Boolean> spaces,
boolean temporary)
Creates a new
CollectionExpression . |
Modifier and Type | Method and Description |
---|---|
void |
accept(ExpressionVisitor visitor)
Visits this
Expression by the given visitor . |
void |
accept(int index,
ExpressionVisitor visitor)
Visits the child
Expression at the given position by the given visitor . |
void |
acceptChildren(ExpressionVisitor visitor)
Visits the children of this
Expression . |
protected void |
addChildrenTo(java.util.Collection<Expression> children)
Adds the children of this
AbstractExpression to the given collection. |
protected void |
addOrderedChildrenTo(java.util.List<Expression> children)
Adds the children of this
AbstractExpression to the given list. |
int |
childrenSize()
Returns the count of child
expressions . |
boolean |
endsWithComma()
Determines whether this
CollectionExpression ends with a comma, which means the last
Expression is a "null " expression. |
boolean |
endsWithSpace()
Determines whether this
CollectionExpression ends with a space, which means the last
Expression is a "null " expression. |
JPQLQueryBNF |
findQueryBNF(Expression expression)
Retrieves the
JPQLQueryBNF that represents the fragment of this Expression
that was used when parsing the given Expression . |
Expression |
getChild(int index)
Retrieves the child
Expression at the given position. |
JPQLQueryBNF |
getQueryBNF()
Returns the BNF of this
Expression . |
boolean |
hasComma(int index)
Determines whether a comma was parsed at the given position.
|
boolean |
hasSpace(int index)
Determines whether a space was parsed at the given position.
|
int |
indexOf(Expression expression)
Retrieves the index of the given
Expression . |
protected void |
parse(WordParser wordParser,
boolean tolerant)
Parses the query by starting at the current position, which is part of the given
WordParser . |
java.lang.String |
toActualText(int endIndex)
Returns a string representation of this
Expression and its children. |
java.lang.String |
toParsedText(int endIndex)
Generates a string representation of this
CollectionExpression . |
protected void |
toParsedText(java.lang.StringBuilder writer,
boolean actual)
Generates a string representation of this
Expression , including its children,
if it has any. |
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, isParsingComplete, isTolerant, isUnknown, isVirtual, orderedChildren, parse, parseUsingExpressionFactory, populatePosition, rebuildActualText, rebuildParsedText, setParent, setText, shouldParseWithFactoryFirst, shouldSkipLiteral, toActualText, toParsedText, toString
public CollectionExpression(AbstractExpression parent, java.util.List<AbstractExpression> children, java.util.List<java.lang.Boolean> commas, java.util.List<java.lang.Boolean> spaces)
CollectionExpression
.parent
- The parent of this expressionchildren
- The list of children that are regrouped togetherspaces
- The list of flags used to determine when to add a space after an Expression
commas
- The list of flags used to determine when to add a comma after an Expression
public CollectionExpression(AbstractExpression parent, java.util.List<AbstractExpression> children, java.util.List<java.lang.Boolean> commas, java.util.List<java.lang.Boolean> spaces, boolean temporary)
CollectionExpression
.parent
- The parent of this expressionchildren
- The list of children that are regrouped togethercommas
- The list of flags used to determine when to add a comma after an Expression
spaces
- The list of flags used to determine when to add a space after an Expression
temporary
- Flag used to determine if this expression is temporarily used, which means
the children will not be parented to this objectpublic void accept(ExpressionVisitor visitor)
Expression
by the given visitor
.visitor
- The ExpressionVisitor
to visit this objectpublic void accept(int index, ExpressionVisitor visitor)
Expression
at the given position by the given visitor
.index
- The index of the child to visitvisitor
- The ExpressionVisitor
to visit a specific childpublic void acceptChildren(ExpressionVisitor visitor)
Expression
. This method can be used to optimize traversing
the children since a new list is not created every time Expression.children()
is called.
This does not traverse the Expression
sub-hierarchy, use a subclass of
AbstractTraverseChildrenVisitor
in order to traverse the entire sub-hierarchy.
visitor
- The visitor
to visit the children of this object.protected void addChildrenTo(java.util.Collection<Expression> children)
AbstractExpression
to the given collection.addChildrenTo
in class AbstractExpression
children
- The collection used to store the childrenprotected void addOrderedChildrenTo(java.util.List<Expression> children)
AbstractExpression
to the given list.addOrderedChildrenTo
in class AbstractExpression
children
- The list used to store the string representation of this AbstractExpression
public int childrenSize()
expressions
.expressions
aggregated with spaces and/or commaspublic boolean endsWithComma()
CollectionExpression
ends with a comma, which means the last
Expression
is a "null
" expression.true
if the string representation of this CollectionExpression
ends with a comma (the ending space is not checked)public boolean endsWithSpace()
CollectionExpression
ends with a space, which means the last
Expression
is a "null
" expression.true
if the string representation of this CollectionExpression
ends with a space (the ending comma is not checked)public JPQLQueryBNF findQueryBNF(Expression expression)
JPQLQueryBNF
that represents the fragment of this Expression
that was used when parsing the given Expression
.findQueryBNF
in interface Expression
findQueryBNF
in class AbstractExpression
expression
- The Expression
that is a descendant of this oneJPQLQueryBNF
that was used to parse the given expressionpublic Expression getChild(int index)
Expression
at the given position.index
- The position of the child Expression
to retrieveExpression
at the given positionpublic JPQLQueryBNF getQueryBNF()
Expression
.JPQLQueryBNF
, which represents the grammar of this Expression
public boolean hasComma(int index)
index
- The index of the child Expression
to verify if there is a comma following ittrue
if a comma is following the child Expression
at the given
index; false
otherwisepublic boolean hasSpace(int index)
index
- The index of the child Expression
to verify if there is a space following
it, which could be after a comma, if one was parsedtrue
if a space is following the child Expression
at the given
index; false
otherwisepublic int indexOf(Expression expression)
Expression
.expression
- The Expression
that might be a child of this expressionExpression
or -1 if it is not a childprotected void parse(WordParser wordParser, boolean tolerant)
WordParser
.parse
in class AbstractExpression
wordParser
- The text to parse based on the current position of the cursortolerant
- Determines whether the parsing system should be tolerant, meaning if it should
try to parse invalid or incomplete queriespublic java.lang.String toActualText(int endIndex)
Expression
and its children. The expression
should contain whitespace even if the beautified version would not have any. For instance,
"SELECT e " should be returned where Expression.toParsedText()
would return "SELECT e".endIndex
- The index used to determine when to create the string representation, which
is exclusiveExpression
public java.lang.String toParsedText(int endIndex)
CollectionExpression
.endIndex
- The index used to determine when to create the string representation, which
is exclusiveExpression
protected void toParsedText(java.lang.StringBuilder writer, boolean actual)
Expression
, including its children,
if it has any.toParsedText
in class AbstractExpression
writer
- The buffer used to append this Expression
's string representationactual
- Determines whether the string representation should represent what was parsed,
i.e. include any "virtual" whitespace (such as ending whitespace) and the actual case of the
JPQL identifiers