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

public class ArithmeticFactorStateObject extends AbstractStateObject
This state object simply adds a plus or minus sign to the arithmetic primary expression.

BNF: arithmetic_factor ::= [{+|-}] arithmetic_primary

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

    • ARITHMETIC_SIGN_PROPERTY

      public static final String ARITHMETIC_SIGN_PROPERTY
      Notifies the arithmetic sign property has changed.
      See Also:
    • STATE_OBJECT_PROPERTY

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

    • ArithmeticFactorStateObject

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

      public ArithmeticFactorStateObject(StateObject parent, boolean plusSign, StateObject stateObject)
      Creates a new ArithmeticFactorStateObject.
      Parameters:
      parent - The parent of this state object, which cannot be null
      stateObject - The StateObject that represents the arithmetic primary expression
      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
    • addMinus

      public void addMinus()
      Makes sure the - sign is used.
    • addPlus

      public void addPlus()
      Makes sure the + sign is used.
    • getArithmeticSign

      public String getArithmeticSign()
      Returns the arithmetic sign this expression is actually representing.
      Returns:
      The single character value of the arithmetic sign: '+' or '-'
    • getExpression

      public ArithmeticFactor 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)
    • getStateObject

      public StateObject getStateObject()
      Returns the StateObject that represents the arithmetic primary expression.
      Returns:
      The StateObject that represents the arithmetic primary expression or null if none was specified
    • hasMinusSign

      public boolean hasMinusSign()
      Determines whether the arithmetic sign is the minus sign.
      Returns:
      true if the arithmetic sign is the minus sign; false if it is the plus sign
    • hasPlusSign

      public boolean hasPlusSign()
      Determines whether the arithmetic sign is the plus sign.
      Returns:
      true if the arithmetic sign is the plus sign; false if it is the minus sign
    • hasStateObject

      public boolean hasStateObject()
      Determines whether an StateObject representing the arithmetic primary expression exists.
      Returns:
      true if there is the arithmetic primary expression exists; 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
    • parse

      public void parse(String jpqlFragment)
      Parses the given JPQL fragment to become the new arithmetic primary.
      Parameters:
      jpqlFragment - A portion of a query that will be parsed and the StateObject that was created will become the new arithmetic primary of this ArithmeticFactorStateObject
    • setArithmeticSign

      public void setArithmeticSign(boolean plusSign)
      Sets the arithmetic sign this expression is actually representing.
      Parameters:
      plusSign - The single character value of the arithmetic sign: '+' (true) or '-' (false)
    • setExpression

      public void setExpression(ArithmeticFactor 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 an arithmetic factor expression
    • setStateObject

      public void setStateObject(StateObject stateObject)
      Returns the StateObject that represents the arithmetic primary expression.
      Parameters:
      stateObject - The StateObject that represents the arithmetic primary expression or null if none was specified
    • toggleArithmeticSign

      public void toggleArithmeticSign()
      Toggles the arithmetic sign, plus becomes minus and vice versa.
    • 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