Class AbstractTripleEncapsulatedExpressionStateObject

All Implemented Interfaces:
StateObject
Direct Known Subclasses:
LocateExpressionStateObject, SubstringExpressionStateObject

public abstract class AbstractTripleEncapsulatedExpressionStateObject extends AbstractEncapsulatedExpressionStateObject
This state object 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.4
Version:
2.4
See Also:
  • Field Details

  • Constructor Details

    • AbstractTripleEncapsulatedExpressionStateObject

      protected AbstractTripleEncapsulatedExpressionStateObject(StateObject parent)
      Creates a new AbstractTripleEncapsulatedExpressionStateObject.
      Parameters:
      parent - The parent of this state object, which cannot be null
      Throws:
      NullPointerException - The given parent cannot be null
    • AbstractTripleEncapsulatedExpressionStateObject

      protected AbstractTripleEncapsulatedExpressionStateObject(StateObject parent, StateObject firstStateObject, StateObject secondStateObject, StateObject thirdStateObject)
      Creates a new AbstractTripleEncapsulatedExpressionStateObject.
      Parameters:
      parent - The parent of this state object, which cannot be null
      firstStateObject - The StateObject of the first encapsulated expression
      secondStateObject - The StateObject of the second encapsulated expression
      thirdStateObject - The StateObject of the third encapsulated expression
      Throws:
      NullPointerException - The given parent cannot be null
    • AbstractTripleEncapsulatedExpressionStateObject

      protected AbstractTripleEncapsulatedExpressionStateObject(StateObject parent, String firstJpqlFragment, String secondJpqlFragment, String thirdJpqlFragment)
      Creates a new AbstractTripleEncapsulatedExpressionStateObject.
      Parameters:
      parent - The parent of this state object, which cannot be null
      firstJpqlFragment - The string representation of the first encapsulated expression to parse and to convert into a StateObject representation
      secondJpqlFragment - The string representation of the second encapsulated expression to parse and to convert into a StateObject representation
      thirdJpqlFragment - The string representation of the third encapsulated expression to parse and to convert into a StateObject representation
      Throws:
      NullPointerException - The given parent cannot be null
  • Method Details

    • addChildren

      protected void addChildren(List<StateObject> children)
      Description copied from class: AbstractStateObject
      Adds the children of this StateObject to the given list.
      Overrides:
      addChildren in class AbstractStateObject
      Parameters:
      children - The list used to store the children
    • getExpression

      public AbstractTripleEncapsulatedExpression getExpression()
      Description copied from interface: StateObject
      Returns the actual parsed object if this StateObject representation of the JPQL query was created by parsing an existing JPQL query.
      Specified by:
      getExpression in interface StateObject
      Overrides:
      getExpression in class AbstractEncapsulatedExpressionStateObject
      Returns:
      The parsed object when a JPQL query is parsed and converted into a StateObject or null when the JPQL query is manually created (i.e. not from a string)
    • getFirst

      public StateObject getFirst()
      Returns the StateObject representing the first expression.
      Returns:
      The first encapsulated StateObject or null if none exists
    • getFirstQueryBNFId

      protected abstract String getFirstQueryBNFId()
      Returns the unique identifier of the BNF that will be used to parse a JPQL fragment as the first encapsulated expression.
      Returns:
      The query BNF ID for the first encapsulated expression
    • getSecond

      public StateObject getSecond()
      Returns the StateObject representing the second expression.
      Returns:
      The second encapsulated StateObject or null if none exists
    • getSecondQueryBNFId

      protected abstract String getSecondQueryBNFId()
      Returns the unique identifier of the BNF that will be used to parse a JPQL fragment as the second encapsulated expression.
      Returns:
      The query BNF ID for the second encapsulated expression
    • getThird

      public StateObject getThird()
      Returns the StateObject representing the third expression.
      Returns:
      The third encapsulated StateObject or null if none exists
    • getThirdQueryBNFId

      protected abstract String getThirdQueryBNFId()
      Returns the unique identifier of the BNF that will be used to parse a JPQL fragment as the third encapsulated expression.
      Returns:
      The query BNF ID for the third encapsulated expression
    • hasFirst

      public boolean hasFirst()
      Determines whether the StateObject representing the first encapsulated expression is present or not.
      Returns:
      true if the first StateObject is not null; false otherwise
    • hasSecond

      public boolean hasSecond()
      Determines whether the StateObject representing the second encapsulated expression is present or not.
      Returns:
      true if the second StateObject is not null; false otherwise
    • hasThird

      public boolean hasThird()
      Determines whether the StateObject representing the third encapsulated expression is present or not.
      Returns:
      true if the third StateObject is not null; false otherwise
    • isEquivalent

      public boolean isEquivalent(StateObject stateObject)
      Description copied from interface: StateObject
      Determines whether the given StateObject is equivalent to this one, i.e. the information of both StateObject is the same.
      Specified by:
      isEquivalent in interface StateObject
      Overrides:
      isEquivalent in class AbstractStateObject
      Parameters:
      stateObject - The StateObject to compare its content to this one
      Returns:
      true if both object are equivalent; false otherwise
    • parseFirst

      public void parseFirst(String jpqlFragment)
      Parses the given JPQL fragment, which will represent the first encapsulated expression.
      Parameters:
      jpqlFragment - The string representation of the first encapsulated expression to parse and to convert into a StateObject representation
    • parseSecond

      public void parseSecond(String jpqlFragment)
      Parses the given JPQL fragment, which will represent the second encapsulated expression.
      Parameters:
      jpqlFragment - The string representation of the second encapsulated expression to parse and to convert into a StateObject representation
    • parseThird

      public void parseThird(String jpqlFragment)
      Parses the given JPQL fragment, which will represent the third encapsulated expression.
      Parameters:
      jpqlFragment - The string representation of the third encapsulated expression to parse and to convert into a StateObject representation
    • setFirst

      public void setFirst(StateObject firstStateObject)
      Sets the given StateObject to represent the first encapsulated expression.
      Parameters:
      firstStateObject - The new encapsulated StateObject representing the first expression
    • setSecond

      public void setSecond(StateObject secondStateObject)
      Sets the given StateObject to represent the second encapsulated expression.
      Parameters:
      secondStateObject - The new encapsulated StateObject representing the second expression
    • setThird

      public void setThird(StateObject thirdStateObject)
      Sets the given StateObject to represent the third encapsulated expression.
      Parameters:
      thirdStateObject - The new encapsulated StateObject representing the third expression
    • toTextEncapsulatedExpression

      protected void toTextEncapsulatedExpression(Appendable writer) throws IOException
      Description copied from class: AbstractEncapsulatedExpressionStateObject
      Prints out a string representation of this encapsulated information, which should not be used to define a true string representation of a JPQL query but should be used for debugging purposes.
      Specified by:
      toTextEncapsulatedExpression in class AbstractEncapsulatedExpressionStateObject
      Parameters:
      writer - The writer used to print out the string representation of the encapsulated information
      Throws:
      IOException - This should never happens, only required because Appendable is used instead of StringBuilder for instance