Oracle Fusion Middleware Java API Reference for Oracle TopLink
11g Release 1 (11.1.1)

E28847-01


org.eclipse.persistence.jpa.internal.jpql.parser
Class AbstractTripleEncapsulatedExpression

java.lang.Object
  extended by org.eclipse.persistence.jpa.internal.jpql.parser.StringExpression
      extended by org.eclipse.persistence.jpa.internal.jpql.parser.AbstractExpression
          extended by org.eclipse.persistence.jpa.internal.jpql.parser.AbstractEncapsulatedExpression
              extended by org.eclipse.persistence.jpa.internal.jpql.parser.AbstractTripleEncapsulatedExpression

All Implemented Interfaces:
Expression
Direct Known Subclasses:
LocateExpression, SubstringExpression

public abstract class AbstractTripleEncapsulatedExpression
extends AbstractEncapsulatedExpression

This Expression takes care of parsing an expression that encapsulates three expressions separated by a comma.

BNF: expression ::= <identifier>(first_expression, second_expression, third_expression)
Since:
2.3
Version:
2.3
Author:
Pascal Filion
See Also:
LocateExpression, SubstringExpression

Field Summary
private  AbstractExpression firstExpression
          The Expression that represents the first expression.
private  boolean hasFirstComma
          Determines whether the comma separating the first and second expression was parsed.
private  boolean hasSecondComma
          Determines whether the comma separating the first and second expression was parsed.
private  boolean hasSpaceAfterFirstComma
          Determines whether a whitespace is following the comma.
private  boolean hasSpaceAfterSecondComma
          Determines whether a whitespace is following the comma.
private  AbstractExpression secondExpression
          The Expression that represents the second expression.
private  AbstractExpression thirdExpression
          The Expression that represents the first expression.
 
Fields inherited from class org.eclipse.persistence.jpa.internal.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.internal.jpql.parser.Expression
ABS, ALL, AND, ANY, AS, ASC, AVG, BETWEEN, BIT_LENGTH, BOTH, CASE, CHAR_LENGTH, CHARACTER_LENGTH, CLASS, COALESCE, CONCAT, COUNT, CURRENT_DATE, CURRENT_TIME, CURRENT_TIMESTAMP, DELETE, DELETE_FROM, DESC, DIFFERENT, DISTINCT, DIVISION, ELSE, EMPTY, END, ENTRY, EQUAL, ESCAPE, EXISTS, FALSE, FETCH, FROM, FUNC, GREATER_THAN, GREATER_THAN_OR_EQUAL, GROUP_BY, HAVING, IN, INDEX, INNER, INNER_JOIN, INNER_JOIN_FETCH, 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_EXISTS, NOT_IN, NOT_LIKE, NOT_MEMBER, NOT_MEMBER_OF, NULL, NULLIF, OBJECT, OF, OR, ORDER_BY, OUTER, PLUS, POSITION, POSITIONAL_PARAMETER, QUOTE, SELECT, SET, SIZE, SOME, SQRT, SUBSTRING, SUM, THEN, TRAILING, TREAT, TRIM, TRUE, TYPE, UNKNOWN, UPDATE, UPPER, VALUE, WHEN, WHERE
 
Constructor Summary
AbstractTripleEncapsulatedExpression(AbstractExpression parent)
          Creates a new AbstractTripleEncapsulatedExpression.
 
Method Summary
 void acceptChildren(ExpressionVisitor visitor)
          Visits the children of this Expression.
(package private)  void addChildrenTo(java.util.Collection<Expression> children)
          Adds the children of this Expression to the given collection.
