public abstract class AbstractSelectStatement extends AbstractExpression
SELECT
statement is called a query, and a query nested within
another SQL statement is called a subquery.SelectStatement
,
SimpleSelectStatement
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
Modifier | Constructor and Description |
---|---|
protected |
AbstractSelectStatement(AbstractExpression parent)
Creates a new
AbstractSelectStatement . |
Modifier and Type | Method and Description |
---|---|
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. |
protected abstract AbstractFromClause |
buildFromClause()
Creates the expression representing the from clause of this select statement.
|
protected abstract AbstractSelectClause |
buildSelectClause()
Creates the expression representing the select clause of this select statement.
|
JPQLQueryBNF |
findQueryBNF(Expression expression)
Retrieves the
JPQLQueryBNF that represents the fragment of this Expression
that was used when parsing the given Expression . |
Expression |
getFromClause()
Returns the
Expression representing the FROM clause. |
Expression |
getGroupByClause()
Returns the
Expression representing the GROUP BY clause. |
Expression |
getHavingClause()
Returns the
Expression representing the HAVING clause. |
Expression |
getSelectClause()
Returns the
AbstractSelectClause representing the SELECT clause. |
Expression |
getWhereClause()
Returns the
Expression representing the WHERE clause. |
boolean |
hasFromClause()
Determines whether the FROM clause was parsed or not.
|
boolean |
hasGroupByClause()
Determines whether the GROUP BY clause was parsed or not.
|
boolean |
hasHavingClause()
Determines whether the HAVING clause was parsed or not.
|
boolean |
hasSelectClause()
Determines whether the SELECT clause was parsed or not.
|
boolean |
hasSpaceAfterFrom()
Determines whether a whitespace was found after the FROM clause.
|
boolean |
hasSpaceAfterGroupBy()
Determines whether a whitespace was found after the GROUP BY clause.
|
boolean |
hasSpaceAfterSelect()
Determines whether a whitespace was found after the SELECT clause.
|
boolean |
hasSpaceAfterWhere()
Determines whether a whitespace was found after the WHERE clause.
|
boolean |
hasWhereClause()
Determines whether the WHERE clause is defined.
|
protected void |
parse(WordParser wordParser,
boolean tolerant)
Parses the query by starting at the current position, which is part of the given
WordParser . |
protected boolean |
shouldManageSpaceAfterClause()
Determines whether the whitespace following the
HAVING clause should be
managed by this expression or not. |
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
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
accept, getQueryBNF
protected AbstractSelectStatement(AbstractExpression parent)
AbstractSelectStatement
.parent
- The parent of this expressionpublic 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
protected abstract AbstractFromClause buildFromClause()
null
can't be returnedprotected abstract AbstractSelectClause buildSelectClause()
null
can't be returnedpublic 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 final Expression getFromClause()
Expression
representing the FROM clause.public final Expression getGroupByClause()
Expression
representing the GROUP BY clause.public final Expression getHavingClause()
Expression
representing the HAVING clause.public final Expression getSelectClause()
AbstractSelectClause
representing the SELECT clause.public final Expression getWhereClause()
Expression
representing the WHERE clause.public final boolean hasFromClause()
true
if the query that got parsed had the FROM clausepublic final boolean hasGroupByClause()
true
if the query that got parsed had the GROUP BY clausepublic final boolean hasHavingClause()
true
if the query that got parsed had the HAVING clausepublic final boolean hasSelectClause()
true
if the query that got parsed had the HAVING clausepublic final boolean hasSpaceAfterFrom()
true
if there was a whitespace after the FROM clause and owned by
this expression; false
otherwisepublic final boolean hasSpaceAfterGroupBy()
true
if there was a whitespace after the GROUP BY clause and owned
by this expression; false
otherwisepublic final boolean hasSpaceAfterSelect()
true
if there was a whitespace after the SELECT clause and owned
by this expression; false
otherwisepublic final boolean hasSpaceAfterWhere()
true
if there was a whitespace after the WHERE clause and owned by
this expression; false
otherwisepublic final boolean hasWhereClause()
true
if the query that got parsed had the WHERE clauseprotected 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 queriesprotected boolean shouldManageSpaceAfterClause()
HAVING
clause should be
managed by this expression or not.true
by default to keep the whitespace part of this expression;
false
to let the parent handle itprotected 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