Package net.postgis.jdbc
Class DriverWrapper
java.lang.Object
org.postgresql.Driver
net.postgis.jdbc.DriverWrapper
- All Implemented Interfaces:
Driver
- Direct Known Subclasses:
DriverWrapperAutoprobe,DriverWrapperLW
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>net.postgis.jdbc.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]>
- See Also:
-
Nested Class Summary
Nested ClassesModifier and TypeClassDescriptionprotected static classBase class for the three typewrapper implementationsprotected static classaddGISTypes for V7.2 pgjdbcprotected static final classaddGISTypes for V7.3 and V7.4 pgjdbcprotected static classaddGISTypes for V8.0 (and hopefully newer) pgjdbc -
Field Summary
FieldsModifier and TypeFieldDescriptionprotected static final LoggerThe static logger instance.static final Stringstatic final Stringstatic final Stringprotected static DriverWrapper.TypesAdderprotected static DriverWrapper.TypesAdderprotected static DriverWrapper.TypesAdderprotected DriverWrapper.TypesAdder -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionbooleanacceptsURL(String url) Check whether the driver thinks he can handle the given URL.static voidaddGISTypes(org.postgresql.PGConnection pgconn) adds the JTS/PostGIS Data types to a PG 7.3+ Connection.static voidaddGISTypes72(org.postgresql.PGConnection pgconn) adds the JTS/PostGIS Data types to a PG 7.2 Connection.static voidaddGISTypes80(org.postgresql.PGConnection pgconn) adds the JTS/PostGIS Data types to a PG 8.0+ Connection.connect(String url, Properties info) Creates a postgresql connection, and then adds the PostGIS data types to it calling addpgtypes().protected Stringprotected static DriverWrapper.TypesAddergetTypesAdder(org.postgresql.Driver d) static StringReturns our own CVS version plus postgres Versionprotected StringMangles the PostGIS URL to return the original PostGreSQL URLprotected booleanuseLW(Connection result) Do we have HexWKB as well known text representation - to be overridden by subclasses.Methods inherited from class org.postgresql.Driver
deregister, getMajorVersion, getMinorVersion, getPropertyInfo, getSharedTimer, isRegistered, jdbcCompliant, notImplemented, parseURL, register
-
Field Details
-
logger
The static logger instance. -
POSTGRES_PROTOCOL
- See Also:
-
POSTGIS_PROTOCOL
- See Also:
-
REVISION
- See Also:
-
ta72
-
ta74
-
ta80
-
typesAdder
-
-
Constructor Details
-
DriverWrapper
Default constructor. This also loads the appropriate TypesAdder for our SQL Driver instance.- Throws:
SQLException- when a SQLException occurs
-
-
Method Details
-
getTypesAdder
protected static DriverWrapper.TypesAdder getTypesAdder(org.postgresql.Driver d) throws SQLException - Throws:
SQLException
-
connect
Creates a postgresql connection, and then adds the PostGIS data types to it calling addpgtypes().- Specified by:
connectin interfaceDriver- Overrides:
connectin 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 the driver does not support the subprotocol specified in the URL
- Throws:
SQLException- if a database access error occurs- See Also:
-
useLW
Do we have HexWKB as well known text representation - to be overridden by subclasses.- Parameters:
result- Connection to check- Returns:
- true if using EWKB, false otherwise
-
acceptsURL
Check whether the driver thinks he can handle the given URL.- Specified by:
acceptsURLin interfaceDriver- Overrides:
acceptsURLin classorg.postgresql.Driver- Parameters:
url- the URL of the driver- Returns:
- true if this driver accepts the given URL
- See Also:
-
getVersion
Returns our own CVS version plus postgres Version- Returns:
- String value reprenstation of the version
-
addGISTypes
adds the JTS/PostGIS Data types to a PG 7.3+ Connection. If you use PostgreSQL jdbc drivers V8.0 or newer, those methods are deprecated due to some class loader problems (but still work for now), and you may want to use the method below instead.- Parameters:
pgconn- The PGConnection object to add the types to- Throws:
SQLException- when a SQLException occurs
-
addGISTypes80
adds the JTS/PostGIS Data types to a PG 8.0+ Connection.- Parameters:
pgconn- The PGConnection object to add the types to- Throws:
SQLException- when a SQLException occurs
-
addGISTypes72
adds the JTS/PostGIS Data types to a PG 7.2 Connection.- Parameters:
pgconn- The PGConnection object to add the types to- Throws:
SQLException- when a SQLException occurs
-
mangleURL
Mangles the PostGIS URL to return the original PostGreSQL URL- Parameters:
url- String containing the url to be "mangled"- Returns:
- "mangled" string or null if the URL is unsupported
-
getProtoString
-
getParentLogger
- Specified by:
getParentLoggerin interfaceDriver- Overrides:
getParentLoggerin classorg.postgresql.Driver
-