code: public static Builder fromPropertyFileOrSystemProperties(String filename, CharsetDecoder decoder) {
      Properties properties = new Properties();
      if (filename != null && filename.length() > 0) {
        try {
          properties.load(new InputStreamReader(new FileInputStream(filename), decoder));
        } catch (Exception e) {
          log.debug("Trying system properties - unable to read properties file: " + filename);
        }
      }
      return fromProperties(properties, "", true);
    }
docs: Configure the database from up to five properties read from the specified
  properties file, or from the system properties (system properties will take
  precedence over the file):
  <br/>
  <pre>
  database.url=...      Database connect string (required)
  database.user=...     Authenticate as this user (optional if provided in url)
  database.password=... User password (optional if user and password provided in
  url; prompted on standard input if user is provided and
  password is not)
  database.flavor=...   What kind of database it is (optional, will guess based
  on the url if this is not provided)
  database.driver=...   The Java class of the JDBC driver to load (optional, will
  guess based on the flavor if this is not provided)
  </pre>
  @param filename path to the properties file we will attempt to read; if the file
  cannot be read for any reason (e.g. does not exist) a debug level
  log entry will be entered, but it will attempt to proceed using
  solely the system properties
  @param decoder  character encoding to use when reading the property file