(package private)  void addOrderedEncapsulatedExpressionTo(java.util.List<StringExpression> children)
          Adds the StringExpressions representing the encapsulated Expression.
 CollectionExpression buildCollectionExpression()
          Creates a new CollectionExpression that will wrap the first, second and third expressions.
 Expression getFirstExpression()
          Returns the Expression that represents the first expression.
 Expression getSecondExpression()
          Returns the Expression that represents the second expression.
 Expression getThirdExpression()
          Returns the Expression that represents the first expression.
 boolean hasEncapsulatedExpression()
          Determines whether something was parsed after the left parenthesis.
 boolean hasFirstComma()
          Determines whether the comma was parsed after the first expression.
 boolean hasFirstExpression()
          Determines whether the first expression of the query was parsed.
 boolean hasSecondComma()
          Determines whether the comma was parsed after the second expression.
 boolean hasSecondExpression()
          Determines whether the second expression of the query was parsed.
 boolean hasSpaceAfterFirstComma()
          Determines whether a whitespace was parsed after the first comma.
 boolean hasSpaceAfterSecondComma()
          Determines whether a whitespace was parsed after the second comma.
 boolean hasThirdExpression()
          Determines whether the third expression of the query was parsed.
(package private) abstract  boolean isThirdExpressionOptional()
          Determines whether the third expression is an optional expression, which means a valid query can have it or not.
abstract  JPQLQueryBNF parameterExpressionBNF(int index)
          Returns the BNF to be used to parse one of the encapsulated expression.
(package private)  void parseEncapsulatedExpression(WordParser wordParser, boolean tolerant)
          Parses the encapsulated expression by starting at the current position, which is part of the given WordParser.
(package private)  void toParsedTextEncapsulatedExpression(java.lang.StringBuilder writer, boolean includeVirtual)
          Generates a string representation of the encapsulated Expression.
 
Methods inherited from class org.eclipse.persistence.jpa.internal.jpql.parser.AbstractEncapsulatedExpression
addOrderedChildrenTo, areLogicalIdentifiersSupported, getIdentifier, hasLeftParenthesis, hasRightParenthesis, isParsingComplete, parse, parseIdentifier, toParsedText
 
Methods inherited from class org.eclipse.persistence.jpa.internal.jpql.parser.AbstractExpression
buildExpressionFromFallingBack, buildNullExpression, buildStringExpression, buildStringExpression, buildUnknownExpression, children, expressionFactory, expressionFactoryForIdentifier, findQueryBNF, getChildren, getJPAVersion, getParent, getQueryBNF, getRoot, getText, handleAggregate, identifierRole, identifiers, identifiers, identifierVersion, isAncestor, isIdentifier, isNull, isTolerant, isUnknown, isVirtual, orderedChildren, parse, parseSingleExpression, populatePosition, queryBNF, readdLeadingSpaces, 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.internal.jpql.parser.Expression
accept
 

Field Detail

firstExpression

private AbstractExpression firstExpression
The Expression that represents the first expression.

hasFirstComma

private boolean hasFirstComma
Determines whether the comma separating the first and second expression was parsed.

hasSecondComma

private boolean hasSecondComma
Determines whether the comma separating the first and second expression was parsed.

hasSpaceAfterFirstComma

private boolean hasSpaceAfterFirstComma
Determines whether a whitespace is following the comma.

hasSpaceAfterSecondComma

private boolean hasSpaceAfterSecondComma
Determines whether a whitespace is following the comma.

secondExpression

private AbstractExpression secondExpression
The Expression that represents the second expression.

thirdExpression

private AbstractExpression thirdExpression
The Expression that represents the first expression.
Constructor Detail

AbstractTripleEncapsulatedExpression

AbstractTripleEncapsulatedExpression(AbstractExpression parent)
Creates a new AbstractTripleEncapsulatedExpression.
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() or Expression.getChildren() is called.

This does not traverse the Expression sub-hierarchy, use an subclass of AbstractTraverseChildrenVisitor in order to traverse the entire sub-hierarchy.

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

addChildrenTo

void addChildrenTo(java.util.Collection<Expression> children)
Adds the children of this Expression to the given collection.
Overrides:
addChildrenTo in class AbstractExpression
Parameters:
children - The collection used to store the children

