Class HashMapDb

  • All Implemented Interfaces:
    java.lang.AutoCloseable, ILispDAO

    public class HashMapDb
    extends java.lang.Object
    implements ILispDAO, java.lang.AutoCloseable
    • Field Summary

      Fields 
      Modifier and Type Field Description
      protected static org.slf4j.Logger LOG  
    • Constructor Summary

      Constructors 
      Constructor Description
      HashMapDb()  
    • Method Summary

      All Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      void close()  
      java.util.Map<java.lang.String,​java.lang.Object> get​(java.lang.Object key)
      Get the entries from the DAO.
      void getAll​(IRowVisitor visitor)
      Enumerate all the entries from the DAO.
      java.util.Map<java.lang.String,​java.lang.Object> getBest​(java.lang.Object key)
      Get value for longest prefix match from the DAO.
      java.util.AbstractMap.SimpleImmutableEntry<Eid,​java.util.Map<java.lang.String,​?>> getBestPair​(java.lang.Object key)
      Get longest prefix match and value from the DAO.
      Eid getCoveringLessSpecific​(Eid key)
      Look up the covering prefix for the argument, but exclude the argument itself, so the result is always less specific than the lookup key.
      Eid getParentPrefix​(Eid key)
      Get parent prefix.
      Eid getSiblingPrefix​(Eid key)
      Get sibling prefix.
      java.lang.Object getSpecific​(java.lang.Object key, java.lang.String valueKey)
      Get a specific value from the DAO.
      java.util.Set<Eid> getSubtree​(Eid key)
      Get the subtree of the given prefix.
      Eid getVirtualParentSiblingPrefix​(Eid key)
      Get virtual parent sibling prefix.
      Eid getWidestNegativePrefix​(Eid key)
      Get widest negative prefix.
      boolean isEmpty()
      Check if the DAO is empty.
      void put​(java.lang.Object key, MappingEntry<?>... values)
      Put a entry into the DAO.
      ILispDAO putNestedTable​(java.lang.Object key, java.lang.String valueKey)
      Inserts a new, nested table for given key and subkey.
      ILispDAO putTable​(java.lang.String key)
      Insert a new table for given key.
      void remove​(java.lang.Object key)
      Remove an entry from the DAO.
      void removeAll()
      Clear the DAO and remove all of the entries.
      void removeSpecific​(java.lang.Object key, java.lang.String valueKey)
      Remove an entry from the DAO.
      void tryAddToIpTrie​(java.lang.Object key)  
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    • Field Detail

      • LOG

        protected static final org.slf4j.Logger LOG
    • Constructor Detail

      • HashMapDb

        public HashMapDb()
    • Method Detail

      • tryAddToIpTrie

        public void tryAddToIpTrie​(java.lang.Object key)
      • put

        public void put​(java.lang.Object key,
                        MappingEntry<?>... values)
        Description copied from interface: ILispDAO
        Put a entry into the DAO.
        Specified by:
        put in interface ILispDAO
        Parameters:
        key - The entry's key.
        values - The entry's value.
      • getSpecific

        public java.lang.Object getSpecific​(java.lang.Object key,
                                            java.lang.String valueKey)
        Description copied from interface: ILispDAO
        Get a specific value from the DAO.
        Specified by:
        getSpecific in interface ILispDAO
        Parameters:
        key - The key of the value to fetch
        valueKey - The value to fetch
        Returns:
        The value from the DAO.
      • get

        public java.util.Map<java.lang.String,​java.lang.Object> get​(java.lang.Object key)
        Description copied from interface: ILispDAO
        Get the entries from the DAO.
        Specified by:
        get in interface ILispDAO
        Parameters:
        key - The key to be looked up as exact match.
        Returns:
        The value from the DAO.
      • getBest

        public java.util.Map<java.lang.String,​java.lang.Object> getBest​(java.lang.Object key)
        Description copied from interface: ILispDAO
        Get value for longest prefix match from the DAO.
        Specified by:
        getBest in interface ILispDAO
        Parameters:
        key - The eid prefix, IPv4 or IPv6, to be looked up. Key must be normalized.
        Returns:
        The value from the DAO.
      • getBestPair

        public java.util.AbstractMap.SimpleImmutableEntry<Eid,​java.util.Map<java.lang.String,​?>> getBestPair​(java.lang.Object key)
        Description copied from interface: ILispDAO
        Get longest prefix match and value from the DAO.
        Specified by:
        getBestPair in interface ILispDAO
        Parameters:
        key - The eid prefix, IPv4 or IPv6, to be looked up. Key must be normalized
        Returns:
        The best match and value pair from the DAO.
      • getAll

        public void getAll​(IRowVisitor visitor)
        Description copied from interface: ILispDAO
        Enumerate all the entries from the DAO.
        Specified by:
        getAll in interface ILispDAO
        Parameters:
        visitor - The visitor object.
      • getCoveringLessSpecific

        public Eid getCoveringLessSpecific​(Eid key)
        Description copied from interface: ILispDAO
        Look up the covering prefix for the argument, but exclude the argument itself, so the result is always less specific than the lookup key.
        Specified by:
        getCoveringLessSpecific in interface ILispDAO
        Parameters:
        key - The eid prefix, IPv4 or IPv6, to be looked up. Key must be normalized.
        Returns:
        The covering prefix.
      • getParentPrefix

        public Eid getParentPrefix​(Eid key)
        Description copied from interface: ILispDAO
        Get parent prefix.
        Specified by:
        getParentPrefix in interface ILispDAO
        Parameters:
        key - The eid prefix, IPv4 or IPv6, to be looked up. Key must be normalized.
        Returns:
        The parent prefix of the longest prefix match for the key.
      • getSiblingPrefix

        public Eid getSiblingPrefix​(Eid key)
        Description copied from interface: ILispDAO
        Get sibling prefix.
        Specified by:
        getSiblingPrefix in interface ILispDAO
        Parameters:
        key - The eid prefix, IPv4 or IPv6, to be looked up. Key must be normalized.
        Returns:
        The sibling prefix of the longest prefix match for the key.
      • getVirtualParentSiblingPrefix

        public Eid getVirtualParentSiblingPrefix​(Eid key)
        Description copied from interface: ILispDAO
        Get virtual parent sibling prefix.
        Specified by:
        getVirtualParentSiblingPrefix in interface ILispDAO
        Parameters:
        key - The eid prefix, IPv4 or IPv6, to be looked up. Key must be normalized.
        Returns:
        The longest prefix match node's virtual parent's sibling or null if nothing is found.
      • getWidestNegativePrefix

        public Eid getWidestNegativePrefix​(Eid key)
        Description copied from interface: ILispDAO
        Get widest negative prefix.
        Specified by:
        getWidestNegativePrefix in interface ILispDAO
        Parameters:
        key - The eid prefix, IPv4 or IPv6, to be looked up. Key must be normalized.
        Returns:
        The widest negative prefix found.
      • getSubtree

        public java.util.Set<Eid> getSubtree​(Eid key)
        Description copied from interface: ILispDAO
        Get the subtree of the given prefix.
        Specified by:
        getSubtree in interface ILispDAO
        Parameters:
        key - The eid prefix, IPv4 or IPv6, to be looked up. Key must be normalized.
        Returns:
        The set of EIDs that part of the subtree of the given EID.
      • remove

        public void remove​(java.lang.Object key)
        Description copied from interface: ILispDAO
        Remove an entry from the DAO.
        Specified by:
        remove in interface ILispDAO
        Parameters:
        key - The key of the entry to delete
      • removeSpecific

        public void removeSpecific​(java.lang.Object key,
                                   java.lang.String valueKey)
        Description copied from interface: ILispDAO
        Remove an entry from the DAO.
        Specified by:
        removeSpecific in interface ILispDAO
        Parameters:
        key - The key of the entry
        valueKey - The value to delete
      • removeAll

        public void removeAll()
        Description copied from interface: ILispDAO
        Clear the DAO and remove all of the entries.
        Specified by:
        removeAll in interface ILispDAO
      • close

        public void close()
                   throws java.lang.Exception
        Specified by:
        close in interface java.lang.AutoCloseable
        Throws:
        java.lang.Exception
      • putNestedTable

        public ILispDAO putNestedTable​(java.lang.Object key,
                                       java.lang.String valueKey)
        Description copied from interface: ILispDAO
        Inserts a new, nested table for given key and subkey. Also acts as factory method.
        Specified by:
        putNestedTable in interface ILispDAO
        Parameters:
        key - The key for which a new table is linked in
        valueKey - The subkey under which to insert the new table
        Returns:
        The inserted table
      • putTable

        public ILispDAO putTable​(java.lang.String key)
        Description copied from interface: ILispDAO
        Insert a new table for given key.
        Specified by:
        putTable in interface ILispDAO
        Parameters:
        key - The key for the table
        Returns:
        The inserted table
      • isEmpty

        public boolean isEmpty()
        Description copied from interface: ILispDAO
        Check if the DAO is empty.
        Specified by:
        isEmpty in interface ILispDAO
        Returns:
        true if empty