Package edu.umd.cs.findbugs.ba.interproc
Class PropertyDatabase<KeyType extends FieldOrMethodDescriptor,ValueType>
java.lang.Object
edu.umd.cs.findbugs.ba.interproc.PropertyDatabase<KeyType,ValueType>
- Type Parameters:
KeyType
- key type: either MethodDescriptor or FieldDescriptorValueType
- 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 Object
Property database for interprocedural analysis.
- Author:
- David Hovemeyer
-
Constructor Summary
-
Method Summary
Modifier and TypeMethodDescriptionprotected abstract ValueType
decodeProperty
(String propStr) Subclasses must define this to instantiate the actual property value from its string encoding.protected abstract String
encodeProperty
(ValueType property) Subclasses must define this to encode a property as a string for output to a file.entrySet()
getKeys()
getProperty
(KeyType key) Get a property.boolean
isEmpty()
Return whether or not the database is empty.protected abstract KeyType
Parse a key from a String.void
read
(InputStream in) Read property database from an input stream.void
readFromFile
(String fileName) Read property database from given file.removeProperty
(KeyType key) Remove a property.void
setProperty
(KeyType key, ValueType property) Set a property.void
write
(OutputStream out) Write property database to an OutputStream.protected abstract void
Write an encoded key to given Writer.void
writeToFile
(String fileName) Write property database to given file.
-
Constructor Details
-
PropertyDatabase
protected PropertyDatabase()Constructor. Creates an empty property database.
-
-
Method Details
-
setProperty
Set a property.- Parameters:
key
- the keyproperty
- the property
-
getProperty
Get a property.- Parameters:
key
- the key- Returns:
- the property, or null if no property is set for this key
-
getKeys
-
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
Remove a property.- Parameters:
key
- the key- Returns:
- the old property, or null if there was no property defined for this key
-
readFromFile
Read property database from given file.- Parameters:
fileName
- name of the database file- Throws:
IOException
PropertyDatabaseFormatException
-
read
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:
IOException
PropertyDatabaseFormatException
-
writeToFile
Write property database to given file.- Parameters:
fileName
- name of the database file- Throws:
IOException
-
write
Write property database to an OutputStream. The OutputStream is guaranteed to be closed, even if an exception is thrown.- Parameters:
out
- the OutputStream- Throws:
IOException
-
parseKey
Parse a key from a String.- Parameters:
s
- a String- Returns:
- the decoded key
- Throws:
PropertyDatabaseFormatException
-
writeKey
Write an encoded key to given Writer.- Parameters:
writer
- the Writerkey
- the key- Throws:
IOException
-
decodeProperty
Subclasses must define this to instantiate the actual property value from its string encoding.- Parameters:
propStr
- String containing the encoded property- Returns:
- the property
- Throws:
PropertyDatabaseFormatException
-
encodeProperty
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
-