Class AbstractPathExpressionStateObject

    • Field Detail

      • IDENTIFICATION_VARIABLE_PROPERTY

        public static final String IDENTIFICATION_VARIABLE_PROPERTY
        Notifies the identification variable property has changed.
        See Also:
        Constant Field Values
      • PATHS_LIST

        public static final String PATHS_LIST
        Notifies the content of the paths list has changed.
        See Also:
        Constant Field Values
    • Constructor Detail

      • AbstractPathExpressionStateObject

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

        protected AbstractPathExpressionStateObject​(StateObject parent,
                                                    String path)
        Creates a new AbstractPathExpressionStateObject.
        Parameters:
        parent - The parent of this state object, which cannot be null
        path - The path expression
        Throws:
        NullPointerException - The given parent cannot be null
    • Method Detail

      • append

        public void append​(String text)
        Appends the given sequence of characters to the path expression. If the sequence does not begin with a dot, then the first segment will be appended to the last segment and then new segments will be created.
        Parameters:
        text - The sequence of characters to append to the path expression
      • canMoveDown

        public boolean canMoveDown​(String item)
        Description copied from interface: ListHolderStateObject
        Determines whether the given StateObject can be moved down by one position in the list owned by its parent.
        Specified by:
        canMoveDown in interface ListHolderStateObject<String>
        Parameters:
        item - The StateObject that could potentially be moved down
        Returns:
        true if the object can be moved down by one unit; false otherwise
      • canMoveUp

        public boolean canMoveUp​(String item)
        Description copied from interface: ListHolderStateObject
        Determines whether the given StateObject can be moved up by one position in the list owned by its parent.
        Specified by:
        canMoveUp in interface ListHolderStateObject<String>
        Parameters:
        item - The StateObject that could potentially be moved up
        Returns:
        true if the object can be moved up by one unit; false otherwise
      • clearResolvedObjects

        protected void clearResolvedObjects()
        Clears the values related to the managed type and type.
      • getIdentificationVariable

        public StateObject getIdentificationVariable()
        Returns the StateObject representing the identification variable that starts the path expression, which can be a sample identification variable, a map value, map key or map entry expression.
        Returns:
        The root of the path expression
      • getManagedType

        public IManagedType getManagedType()
        Returns
        Returns:
      • getMapping

        public IMapping getMapping()
        Returns
        Returns:
      • getMapping

        public IMapping getMapping​(int index)
        Retrieves the IMapping for the path at the given position.
        Parameters:
        index - The index of the path for which its IMapping should be retrieved, which should start at 1 to skip the identification variable
      • getPath

        public String getPath()
        Returns the string representation of the path expression. If the identification variable is virtual, then it is not part of the result.
        Returns:
        The path expression, which is never null
      • getType

        public IType getType()
        Returns the IType of the field handled by this object.
        Returns:
        Either the IType that was resolved by this state object or the IType for IType.UNRESOLVABLE_TYPE if it could not be resolved
      • hasIdentificationVariable

        public boolean hasIdentificationVariable()
        Determines whether the identification variable is present.
        Returns:
        true the identification variable is present; false otherwise
      • removeItem

        public void removeItem​(int index)
        Removes the single path at the given index.
        Parameters:
        index - The position of the single path to remove. If the index is 0, then the identification variable is nullified
      • resolveManagedType

        protected abstract IManagedType resolveManagedType()
        Resolves
        Returns:
      • resolveMappings

        protected void resolveMappings()
        Resolves the IMapping objects that constitutes the path expression.
      • resolveType

        protected abstract IType resolveType()
        Resolves the IType of the property handled by this object.
        Returns:
        Either the IType that was resolved by this object or the IType for IType.UNRESOLVABLE_TYPE if it could not be resolved
      • setIdentificationVariable

        public void setIdentificationVariable​(StateObject identificationVariable)
        Sets the StateObject representing the identification variable that starts the path expression, which can be a sample identification variable, a map value, map key or map entry expression.
        Parameters:
        identificationVariable - The root of the path expression
      • setIdentificationVariableInternally

        protected void setIdentificationVariableInternally​(StateObject identificationVariable)
        Sets the StateObject representing the identification variable that starts the path expression, which can be a sample identification variable, a map value, map key or map entry expression. This method does not replace the first path in the list of paths.
        Parameters:
        identificationVariable - The root of the path expression
      • setPath

        public void setPath​(CharSequence path)
        Changes the path expression with the list of segments, the identification variable will also be updated with the first segment.
        Parameters:
        path - The new path expression
      • setPath

        public void setPath​(int index,
                            String path)
        Replaces the existing path segment to become the given one.
        Parameters:
        index - The position of the path segment to replace
        path - The replacement
      • setPaths

        public void setPaths​(List<String> paths)
        Changes the path expression with the list of segments, the identification variable will also be updated with the first segment.
        Parameters:
        paths - The new path expression
      • setPaths

        public void setPaths​(ListIterator<String> paths)
        Changes the path expression with the list of segments, the identification variable will also be updated with the first segment.
        Parameters:
        paths - The new path expression
      • setPaths

        public void setPaths​(String... paths)
        Changes the path expression with the list of segments, the identification variable will also be updated with the first segment.
        Parameters:
        paths - The new path expression
      • 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