code: public <E extends Enum<E>> E getEnumPropertyFallback(T property, Class<E> type) throws IllegalArgumentException
      {
          try
          {
              return Enum.valueOf(type, getProperty(property).toUpperCase());
          }
          catch (IllegalArgumentException e)
          {
              return Enum.valueOf(type, getDefaultProperty(property).toUpperCase());
          }
      }
docs: Retrieve the value of the given property as an Enum constant of the given
  type. If the current value of the specified property cannot be converted
  to the appropriate Enum, the default value will be retrieved.<br>
  <br>
  Note that this method requires the Enum constants to all have upper case
  names (following Java naming conventions). This allows for case
  insensitivity in the properties file.
  
  @param <E>
  the type of Enum that will be returned
  @param property
  the property to retrieve
  @param type
  the Enum type to which the property will be converted
  @return the Enum constant corresponding to the value of the given
  property or the default value if the current value is not a valid
  instance of the given type
  @throws IllegalArgumentException
  if both the current and default values are not valid
  constants of the given type