Package io.github.sebasbaumh.postgis
Class DriverWrapper
- java.lang.Object
-
- org.postgresql.Driver
-
- io.github.sebasbaumh.postgis.DriverWrapper
-
- All Implemented Interfaces:
Driver
public class DriverWrapper extends org.postgresql.Driver
DriverWrapper Wraps the PostGreSQL Driver to transparently add the PostGIS Object Classes. This avoids the need of explicit addDataType() calls from the driver users side. This method currently works with J2EE DataSource implementations, and with DriverManager framework. Simply replace the "jdbc:postgresql:" with a "jdbc:postgresql_postGIS:" in the jdbc URL. When using the drivermanager, you need to initialize DriverWrapper instead of (or in addition to) org.postgresql.Driver. When using a J2EE DataSource implementation, set the driver class property in the datasource config, the following works for jboss:<driver-class>io.github.sebasbaumh.postgis.DriverWrapper</driver-class>
If you don't like or want to use the DriverWrapper, you have two alternatives, see the README file. Also note that the addDataType() methods known from earlier pgjdbc versions are deprecated in pgjdbc 8.0, see the commented code variants in the addGisTypes() method. This wrapper always uses EWKT as canonical text representation, and thus works against PostGIS 1.x servers as well as 0.x (tested with 0.8, 0.9 and 1.0).- Author:
- Markus Schaber <[email protected]>
-
-
Constructor Summary
Constructors Constructor Description DriverWrapper()
Default constructor.
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description boolean
acceptsURL(String url)
Check whether the driver thinks he can handle the given URL.Connection
connect(String url, Properties info)
Creates a postgresql connection, and then adds the PostGIS data types to it calling addpgtypes()Logger
getParentLogger()
static void
registerDataTypes(Connection conn)
Registers all datatypes on the given connection, supports wrapped connections unlikeregisterDataTypes(PGConnection)
.static void
registerDataTypes(org.postgresql.PGConnection pgconn)
Registers all datatypes on the given connection.
-
-
-
Method Detail
-
registerDataTypes
public static void registerDataTypes(@Nonnull Connection conn) throws SQLException
Registers all datatypes on the given connection, supports wrapped connections unlikeregisterDataTypes(PGConnection)
.- Parameters:
conn
-Connection
- Throws:
SQLException
- if theConnection
is neither anPGConnection
, nor aConnection
wrapped around anPGConnection
.
-
registerDataTypes
public static void registerDataTypes(@Nonnull org.postgresql.PGConnection pgconn) throws SQLException
Registers all datatypes on the given connection.- Parameters:
pgconn
-PGConnection
- Throws:
SQLException
-
acceptsURL
public boolean acceptsURL(String url)
Check whether the driver thinks he can handle the given URL.- Specified by:
acceptsURL
in interfaceDriver
- Overrides:
acceptsURL
in classorg.postgresql.Driver
- Parameters:
url
- the URL of the driver- Returns:
- true if this driver accepts the given URL
- See Also:
Driver.acceptsURL(java.lang.String)
-
connect
public Connection connect(String url, Properties info) throws SQLException
Creates a postgresql connection, and then adds the PostGIS data types to it calling addpgtypes()- Specified by:
connect
in interfaceDriver
- Overrides:
connect
in classorg.postgresql.Driver
- Parameters:
url
- the URL of the database to connect toinfo
- a list of arbitrary tag/value pairs as connection arguments- Returns:
- a connection to the URL or null if it isnt us
- Throws:
SQLException
- if a database access error occurs- See Also:
Driver.connect(java.lang.String, java.util.Properties)
,Driver
-
getParentLogger
public Logger getParentLogger()
- Specified by:
getParentLogger
in interfaceDriver
- Overrides:
getParentLogger
in classorg.postgresql.Driver
-
-