package org.reldb.rel.client.connection.string; import java.io.IOException; import java.net.MalformedURLException; import org.reldb.rel.client.connection.CrashHandler; import org.reldb.rel.client.utilities.ClassPathHack; import org.reldb.rel.exceptions.DatabaseFormatVersionException; import org.reldb.rel.shared.Defaults; public class ClientFromURL { /** Open a connection. */ public static StringReceiverClient openConnection(String databaseURL, boolean createDbAllowed, CrashHandler crashHandler, String[] additionalJars) throws NumberFormatException, IOException, MalformedURLException, ClassNotFoundException, DatabaseFormatVersionException { if (databaseURL.toLowerCase().startsWith("db:")) { if (databaseURL.length() > 3) return new ClientLocal(databaseURL.substring(3).trim(), createDbAllowed, crashHandler, additionalJars); else throw new MalformedURLException("Please specify a local database as db:<directory>"); } else { ClassPathHack.addFile("lib/relshared.jar"); String hostName = databaseURL; int port = Defaults.getDefaultPort(); int colonPosition = databaseURL.indexOf(':'); if (colonPosition >= 0) { hostName = databaseURL.substring(0, colonPosition); String portString = databaseURL.substring(colonPosition + 1); port = Integer.parseInt(portString); } return new ClientNetwork(hostName, port); } } }