Class TypedProperties

All Implemented Interfaces:
Serializable, Cloneable, Map<Object,Object>

public class TypedProperties extends Properties
a sub-class of java.util.Properties that provides the same constructors, adds two convenient load methods to load the properties from files and, most importantly, adds getPropertyAsXXX() methods to get a property as an object of type XXX.
Author:
Gerald Loeffler for the IMP
See Also:
  • Field Details

  • Constructor Details

    • TypedProperties

      public TypedProperties()
      Creates an empty property list with no default values.
    • TypedProperties

      public TypedProperties(Properties defaults)
      Creates an empty property list with the specified defaults.
      Parameters:
      defaults - the defaults.
  • Method Details

    • load

      public void load(String fileName) throws FileNotFoundException, IOException
      Reads a property list (key and element pairs) from the file with the given file name.
      Parameters:
      fileName - the file name. Not null.
      Throws:
      FileNotFoundException - if the file does not exist, is a directory rather than a regular file, or for some other reason cannot be opened for reading.
      IOException - if an error occurred when reading from the input stream created from the file with the given name.
    • load

      public void load(Class clazz, String resourceName) throws IOException
      Reads a property list (key and element pairs) from the given file which is interpreted as a resource of the given class. The difference between a normal file and a resource file is the way in which the file is located: with a normal file, the filename is taken literally to load the file from the file system, whereas with a resource file, the given name is used to ask the class loader of the given class to load the file (see java.lang.Class.getResourceAsStream() and java.lang.ClassLoader.getSystemResourceAsStream()).
      Parameters:
      clazz - the class with which the resource identified by resourceName is taken to be associated with (java.lang.Class.getResourceAsStream() on this Class object is used to load the resource). If clazz is null, the resource is considered to be a system resource, and java.lang.ClassLoader.getSystemResourceAsStream() is used to load the resource.
      resourceName - the name of the resource from which to load the properties. It is a precondition that the resource with this name exists (regardless whether it is interpreted as a system resource or a class resource), otherwise an IllegalArgumentException is thrown.
      Throws:
      IOException - if an error occurred when reading from the input stream created from the given resource.
      See Also:
    • getPropertyAsInteger

      Searches for the property with the specified key in this property list. If the key is not found in this property list, the default property list, and its defaults, recursively, are then checked. The method returns null if the property is not found. If the property is found its value is parsed as an integer and returned. If parsing the value fails, a NumberFormatException is thrown.
      Parameters:
      key - the property key.
      Returns:
      the integer value of the property with the given key or null if the given key is not associated with a property.
      Throws:
      NumberFormatException - if the property associated with the given key does not have an integer value.
    • getPropertyAsLong

      Searches for the property with the specified key in this property list. If the key is not found in this property list, the default property list, and its defaults, recursively, are then checked. The method returns null if the property is not found. If the property is found its value is parsed as a long and returned. If parsing the value fails, a NumberFormatException is thrown.
      Parameters:
      key - the property key.
      Returns:
      the long value of the property with the given key or null if the given key is not associated with a property.
      Throws:
      NumberFormatException - if the property associated with the given key does not have an integer value.
    • getPropertyAsDouble

      Searches for the property with the specified key in this property list. If the key is not found in this property list, the default property list, and its defaults, recursively, are then checked. The method returns null if the property is not found. If the property is found its value is parsed as a double and returned. If parsing the value fails, a NumberFormatException is thrown.
      Parameters:
      key - the property key.
      Returns:
      the double value of the property with the given key or null if the given key is not associated with a property.
      Throws:
      NumberFormatException - if the property associated with the given key does not have an integer value.
    • getPropertyAsBoolean

      Searches for the property with the specified key in this property list. If the key is not found in this property list, the default property list, and its defaults, recursively, are then checked. The method returns null if the property is not found. If the property is found its value is parsed as an boolean and returned. If parsing the value fails, a RuntimeException is thrown.

      If the property value is equal, ignoring case, to the string "true" or "yes" then the boolean value returned from this method is true. If the property value is equal, ignoring case, to the string "false" or "no" then the boolean value returned from this method is false.

      Parameters:
      key - the property key.
      Returns:
      the boolean value of the property with the given key or null if the given key is not associated with a property.
      Throws:
      RuntimeException - if the property associated with the given key does not have an integer value.
    • getPropertyAsStringList

      public List getPropertyAsStringList(String key, String delims)
      Searches for the property with the specified key in this property list. If the key is not found in this property list, the default property list, and its defaults, recursively, are then checked. The method returns null if the property is not found. If the property is found its value is parsed as a list of strings and returned as a List object that contains only String objects. Parsing the property value as a list of strings can not fail and so this method does not throw an exception.

      The property value is interpreted as String objects (tokens) separated by one or more (consecutive) separator characters taken from the delims string. Any of these characters separates the tokens and can hence not be part of any token! The tokens identified in this way are put into a List in the order in which they appear in the property value. White space at the beginning and end of each token are removed before storing the token as an element of the list (this includes white space at the beginning and end of the complete property value)! Empty strings are also never added to the list, i.e. if after removal of white space from a token a token is the empty string, it is not stored in the list! All this results in a very natural conversion of the property value into a list of strings: only "real" (non-white-space, non-white-space-bounded, non-delimiter-containing) sub-strings from the property value are put as string elements into the list.

      Parameters:
      key - the property key.
      delims - the string of allowed delimiter characters (not null and not empty).
      Returns:
      the List of strings for the property with the given key or null if the given key is not associated with a property. An empty list is returned if a property with the given key exists but its value is empty or consists only of white space.
    • getPropertyAsStringList

      just like getPropertyAsStringList(String key, String delims) but uses ',' (comma), ';' (semicolon) and '\t' (tab) as the possible delimiters.
    • toString

      public String toString()
      Overrides:
      toString in class Properties
    • equals

      public boolean equals(Object o)
      Specified by:
      equals in interface Map<Object,Object>
      Overrides:
      equals in class Properties
    • hashCode

      public int hashCode()
      Specified by:
      hashCode in interface Map<Object,Object>
      Overrides:
      hashCode in class Properties
    • clone

      public Object clone()
      Overrides:
      clone in class Properties