Class AbstractPathExpressionStateObject

    • Field Detail

      • IDENTIFICATION_VARIABLE_PROPERTY

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

        public static final java.lang.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:
        java.lang.NullPointerException - The given parent cannot be null
      • AbstractPathExpressionStateObject

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

      • addItem

        public java.lang.String addItem​(java.lang.String item)
        Adds the given StateObject as a child of this one.
        Specified by:
        addItem in interface ListHolderStateObject<java.lang.String>
        Parameters:
        item - The child StateObject to become a child of this one return The given item
      • addItems

        public void addItems​(java.util.List<? extends java.lang.String> items)
        Adds the given list of StateObjects as children of this one.
        Specified by:
        addItems in interface ListHolderStateObject<java.lang.String>
        Parameters:
        items - The StateObjects to become children of this one
      • addListChangeListener

        public void addListChangeListener​(java.lang.String listName,
                                          IListChangeListener<java.lang.String> listener)
        Registers the given IListChangeListener for the specified list. The listener will be notified only when items are added, removed, moved from the list.
        Specified by:
        addListChangeListener in interface ListHolderStateObject<java.lang.String>
        Parameters:
        listName - The name of the list for which the listener will be notified when the content of the list has changed
        listener - The listener to be notified upon changes
      • append

        public void append​(java.lang.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​(java.lang.String item)
        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<java.lang.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​(java.lang.String item)
        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<java.lang.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
      • getItem

        public java.lang.String getItem​(int index)
        Returns the StateObject at the given positions from the list
        Specified by:
        getItem in interface ListHolderStateObject<java.lang.String>
        Parameters:
        index - The position of the StateObject to retrieve
        Returns:
        The StateObject at the given position
      • 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 java.lang.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
      • itemsSize

        public int itemsSize()
        Returns the number of children this list holder has.
        Specified by:
        itemsSize in interface ListHolderStateObject<java.lang.String>
        Returns:
        The count of StateObjects that are children of this one
      • moveDown

        public java.lang.String moveDown​(java.lang.String item)
        Moves the given StateObject down by one position in the list owned by its parent.
        Specified by:
        moveDown in interface ListHolderStateObject<java.lang.String>
        Parameters:
        item - The StateObject to move down in the list
        Returns:
        The given item
      • moveUp

        public java.lang.String moveUp​(java.lang.String item)
        Moves the given StateObject up by one position in the list owned by its parent.
        Specified by:
        moveUp in interface ListHolderStateObject<java.lang.String>
        Parameters:
        item - The StateObject to move up in the list
        Returns:
        The given item
      • 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
      • removeItem

        public void removeItem​(java.lang.String item)
        Removes the given StateObject from the list of children.
        Specified by:
        removeItem in interface ListHolderStateObject<java.lang.String>
        Parameters:
        item - The child StateObject to not longer be a child
      • removeItems

        public void removeItems​(java.util.Collection<java.lang.String> items)
        Removes the given StateObject from the list of children.
        Specified by:
        removeItems in interface ListHolderStateObject<java.lang.String>
        Parameters:
        items - The StateObjects to remove from this one
      • removeListChangeListener

        public void removeListChangeListener​(java.lang.String listName,
                                             IListChangeListener<java.lang.String> listener)
        Unregisters the given IListChangeListener that was registered for the specified list. The listener will no longer be notified only when items are added, removed, moved from the list.
        Specified by:
        removeListChangeListener in interface ListHolderStateObject<java.lang.String>
        Parameters:
        listName - The name of the list for which the listener was registered
        listener - The listener to unregister
      • 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​(java.lang.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,
                            java.lang.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​(java.util.List<java.lang.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​(java.util.ListIterator<java.lang.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​(java.lang.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​(java.lang.Appendable writer)
                               throws java.io.IOException
        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:
        java.io.IOException - This should never happens, it is only required because Appendable is used instead of any concrete class