code: @Override
  	public String getDatabaseUrlForDatabase(DatabaseType databaseType, String hostname,
  			int port, String databaseName) {
  		String scheme = this.getSchemeNames().get(databaseType);
  		String authenticationInfo = this.getAuthenticationInfo().get(databaseType);
  		Assert.notNull(databaseType, String
  				.format("No scheme name found for database :'%s'", databaseType.name()));
  		try {
  			return new URI(scheme, authenticationInfo, hostname, port,
  					databaseName != null ? "/" + databaseName : null, null, null)
  							.toString();
  		}
  		catch (URISyntaxException e) {
  			throw new IllegalArgumentException(
  					"Error constructing URI from Host:'" + hostname + "' and port:'"
  							+ port + "' and database name:'" + databaseName + "'!");
  		}
  	}
docs: Constructs the URL for the database by using a {@link URI} to construct the URL.
  @param databaseType - The databaseType for which the URL should be constructed.
  @param hostname - The hostname without any port information used to connect to.
  @param port - The port used to connect to the database
  @param databaseName - The database name used to connect to. The usage is
  implementation specific (e.g. for Oracle this is the SID)
  @return - the database specific URL
  @throws IllegalArgumentException if there is no scheme available for the database
  type or if the information is not valid to construct a URL.