Package org.postgis

Class 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>org.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]>
    See Also:
    DriverWrapperLW, DriverWrapperAutoprobe
    • Constructor Detail

      • DriverWrapper

        public DriverWrapper()
                      throws SQLException
        Default constructor. This also loads the appropriate TypesAdder for our SQL Driver instance.
        Throws:
        SQLException - when a SQLException occurs
    • Method Detail

      • 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(). A side-effect of this method is that the specified url parameter may be be changed
        Specified by:
        connect in interface Driver
        Overrides:
        connect in class org.postgresql.Driver
        Parameters:
        url - the URL of the database to connect to (may be changed as a side-effect of this method)
        info - 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
      • useLW

        protected boolean useLW​(Connection result)
        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

        public boolean acceptsURL​(String url)
        Check whether the driver thinks he can handle the given URL. A side-effect of this method is that the specified url parameter may be be changed
        Specified by:
        acceptsURL in interface Driver
        Overrides:
        acceptsURL in class org.postgresql.Driver
        Parameters:
        url - the URL of the driver (may be changed as a side-effect of this method)
        Returns:
        true if this driver accepts the given URL
        See Also:
        Driver.acceptsURL(java.lang.String)
      • getVersion

        public static String getVersion()
        Returns our own CVS version plus postgres Version
        Returns:
        String value reprenstation of the version
      • addGISTypes

        public static void addGISTypes​(org.postgresql.PGConnection pgconn)
                                throws SQLException
        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

        public static void addGISTypes80​(org.postgresql.PGConnection pgconn)
                                  throws SQLException
        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

        public static void addGISTypes72​(org.postgresql.PGConnection pgconn)
                                  throws SQLException
        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

        protected String mangleURL​(String url)
                            throws SQLException
        Mangles the PostGIS URL to return the original PostGreSQL URL
        Parameters:
        url - String containing the url to be "mangled"
        Returns:
        "mangled" string
        Throws:
        SQLException - when a SQLException occurs
      • getProtoString

        protected String getProtoString()
      • getParentLogger

        public Logger getParentLogger()
        Specified by:
        getParentLogger in interface Driver
        Overrides:
        getParentLogger in class org.postgresql.Driver