java.lang.Object
org.eclipse.persistence.jpa.jpql.tools.model.query.AbstractStateObject
org.eclipse.persistence.jpa.jpql.tools.model.query.LikeExpressionStateObject
All Implemented Interfaces:
StateObject

public class LikeExpressionStateObject extends AbstractStateObject
The LIKE condition is used to specify a search for a pattern.

The string_expression must have a string value. The pattern_value is a string literal or a string-valued input parameter in which an underscore (_) stands for any single character, a percent (%) character stands for any sequence of characters (including the empty sequence), and all other characters stand for themselves. The optional escape_character is a single-character string literal or a character-valued input parameter (i.e., char or Character) and is used to escape the special meaning of the underscore and percent characters in pattern_value.

BNF: like_expression ::= string_expression [NOT] LIKE pattern_value [ESCAPE escape_character]

Since:
2.4
Version:
2.4
See Also:
  • Field Details

    • ESCAPE_CHARACTER_PROPERTY

      public static final String ESCAPE_CHARACTER_PROPERTY
      Notifies the escape character property has changed.
      See Also:
    • NOT_PROPERTY

      public static final String NOT_PROPERTY
      Notifies the visibility of the NOT identifier has changed.
      See Also:
    • PATTERN_VALUE_PROPERTY

      public static final String PATTERN_VALUE_PROPERTY
      Notifies the pattern value property has changed.
      See Also:
    • STRING_STATE_OBJECT_PROPERTY

      public static final String STRING_STATE_OBJECT_PROPERTY
      Notifies the string state object property has changed.
      See Also:
  • Constructor Details

    • LikeExpressionStateObject

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

      public LikeExpressionStateObject(StateObject parent, StateObject stringStateObject)
      Creates a new LikeExpressionStateObject.
      Parameters:
      parent - The parent of this state object, which cannot be null
      stringStateObject - The StateObject representing the string expression
      Throws:
      NullPointerException - The given parent cannot be null
    • LikeExpressionStateObject

      public LikeExpressionStateObject(StateObject parent, StateObject stringStateObject, boolean not, StateObject patternValue, String escapeCharacter)
      Creates a new LikeExpressionStateObject.
      Parameters:
      parent - The parent of this state object, which cannot be null
      stringStateObject - The StateObject representing the string expression
      not - Determines whether the NOT identifier is part of the expression or not
      patternValue - A string literal or a string-valued input parameter in which an underscore (_) stands for any single character, a percent (%) character stands for any sequence of characters (including the empty sequence), and all other characters stand for themselves
      escapeCharacter - A single-character string literal or a character-valued input parameter (i.e., char or Character) and is used to escape the special meaning of the underscore and percent characters in pattern_value
      Throws:
      NullPointerException - The given parent cannot be null
    • LikeExpressionStateObject

      public LikeExpressionStateObject(StateObject parent, StateObject stringStateObject, StateObject patternValue)
      Creates a new LikeExpressionStateObject.
      Parameters:
      parent - The parent of this state object, which cannot be null
      stringStateObject - The StateObject representing the string expression
      patternValue - a string literal or a string-valued input parameter in which an underscore (_) stands for any single character, a percent (%) character stands for any sequence of characters (including the empty sequence), and all other characters stand for themselves
      Throws:
      NullPointerException - The given parent cannot be null
  • Method Details

    • accept

      public void accept(StateObjectVisitor visitor)
      Description copied from interface: StateObject
      Visits this StateObject by the given visitor.
      Parameters:
      visitor - The visitor to visit this object
    • 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
    • addNot

      public LikeExpressionStateObject addNot()
      Makes sure the NOT identifier is specified.
      Returns:
      This object
    • getEscapeCharacter

      public String getEscapeCharacter()
    • getExpression

      public LikeExpression 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 AbstractStateObject
      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)
    • getPatternValue

      public StateObject getPatternValue()
    • getStringStateObject

      public StateObject getStringStateObject()
    • hasEscapeCharacter

      public boolean hasEscapeCharacter()
    • hasNot

      public boolean hasNot()
      Determines whether the NOT identifier is used or not.
      Returns:
      true if the NOT identifier is part of the expression; false otherwise
    • hasPatternValue

      public boolean hasPatternValue()
    • hasStringStateObject

      public boolean hasStringStateObject()
    • initialize

      protected void initialize()
      Description copied from class: AbstractStateObject
      Initializes this state object.
      Overrides:
      initialize in class AbstractStateObject
    • 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
    • removeNot

      public void removeNot()
      Makes sure the NOT identifier is not specified.
    • setEscapeCharacter

      public void setEscapeCharacter(String escapeCharacter)
    • setExpression

      public void setExpression(LikeExpression expression)
      Keeps a reference of the parsed object object, which should only be done when this object is instantiated during the conversion of a parsed JPQL query into StateObjects.
      Parameters:
      expression - The parsed object representing a LIKE expression
    • setNot

      public void setNot(boolean not)
      Sets whether the NOT identifier should be part of the expression or not.
      Parameters:
      not - true if the NOT identifier should be part of the expression; false otherwise
    • setPatternValue

      public void setPatternValue(StateObject patternValue)
    • setStringStateObject

      public void setStringStateObject(StateObject stringStateObject)
    • toggleNot

      public void toggleNot()
      Changes the visibility state of the NOT identifier.
    • toTextInternal

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