Class IDIndex


  • @NotThreadSafe
    public class IDIndex
    extends Object
    Class which provides storage for the ID-to-XMLObject index mapping on an owning XMLObject.
    • Field Detail

      • owner

        @Nonnull
        private final XMLObject owner
        The XMLObject which owns this ID index.
      • idMappings

        @Nonnull
        private Map<String,​XMLObject> idMappings
        Mapping of ID attributes to XMLObjects in the subtree rooted at this object's owner. This allows constant-time dereferencing of ID-typed attributes within the subtree.
    • Constructor Detail

      • IDIndex

        public IDIndex​(@Nonnull
                       XMLObject newOwner)
        Constructor.
        Parameters:
        newOwner - the XMLObject which owns this ID-to-XMLObject index
    • Method Detail

      • registerIDMapping

        public void registerIDMapping​(@Nonnull @NotEmpty
                                      String id,
                                      @Nonnull
                                      XMLObject referent)
        Register an ID-to-XMLObject mapping for one of this object's owner's children.
        Parameters:
        id - the XMLObject child's ID attribute value
        referent - the XMLObject child
      • registerIDMappings

        public void registerIDMappings​(@Nonnull
                                       IDIndex idIndex)
        Register multiple ID-to-XMLObject mappings for this object's owner's children.
        Parameters:
        idIndex - the ID-to-XMLObject mapping to register
      • deregisterIDMapping

        public void deregisterIDMapping​(@Nonnull @NotEmpty
                                        String id)
        Deregister an ID-to-XMLObject mapping for one of this object's owner's children.
        Parameters:
        id - the ID attribute value of the XMLObject child to deregister
      • deregisterIDMappings

        public void deregisterIDMappings​(@Nonnull
                                         IDIndex idIndex)
        Deregister multiple ID-to-XMLObject mappings for this object's owner's children.
        Parameters:
        idIndex - the ID-to-XMLObject mappings to deregister
      • lookup

        @Nullable
        public XMLObject lookup​(@Nonnull @NotEmpty
                                String id)
        Lookup and return the XMLObject identified by the specified ID attribute.
        Parameters:
        id - the ID attribute value to lookup
        Returns:
        the XMLObject identified by the ID attribute value
      • isEmpty

        public boolean isEmpty()
        Return whether the index is currently empty.
        Returns:
        true if the index is currently empty
      • getIDs

        @Nonnull
        public Set<String> getIDs()
        Get the set of ID strings which are the index keys.
        Returns:
        the set of ID strings which are keys to the index
      • getIDMappings

        @Nonnull
        protected Map<String,​XMLObject> getIDMappings()
        Get the ID-to-XMLObject mappings for this object's owner's children.
        Returns:
        the ID-to-XMLObject mapping