addOrderedEncapsulatedExpressionTo

void addOrderedEncapsulatedExpressionTo(java.util.List<StringExpression> children)
Adds the StringExpressions representing the encapsulated Expression.
Specified by:
addOrderedEncapsulatedExpressionTo in class AbstractEncapsulatedExpression
Parameters:
children - The list used to store the string representation of the encapsulated Expression

buildCollectionExpression

public final CollectionExpression buildCollectionExpression()
Creates a new CollectionExpression that will wrap the first, second and third expressions.
Returns:
The first, second and third expressions represented by a temporary collection

getFirstExpression

public final Expression getFirstExpression()
Returns the Expression that represents the first expression.
Returns:
The expression that was parsed representing the first expression

getSecondExpression

public final Expression getSecondExpression()
Returns the Expression that represents the second expression.
Returns:
The expression that was parsed representing the second expression

getThirdExpression

public final Expression getThirdExpression()
Returns the Expression that represents the first expression.
Returns:
The expression that was parsed representing the first expression

hasEncapsulatedExpression

public boolean hasEncapsulatedExpression()
Determines whether something was parsed after the left parenthesis.
Specified by:
hasEncapsulatedExpression in class AbstractEncapsulatedExpression
Returns:
true if something was parsed; false otherwise

hasFirstComma

public final boolean hasFirstComma()
Determines whether the comma was parsed after the first expression.
Returns:
true if a comma was parsed after the first expression; false otherwise

hasFirstExpression

public final boolean hasFirstExpression()
Determines whether the first expression of the query was parsed.
Returns:
true if the first expression was parsed; false if it was not parsed

hasSecondComma

public final boolean hasSecondComma()
Determines whether the comma was parsed after the second expression.
Returns:
true if a comma was parsed after the second expression; false otherwise

hasSecondExpression

public final boolean hasSecondExpression()
Determines whether the second expression of the query was parsed.
Returns:
true if the second expression was parsed; false if it was not parsed

hasSpaceAfterFirstComma

public final boolean hasSpaceAfterFirstComma()
Determines whether a whitespace was parsed after the first comma.
Returns:
true if there was a whitespace after the first comma; false otherwise

hasSpaceAfterSecondComma

public final boolean hasSpaceAfterSecondComma()
Determines whether a whitespace was parsed after the second comma.
Returns:
true if there was a whitespace after the second comma; false otherwise

hasThirdExpression

public final boolean hasThirdExpression()
Determines whether the third expression of the query was parsed.
Returns:
true if the third expression was parsed; false if it was not parsed

isThirdExpressionOptional

abstract boolean isThirdExpressionOptional()
Determines whether the third expression is an optional expression, which means a valid query can have it or not.
Returns:
true if the third expression can either be present or not in a valid query; false if it's mandatory

parameterExpressionBNF

public abstract JPQLQueryBNF parameterExpressionBNF(int index)
Returns the BNF to be used to parse one of the encapsulated expression.
Parameters:
index - The position of the encapsulated Expression that needs to be parsed within the parenthesis
Returns:
The BNF to be used to parse one of the encapsulated expression

parseEncapsulatedExpression

void parseEncapsulatedExpression(WordParser wordParser,
                                 boolean tolerant)
Parses the encapsulated expression by starting at the current position, which is part of the given WordParser.
Specified by:
parseEncapsulatedExpression in class AbstractEncapsulatedExpression
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

toParsedTextEncapsulatedExpression

final void toParsedTextEncapsulatedExpression(java.lang.StringBuilder writer,
                                              boolean includeVirtual)
Generates a string representation of the encapsulated Expression.
Specified by:
toParsedTextEncapsulatedExpression in class AbstractEncapsulatedExpression
Parameters:
writer - The buffer used to append the encapsulated Expression's string representation
includeVirtual - 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

Copyright © 1998, 2012, Oracle. All Rights Reserved.