Class ComparisonExpression

All Implemented Interfaces:
Expression

public final class ComparisonExpression extends CompoundExpression
Only the values of like types are permitted to be compared. A type is like another type if they correspond to the same Java language type, or if one is a primitive Java language type and the other is the wrapped Java class type equivalent (e.g., int and Integer are like types in this sense).

There is one exception to this rule: it is valid to compare numeric values for which the rules of numeric promotion apply. Conditional expressions attempting to compare non-like type values are disallowed except for this numeric case.

Note that the arithmetic operators and comparison operators are permitted to be applied to state-fields and input parameters of the wrapped Java class equivalents to the primitive numeric Java types. Two entities of the same abstract schema type are equal if and only if they have the same primary key value. Only equality/inequality comparisons over enumeration constants are required to be supported.

JPA 1.0 - BNF:

comparison_expression ::= string_expression comparison_operator {string_expression | all_or_any_expression} |
                          boolean_expression {=|<>} {boolean_expression | all_or_any_expression} |
                          enum_expression {=|<>} {enum_expression | all_or_any_expression} |
                          datetime_expression comparison_operator {datetime_expression | all_or_any_expression} |
                          entity_expression {=|<>} {entity_expression | all_or_any_expression} |
                          arithmetic_expression comparison_operator {arithmetic_expression | all_or_any_expression}
JPA 2.0 - BNF:
comparison_expression ::= string_expression comparison_operator {string_expression | all_or_any_expression} |
                          boolean_expression {=|<>} {boolean_expression | all_or_any_expression} |
                          enum_expression {=|<>} {enum_expression | all_or_any_expression} |
                          datetime_expression comparison_operator {datetime_expression | all_or_any_expression} |
                          entity_expression {=|<>} {entity_expression | all_or_any_expression} |
                          arithmetic_expression comparison_operator {arithmetic_expression | all_or_any_expression} |
                          entity_type_expression {=|<>} entity_type_expression}
Version:
2.5
Author:
Pascal Filion
  • Constructor Details

    • ComparisonExpression

      public ComparisonExpression(AbstractExpression parent, String identifier)
      Creates a new ComparisonExpression.
      Parameters:
      parent - The parent of this expression
      identifier - The comparator identifier
  • Method Details

    • accept

      public void accept(ExpressionVisitor visitor)
      Description copied from interface: Expression
      Visits this Expression by the given visitor.
      Parameters:
      visitor - The ExpressionVisitor to visit this object
    • getComparisonOperator

      public String getComparisonOperator()
      Returns the comparison operator, which is either '=', '>', '>=', '<', '<=' or '<>'.
      Returns:
      The operator comparing the two expressions
    • getLeftExpressionQueryBNFId

      public String getLeftExpressionQueryBNFId()
      Description copied from class: CompoundExpression
      Returns the unique identifier of the JPQLQueryBNF for the left expression.
      Specified by:
      getLeftExpressionQueryBNFId in class CompoundExpression
      Returns:
      The ID of the BNF used when parsing the expression before the identifier
    • getQueryBNF

      public JPQLQueryBNF getQueryBNF()
      Description copied from interface: Expression
      Returns the BNF of this Expression.
      Returns:
      The JPQLQueryBNF, which represents the grammar of this Expression
    • getRightExpressionQueryBNFId

      public String getRightExpressionQueryBNFId()
      Description copied from class: CompoundExpression
      Returns the unique identifier of the JPQLQueryBNF for the right expression.
      Specified by:
      getRightExpressionQueryBNFId in class CompoundExpression
      Returns:
      The ID of the BNF used when parsing the expression after the identifier
    • isParsingComplete

      protected boolean isParsingComplete(WordParser wordParser, String word, Expression expression)
      Description copied from class: AbstractExpression
      Determines whether the parsing is complete based on what is left in the given text. The text is never empty.
      Overrides:
      isParsingComplete in class AbstractExpression
      Parameters:
      wordParser - The text to parse based on the current position of the cursor
      word - The word that was retrieved from the given text, which is the first word in the text
      expression - The Expression that has already been parsed
      Returns:
      true if the text no longer can't be parsed by the current expression; false if more can be parsed
    • parseIdentifier

      protected String parseIdentifier(WordParser wordParser)
      Description copied from class: CompoundExpression
      Parses the identifier of this expression.
      Specified by:
      parseIdentifier in class CompoundExpression
      Parameters:
      wordParser - The WordParser containing the text to parse, which starts with the identifier
      Returns:
      The identifier for this expression