package com.vividsolutions.jump.datastore.postgis; import java.sql.*; import com.vividsolutions.jump.datastore.*; import com.vividsolutions.jump.parameter.ParameterList; import com.vividsolutions.jump.parameter.ParameterListSchema; import org.postgresql.PGConnection; /** * A driver for supplying {@link PostgisDSConnection}s */ public class PostgisDataStoreDriver implements DataStoreDriver { public static final String DRIVER_NAME = "PostGIS"; public static final String JDBC_CLASS = "org.postgresql.Driver"; public static final String URL_PREFIX = "jdbc:postgresql://"; public static final String PARAM_Server = "Server"; public static final String PARAM_Port = "Port"; public static final String PARAM_Instance = "Database"; public static final String PARAM_User = "User"; public static final String PARAM_Password = "Password"; private static final String[] paramNames = new String[] { PARAM_Server, PARAM_Port, PARAM_Instance, PARAM_User, PARAM_Password }; private static final Class[] paramClasses = new Class[] { String.class, Integer.class, String.class, String.class, String.class }; private final ParameterListSchema schema = new ParameterListSchema(paramNames, paramClasses);; public PostgisDataStoreDriver() { } public String getName() { return DRIVER_NAME; } public ParameterListSchema getParameterListSchema() { return schema; } public DataStoreConnection createConnection(ParameterList params) throws Exception { String host = params.getParameterString(PARAM_Server); int port = params.getParameterInt(PARAM_Port); String database = params.getParameterString(PARAM_Instance); String user = params.getParameterString(PARAM_User); String password = params.getParameterString(PARAM_Password); String url = String.valueOf(new StringBuffer(URL_PREFIX).append (host).append (":").append (port).append ("/").append(database)); Driver driver = (Driver) Class.forName(JDBC_CLASS).newInstance(); DriverManager.registerDriver(driver); Connection conn = DriverManager.getConnection(url, user, password); return new PostgisDSConnection(conn); } public boolean isAdHocQuerySupported() { return true; } }