Class PropertyDatabase<KeyType extends FieldOrMethodDescriptor,​ValueType>

  • Type Parameters:
    KeyType - key type: either MethodDescriptor or FieldDescriptor
    ValueType - value type: a value that summarizes some property of the associated key
    Direct Known Subclasses:
    FieldPropertyDatabase, MethodPropertyDatabase

    public abstract class PropertyDatabase<KeyType extends FieldOrMethodDescriptor,​ValueType>
    extends java.lang.Object
    Property database for interprocedural analysis.
    Author:
    David Hovemeyer
    • Constructor Summary

      Constructors 
      Modifier Constructor Description
      protected PropertyDatabase()
      Constructor.
    • Method Summary

      All Methods Instance Methods Abstract Methods Concrete Methods 
      Modifier and Type Method Description
      protected abstract ValueType decodeProperty​(java.lang.String propStr)
      Subclasses must define this to instantiate the actual property value from its string encoding.
      protected abstract java.lang.String encodeProperty​(ValueType property)
      Subclasses must define this to encode a property as a string for output to a file.
      java.util.Collection<java.util.Map.Entry<KeyType,​ValueType>> entrySet()  
      java.util.Set<KeyType> getKeys()  
      ValueType getProperty​(KeyType key)
      Get a property.
      boolean isEmpty()
      Return whether or not the database is empty.
      protected abstract KeyType parseKey​(java.lang.String s)
      Parse a key from a String.
      void read​(java.io.InputStream in)
      Read property database from an input stream.
      void readFromFile​(java.lang.String fileName)
      Read property database from given file.
      ValueType removeProperty​(KeyType key)
      Remove a property.
      void setProperty​(KeyType key, ValueType property)
      Set a property.
      void write​(java.io.OutputStream out)
      Write property database to an OutputStream.
      protected abstract void writeKey​(java.io.Writer writer, KeyType key)
      Write an encoded key to given Writer.
      void writeToFile​(java.lang.String fileName)
      Write property database to given file.
      • Methods inherited from class java.lang.Object

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

      • PropertyDatabase

        protected PropertyDatabase()
        Constructor. Creates an empty property database.
    • Method Detail

      • setProperty

        public void setProperty​(KeyType key,
                                ValueType property)
        Set a property.
        Parameters:
        key - the key
        property - the property
      • getProperty

        @CheckForNull
        public ValueType getProperty​(KeyType key)
        Get a property.
        Parameters:
        key - the key
        Returns:
        the property, or null if no property is set for this key
      • getKeys

        public java.util.Set<KeyType> getKeys()
      • entrySet

        public java.util.Collection<java.util.Map.Entry<KeyType,​ValueType>> entrySet()
      • isEmpty

        public boolean isEmpty()
        Return whether or not the database is empty.
        Returns:
        true if the database is empty, false it it has at least one entry
      • removeProperty

        public ValueType removeProperty​(KeyType key)
        Remove a property.
        Parameters:
        key - the key
        Returns:
        the old property, or null if there was no property defined for this key
      • read

        public void read​(@WillClose
                         java.io.InputStream in)
                  throws java.io.IOException,
                         PropertyDatabaseFormatException
        Read property database from an input stream. The InputStream is guaranteed to be closed, even if an exception is thrown.
        Parameters:
        in - the InputStream
        Throws:
        java.io.IOException
        PropertyDatabaseFormatException
      • writeToFile

        public void writeToFile​(java.lang.String fileName)
                         throws java.io.IOException
        Write property database to given file.
        Parameters:
        fileName - name of the database file
        Throws:
        java.io.IOException
      • write

        public void write​(@WillClose
                          java.io.OutputStream out)
                   throws java.io.IOException
        Write property database to an OutputStream. The OutputStream is guaranteed to be closed, even if an exception is thrown.
        Parameters:
        out - the OutputStream
        Throws:
        java.io.IOException
      • writeKey

        protected abstract void writeKey​(java.io.Writer writer,
                                         KeyType key)
                                  throws java.io.IOException
        Write an encoded key to given Writer.
        Parameters:
        writer - the Writer
        key - the key
        Throws:
        java.io.IOException
      • encodeProperty

        protected abstract java.lang.String encodeProperty​(ValueType property)
        Subclasses must define this to encode a property as a string for output to a file.
        Parameters:
        property - the property
        Returns:
        a String which encodes the property