EclipseLink 2.4.2, build 'v20130514-5956486' API Reference

org.eclipse.persistence.jpa.jpql.parser
Class AbstractSelectStatement

java.lang.Object
  extended by org.eclipse.persistence.jpa.jpql.parser.AbstractExpression
      extended by org.eclipse.persistence.jpa.jpql.parser.AbstractSelectStatement
All Implemented Interfaces:
Expression
Direct Known Subclasses:
SelectStatement, SimpleSelectStatement

public abstract class AbstractSelectStatement
extends AbstractExpression

A select statement must always have a SELECT and a FROM clause. The other clauses are optional.

BNF: select_statement ::= select_clause from_clause [where_clause] [groupby_clause] [having_clause] [orderby_clause]

Version:
2.4.2
See Also:
SelectStatement, SimpleSelectStatement
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, ASC, AVG, BETWEEN, BIT_LENGTH, BOTH, CASE, CAST, CHAR_LENGTH, CHARACTER_LENGTH, CLASS, COALESCE, COLUMN, CONCAT, 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, 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, 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_FIRST, NULLS_LAST, OBJECT, OF, ON, OPERATOR, OR, ORDER_BY, OUTER, PLUS, POSITION, POSITIONAL_PARAMETER, QUOTE, REGEXP, SELECT, SET, SIZE, SOME, SQL, SQRT, SUBSTRING, SUM, TABLE, THEN, TRAILING, TREAT, TRIM, TRUE, TYPE, UNION, UNKNOWN, UPDATE, UPPER, VALUE, WHEN, WHERE
 
Constructor Summary
protected AbstractSelectStatement(AbstractExpression parent)
          Creates a new AbstractSelectStatement.
 
Method Summary
 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.
 SelectClause addSelectClause()
          Sets the query statement to be a select clause.
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.
 AbstractSelectClause getSelectClause()
          Returns the AbstractSelectClause representing the SELECT clause.
 Expression getWhereClause()
          Returns the Expression representing the WHERE clause.
 boolean hasFromClause()
          Determines whether the FROM clause is defined.
 boolean hasGroupByClause()
          Determines whether the GROUP BY clause is defined.
 boolean hasHavingClause()
          Determines whether the HAVING clause is defined.
 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
protected  void toParsedText(java.lang.StringBuilder writer, boolean actual)
          Generates a string representation of this Expression, including its children, if it has any.
 
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, isParsingComplete, 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

AbstractSelectStatement

protected AbstractSelectStatement(AbstractExpression parent)
Creates a new AbstractSelectStatement.

Parameters:
parent - The parent of this expression
Method Detail

acceptChildren

public void acceptChildren(ExpressionVisitor visitor)
Visits the children of this 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.

Parameters:
visitor - The visitor to visit the children of this object.

addChildrenTo

protected void addChildrenTo(java.util.Collection<Expression> children)
Adds the children of this AbstractExpression to the given collection.

Overrides:
addChildrenTo in class AbstractExpression
Parameters:
children - The collection used to store the children

addOrderedChildrenTo

protected void addOrderedChildrenTo(java.util.List<Expression> children)
Adds the children of this AbstractExpression to the given list.

Overrides:
addOrderedChildrenTo in class AbstractExpression
Parameters:
children - The list used to store the string representation of this AbstractExpression

addSelectClause

public final SelectClause addSelectClause()
Sets the query statement to be a select clause.

Returns:
This expression's select clause

buildFromClause

protected abstract AbstractFromClause buildFromClause()
Creates the expression representing the from clause of this select statement.

Returns:
A new from clause, null can't be returned

buildSelectClause

protected abstract AbstractSelectClause buildSelectClause()
Creates the expression representing the select clause of this select statement.

Returns:
A new from clause, null can't be returned

findQueryBNF

public JPQLQueryBNF findQueryBNF(Expression expression)
Retrieves the JPQLQueryBNF that represents the fragment of this Expression that was used when parsing the given Expression.

Specified by:
findQueryBNF in interface Expression
Overrides:
findQueryBNF in class AbstractExpression
Parameters:
expression - The Expression that is a descendant of this one
Returns:
The JPQLQueryBNF that was used to parse the given expression

getFromClause

public final Expression getFromClause()
Returns the Expression representing the FROM clause.

Returns:
The expression representing the FROM clause

getGroupByClause

public final Expression getGroupByClause()
Returns the Expression representing the GROUP BY clause.

Returns:
The expression representing the GROUP BY clause

getHavingClause

public final Expression getHavingClause()
Returns the Expression representing the HAVING clause.

Returns:
The expression representing the HAVING clause

getSelectClause

public AbstractSelectClause getSelectClause()
Returns the AbstractSelectClause representing the SELECT clause.

Returns:
The expression representing the SELECT clause

getWhereClause

public final Expression getWhereClause()
Returns the Expression representing the WHERE clause.

Returns:
The expression representing the WHERE clause

hasFromClause

public final boolean hasFromClause()
Determines whether the FROM clause is defined.

Returns:
true if the query that got parsed had the FROM clause

hasGroupByClause

public final boolean hasGroupByClause()
Determines whether the GROUP BY clause is defined.

Returns:
true if the query that got parsed had the GROUP BY clause

hasHavingClause

public final boolean hasHavingClause()
Determines whether the HAVING clause is defined.

Returns:
true if the query that got parsed had the HAVING clause

hasSpaceAfterFrom

public final boolean hasSpaceAfterFrom()
Determines whether a whitespace was found after the FROM clause. In some cases, the space is owned by a child of the FROM clause.

Returns:
true if there was a whitespace after the FROM clause and owned by this expression; false otherwise

hasSpaceAfterGroupBy

public final boolean hasSpaceAfterGroupBy()
Determines whether a whitespace was found after the GROUP BY clause. In some cases, the space is owned by a child of the GROUP BY clause.

Returns:
true if there was a whitespace after the GROUP BY clause and owned by this expression; false otherwise

hasSpaceAfterSelect

public final boolean hasSpaceAfterSelect()
Determines whether a whitespace was found after the SELECT clause. In some cases, the space is owned by a child of the SELECT clause.

Returns:
true if there was a whitespace after the SELECT clause and owned by this expression; false otherwise

hasSpaceAfterWhere

public final boolean hasSpaceAfterWhere()
Determines whether a whitespace was found after the WHERE clause. In some cases, the space is owned by a child of the WHERE clause.

Returns:
true if there was a whitespace after the WHERE clause and owned by this expression; false otherwise

hasWhereClause

public final boolean hasWhereClause()
Determines whether the WHERE clause is defined.

Returns:
true if the query that got parsed had the WHERE clause

parse

protected void parse(WordParser wordParser,
                     boolean tolerant)
Parses the query by starting at the current position, which is part of the given WordParser.

Specified by:
parse in class AbstractExpression
Parameters:
wordParser - The text to parse based on the current position of the cursor
tolerant - Determines whether the parsing system should be tolerant, meaning if it should try to parse invalid or incomplete queries

shouldManageSpaceAfterClause

protected boolean shouldManageSpaceAfterClause()
Determines whether

Returns:

toParsedText

protected void toParsedText(java.lang.StringBuilder writer,
                            boolean actual)
Generates a string representation of this Expression, including its children, if it has any.

Specified by:
toParsedText in class AbstractExpression
Parameters:
writer - The buffer used to append this Expression's string representation
actual - 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

EclipseLink 2.4.2, build 'v20130514-5956486' API Reference