It provides varargs query method taking a SQL query and the list of
parameters to bind.
No need to call ps.setXXX to bind parameters.

On 13 January 2016 at 15:42, <edgar.sol...@web.de> wrote:

> how do you mean? ..ede
>
> On 13.01.2016 15:40, Nicolas Ribot wrote:
> > It could be useful to encapsulate parameters binding, though.
> >
> > On 13 January 2016 at 15:21, Nicolas Ribot <nicolas.ri...@gmail.com
> <mailto:nicolas.ri...@gmail.com>> wrote:
> >
> >     Yes, indeed, as we trap exceptions ourselves for JDBC stuff, simple
> PreparedStatement should be enough.
> >     I will give it a test.
> >
> >     Nicolas
> >
> >     On 13 January 2016 at 15:17, <edgar.sol...@web.de <mailto:
> edgar.sol...@web.de>> wrote:
> >
> >         hmm.. don't see what the advantage is besides as they call it
> "abstract out all of the cleanup tasks" .
> >
> >         you might as well work w/ plain prepared statements before using
> it.
> >
> >         Mike: wanna pitch in :) ?
> >
> >         ..ede
> >
> >         On 13.01.2016 14:57, Nicolas Ribot wrote:
> >         > Maybe the lightweight Apache commons DB Utils would be enough ?
> >         >
> https://commons.apache.org/proper/commons-dbutils/examples.html
> >         >
> >         > It provides preparedStatement and a very thin interface for
> resultSets. It seems to integrate well with current code.
> >         >
> >         > Nicolas
> >         >
> >         > On 13 January 2016 at 14:35, <edgar.sol...@web.de <mailto:
> edgar.sol...@web.de> <mailto:edgar.sol...@web.de <mailto:
> edgar.sol...@web.de>>> wrote:
> >         >
> >         >     there are probably other alternatives out there, don't
> feel obliged to use the first one i found ;) .
> >         >
> >         >     ..ede
> >         >
> >         >     On 13.01.2016 14:28, Nicolas Ribot wrote:
> >         >     > Yes, definitely agree it would be far better than
> current code.
> >         >     > Will look at sqlbuilder.
> >         >     >
> >         >     > Nicolas
> >         >     >
> >         >     > On 13 January 2016 at 14:25, <edgar.sol...@web.de
> <mailto:edgar.sol...@web.de> <mailto:edgar.sol...@web.de <mailto:
> edgar.sol...@web.de>> <mailto:edgar.sol...@web.de <mailto:
> edgar.sol...@web.de> <mailto:edgar.sol...@web.de <mailto:
> edgar.sol...@web.de>>>> wrote:
> >         >     >
> >         >     >     hey Nico,
> >         >     >
> >         >     >     good start. but before escaping every little
> speciality consider using prepared statements again ;).
> >         >     >
> >         >     >     or how about
> >         >     >      http://openhms.sourceforge.net/sqlbuilder/
> >         >     >     looks fairly simple and w/ 200k size affordable.
> >         >     >
> >         >     >     ..ede
> >         >     >
> >         >     >
> >         >     >     On 13.01.2016 14:02,
> jump-pilot-...@lists.sourceforge.net <mailto:
> jump-pilot-...@lists.sourceforge.net> <mailto:
> jump-pilot-...@lists.sourceforge.net <mailto:
> jump-pilot-...@lists.sourceforge.net>> <mailto:
> jump-pilot-...@lists.sourceforge.net <mailto:
> jump-pilot-...@lists.sourceforge.net> <mailto:
> jump-pilot-...@lists.sourceforge.net <mailto:
> jump-pilot-...@lists.sourceforge.net>>> wrote:
> >         >     >     > Revision: 4784
> >         >     >     >
> http://sourceforge.net/p/jump-pilot/code/4784
> >         >     >     > Author:   elnico
> >         >     >     > Date:     2016-01-13 13:02:12 +0000 (Wed, 13 Jan
> 2016)
> >         >     >     > Log Message:
> >         >     >     > -----------
> >         >     >     > Escape of single quotes in SQL identifiers names,
> as most database identifiers can contain quotes.
> >         >     >     >
> >         >     >     > Modified Paths:
> >         >     >     > --------------
> >         >     >     >
>  core/trunk/src/com/vividsolutions/jump/datastore/h2/H2DSMetadata.java
> >         >     >     >
>  
> core/trunk/src/com/vividsolutions/jump/datastore/mariadb/MariadbDSMetadata.java
> >         >     >     >
>  core/trunk/src/com/vividsolutions/jump/datastore/oracle/OracleDSMetadata.java
> >         >     >     >
>  
> core/trunk/src/com/vividsolutions/jump/datastore/postgis/PostgisDSMetadata.java
> >         >     >     >
>  
> core/trunk/src/com/vividsolutions/jump/datastore/spatialdatabases/SpatialDatabasesDSMetadata.java
> >         >     >     >
>  
> core/trunk/src/com/vividsolutions/jump/datastore/spatialdatabases/SpatialDatabasesSQLBuilder.java
> >         >     >     >
>  
> core/trunk/src/com/vividsolutions/jump/datastore/spatialite/SpatialiteDSMetadata.java
> >         >     >     >
> >         >     >     > Modified:
> core/trunk/src/com/vividsolutions/jump/datastore/h2/H2DSMetadata.java
> >         >     >     >
> ===================================================================
> >         >     >     > ---
> core/trunk/src/com/vividsolutions/jump/datastore/h2/H2DSMetadata.java
>  2016-01-13 10:49:14 UTC (rev 4783)
> >         >     >     > +++
> core/trunk/src/com/vividsolutions/jump/datastore/h2/H2DSMetadata.java
>  2016-01-13 13:02:12 UTC (rev 4784)
> >         >     >     > @@ -3,6 +3,7 @@
> >         >     >     >  import
> com.vividsolutions.jump.datastore.DataStoreConnection;
> >         >     >     >  import
> com.vividsolutions.jump.datastore.GeometryColumn;
> >         >     >     >  import
> com.vividsolutions.jump.datastore.spatialdatabases.SpatialDatabasesDSMetadata;
> >         >     >     > +import
> com.vividsolutions.jump.datastore.spatialdatabases.SpatialDatabasesSQLBuilder;
> >         >     >     >
> >         >     >     >  import java.util.List;
> >         >     >     >
> >         >     >     > @@ -18,7 +19,7 @@
> >         >     >     >          defaultSchemaName = "PUBLIC";
> >         >     >     >          spatialDbName = "H2";
> >         >     >     >          //spatialExtentQuery1 = "SELECT
> ST_AsBinary(ST_Estimated_Extent( '%s', '%s', '%s' ))";
> >         >     >     > -        spatialExtentQuery1 = "SELECT
> ST_AsBinary(ST_Envelope(ST_Extent(%s))) FROM %s.%s";
> >         >     >     > +        spatialExtentQuery1 = "SELECT
> ST_AsBinary(ST_Envelope(ST_Extent(%s))) FROM \"%s\".\"%s\"";
> >         >     >     >          geoColumnsQuery = "SELECT
> f_geometry_column, srid, type FROM geometry_columns where f_table_schema =
> '%s' and f_table_name = '%s'";
> >         >     >     >          sridQuery = "SELECT srid FROM
> geometry_columns where f_table_schema = '%s' and f_table_name = '%s' and
> f_geometry_column = '%s'";
> >         >     >     >      }
> >         >     >     > @@ -35,13 +36,18 @@
> >         >     >     >
> >         >     >     >      @Override
> >         >     >     >      public String getGeoColumnsQuery(String
> datasetName) {
> >         >     >     > -        return
> String.format(this.geoColumnsQuery, getSchemaName(datasetName),
> getTableName(datasetName));
> >         >     >     > +        // escape single quotes
> >         >     >     > +        return String.format(this.geoColumnsQuery,
> >         >     >     > +
> SpatialDatabasesSQLBuilder.escapeSingleQuote(getSchemaName(datasetName)),
> >         >     >     > +
> SpatialDatabasesSQLBuilder.escapeSingleQuote(getTableName(datasetName)));
> >         >     >     >      }
> >         >     >     >
> >         >     >     >      @Override
> >         >     >     >      public String getSridQuery(String schemaName,
> String tableName, String colName) {
> >         >     >     > -        // TODO
> >         >     >     > -        return String.format(this.sridQuery,
> schemaName, tableName, colName);
> >         >     >     > +        // escape single quotes
> >         >     >     > +        return String.format(this.sridQuery,
> >         >     >     > +
> SpatialDatabasesSQLBuilder.escapeSingleQuote(schemaName),
> >         >     >     > +
> SpatialDatabasesSQLBuilder.escapeSingleQuote(tableName), colName);
> >         >     >     >      }
> >         >     >     >
> >         >     >     >      @Override
> >         >     >     >
> >         >     >     > Modified:
> core/trunk/src/com/vividsolutions/jump/datastore/mariadb/MariadbDSMetadata.java
> >         >     >     >
> ===================================================================
> >         >     >     > ---
> core/trunk/src/com/vividsolutions/jump/datastore/mariadb/MariadbDSMetadata.java
>  2016-01-13 10:49:14 UTC (rev 4783)
> >         >     >     > +++
> core/trunk/src/com/vividsolutions/jump/datastore/mariadb/MariadbDSMetadata.java
>  2016-01-13 13:02:12 UTC (rev 4784)
> >         >     >     > @@ -3,12 +3,8 @@
> >         >     >     >  import
> com.vividsolutions.jump.datastore.DataStoreConnection;
> >         >     >     >  import
> com.vividsolutions.jump.datastore.spatialdatabases.*;
> >         >     >     >  import
> com.vividsolutions.jump.datastore.GeometryColumn;
> >         >     >     > -import
> com.vividsolutions.jump.datastore.jdbc.JDBCUtil;
> >         >     >     > -import
> com.vividsolutions.jump.datastore.jdbc.ResultSetBlock;
> >         >     >     >  import java.sql.DatabaseMetaData;
> >         >     >     >  import java.sql.ResultSet;
> >         >     >     > -import java.sql.SQLException;
> >         >     >     > -import java.util.ArrayList;
> >         >     >     >  import java.util.List;
> >         >     >     >
> >         >     >     >  public class MariadbDSMetadata extends
> SpatialDatabasesDSMetadata {
> >         >     >     > @@ -73,6 +69,7 @@
> >         >     >     >
> >         >     >     >      // query according to detected layout:
> >         >     >     >      geoColumnsQuery = "SELECT f_geometry_column,
> srid, type FROM geometry_columns where f_table_name = '%s'";
> >         >     >     > +    // TODO: not the same number of param to
> replace...
> >         >     >     >      if (geometryColumnsLayout ==
> GeometryColumnsLayout.NO_LAYOUT) {
> >         >     >     >        geoColumnsQuery = "select c.COLUMN_NAME, 0,
> 'geometry' \n"
> >         >     >     >          + "from information_schema.TABLES t join
> information_schema.COLUMNS C \n"
> >         >     >     > @@ -86,8 +83,9 @@
> >         >     >     >      // query according to detected layout:
> >         >     >     >      sridQuery = "SELECT srid FROM
> geometry_columns where f_table_name = '%s' and f_geometry_column = '%s'";
> >         >     >     >      if (geometryColumnsLayout ==
> GeometryColumnsLayout.NO_LAYOUT) {
> >         >     >     > -      sridQuery = "select case when
> min(st_srid(%s)) <> max(st_srid(%s)) then 0 else min(st_srid(%s)) end as
> srid\n"
> >         >     >     > -        + "from %s.%s";
> >         >     >     > +      // quote identifiers
> >         >     >     > +      sridQuery2 = "select case when
> min(st_srid(%s)) <> max(st_srid(%s)) then 0 else min(st_srid(%s)) end as
> srid\n"
> >         >     >     > +        + "from `%s`.`%s`";
> >         >     >     >      }
> >         >     >     >
> >         >     >     >    }
> >         >     >     > @@ -104,7 +102,9 @@
> >         >     >     >
> >         >     >     >    @Override
> >         >     >     >    public String getGeoColumnsQuery(String
> datasetName) {
> >         >     >     > -    return String.format(this.geoColumnsQuery,
> getTableName(datasetName));
> >         >     >     > +    // escape single quotes in identifier
> >         >     >     > +    return String.format(this.geoColumnsQuery,
> >         >     >     > +
> SpatialDatabasesSQLBuilder.escapeSingleQuote(getTableName(datasetName)));
> >         >     >     >    }
> >         >     >     >
> >         >     >     >    public String getGeoColumnsQuery2(String
> datasetName) {
> >         >     >     > @@ -113,11 +113,16 @@
> >         >     >     >
> >         >     >     >    @Override
> >         >     >     >    public String getSridQuery(String schemaName,
> String tableName, String colName) {
> >         >     >     > -    return String.format(this.sridQuery,
> tableName, colName);
> >         >     >     > +    // escape single quotes in identifier
> >         >     >     > +    // TODO: geom ?
> >         >     >     > +    return String.format(this.sridQuery,
> >         >     >     > +
> SpatialDatabasesSQLBuilder.escapeSingleQuote(tableName), colName);
> >         >     >     >    }
> >         >     >     >
> >         >     >     >    public String getSridQuery2(String schemaName,
> String tableName, String colName) {
> >         >     >     > -    return String.format(this.sridQuery2,
> colName, colName, colName, schemaName, tableName);
> >         >     >     > +    return String.format(this.sridQuery2,
> colName, colName, colName,
> >         >     >     > +
> SpatialDatabasesSQLBuilder.escapeSingleQuote(schemaName),
> >         >     >     > +
> SpatialDatabasesSQLBuilder.escapeSingleQuote(tableName));
> >         >     >     >    }
> >         >     >     >
> >         >     >     >    @Override
> >         >     >     >
> >         >     >     > Modified:
> core/trunk/src/com/vividsolutions/jump/datastore/oracle/OracleDSMetadata.java
> >         >     >     >
> ===================================================================
> >         >     >     > ---
> core/trunk/src/com/vividsolutions/jump/datastore/oracle/OracleDSMetadata.java
>    2016-01-13 10:49:14 UTC (rev 4783)
> >         >     >     > +++
> core/trunk/src/com/vividsolutions/jump/datastore/oracle/OracleDSMetadata.java
>    2016-01-13 13:02:12 UTC (rev 4784)
> >         >     >     > @@ -45,9 +45,9 @@
> >         >     >     >              "                       (select
> sdo_lb from tmp where sdo_dimname = 'Y'))\n" +
> >         >     >     >              "  )) as geom \n" +
> >         >     >     >              "from dual";
> >         >     >     > +        // double quotes identifiers
> >         >     >     > +        spatialExtentQuery2 = "select
> sdo_util.to_wktgeometry(sdo_aggr_mbr(%s)) as geom from \"%s\".\"%s\"";
> >         >     >     >
> >         >     >     > -        spatialExtentQuery2 = "select
> sdo_util.to_wktgeometry(sdo_aggr_mbr(%s)) as geom from %s.%s";
> >         >     >     > -
> >         >     >     >          geoColumnsQuery = "select t.column_name,
> t.srid, 'SDO_GEOMETRY' as type from ALL_SDO_GEOM_METADATA t "
> >         >     >     >              + "where t.owner = '%s' and
> t.table_name = '%s'";
> >         >     >     >          sridQuery = "select t.srid from
> ALL_SDO_GEOM_METADATA t "
> >         >     >     > @@ -56,7 +56,10 @@
> >         >     >     >
> >         >     >     >      @Override
> >         >     >     >      public String getSpatialExtentQuery1(String
> schema, String table, String attributeName) {
> >         >     >     > -        return
> String.format(this.spatialExtentQuery1, schema, table, attributeName);
> >         >     >     > +        // escape single quote for table name:
> >         >     >     > +        // TODO: do it for schema/user name ?
> >         >     >     > +        return
> String.format(this.spatialExtentQuery1, schema,
> >         >     >     > +
> SpatialDatabasesSQLBuilder.escapeSingleQuote(table), attributeName);
> >         >     >     >      }
> >         >     >     >
> >         >     >     >      @Override
> >         >     >     > @@ -66,13 +69,18 @@
> >         >     >     >
> >         >     >     >      @Override
> >         >     >     >      public String getGeoColumnsQuery(String
> datasetName) {
> >         >     >     > -        return
> String.format(this.geoColumnsQuery, getSchemaName(datasetName),
> getTableName(datasetName));
> >         >     >     > +        // escape single quote for table name:
> >         >     >     > +        // TODO: do it for schema/user name ?
> >         >     >     > +        return
> String.format(this.geoColumnsQuery, getSchemaName(datasetName),
> >         >     >     > +
> SpatialDatabasesSQLBuilder.escapeSingleQuote(getTableName(datasetName)));
> >         >     >     >      }
> >         >     >     >
> >         >     >     >      @Override
> >         >     >     >      public String getSridQuery(String schemaName,
> String tableName, String colName) {
> >         >     >     > -        // TODO
> >         >     >     > -        return String.format(this.sridQuery,
> schemaName, tableName, colName);
> >         >     >     > +        // escape single quote for table name:
> >         >     >     > +        // TODO: do it for schema/user name ?
> >         >     >     > +        return String.format(this.sridQuery,
> schemaName,
> >         >     >     > +
> SpatialDatabasesSQLBuilder.escapeSingleQuote(tableName), colName);
> >         >     >     >      }
> >         >     >     >
> >         >     >     >      @Override
> >         >     >     >
> >         >     >     > Modified:
> core/trunk/src/com/vividsolutions/jump/datastore/postgis/PostgisDSMetadata.java
> >         >     >     >
> ===================================================================
> >         >     >     > ---
> core/trunk/src/com/vividsolutions/jump/datastore/postgis/PostgisDSMetadata.java
>  2016-01-13 10:49:14 UTC (rev 4783)
> >         >     >     > +++
> core/trunk/src/com/vividsolutions/jump/datastore/postgis/PostgisDSMetadata.java
>  2016-01-13 13:02:12 UTC (rev 4784)
> >         >     >     > @@ -14,14 +14,19 @@
> >         >     >     >          defaultSchemaName = "public";
> >         >     >     >          spatialDbName = "PostGIS";
> >         >     >     >          spatialExtentQuery1 = "SELECT
> ST_AsBinary(ST_Estimated_Extent( '%s', '%s', '%s' ))";
> >         >     >     > -        spatialExtentQuery2 = "SELECT
> ST_AsBinary(ST_Envelope(ST_Extent(\"%s\"))) FROM %s.%s";
> >         >     >     > +        // Nicolas Ribot: add double quotes for
> identifiers
> >         >     >     > +        spatialExtentQuery2 = "SELECT
> ST_AsBinary(ST_Envelope(ST_Extent(\"%s\"))) FROM \"%s\".\"%s\"";
> >         >     >     >          geoColumnsQuery = "SELECT
> f_geometry_column, srid, type FROM geometry_columns where
> f_table_schema='%s' and f_table_name = '%s'";
> >         >     >     >          sridQuery = "SELECT srid FROM
> geometry_columns where f_table_schema = '%s' and f_table_name = '%s' and
> f_geometry_column = '%s'";
> >         >     >     >      }
> >         >     >     >
> >         >     >     >      @Override
> >         >     >     >      public String getSpatialExtentQuery1(String
> schema, String table, String attributeName) {
> >         >     >     > -        return
> String.format(this.spatialExtentQuery1, schema, table, attributeName);
> >         >     >     > +        //must escape single quote in idenfifiers
> before formatting query
> >         >     >     > +        return
> String.format(this.spatialExtentQuery1,
> >         >     >     > +
> SpatialDatabasesSQLBuilder.escapeSingleQuote(schema),
> >         >     >     > +
> SpatialDatabasesSQLBuilder.escapeSingleQuote(table),
> >         >     >     > +
> SpatialDatabasesSQLBuilder.escapeSingleQuote(attributeName));
> >         >     >     >      }
> >         >     >     >
> >         >     >     >      @Override
> >         >     >     > @@ -31,13 +36,19 @@
> >         >     >     >
> >         >     >     >      @Override
> >         >     >     >      public String getGeoColumnsQuery(String
> datasetName) {
> >         >     >     > -        return
> String.format(this.geoColumnsQuery, getSchemaName(datasetName),
> getTableName(datasetName));
> >         >     >     > +        //must escape single quote in idenfifiers
> before formatting query
> >         >     >     > +        return String.format(this.geoColumnsQuery,
> >         >     >     > +
> SpatialDatabasesSQLBuilder.escapeSingleQuote(getSchemaName(datasetName)),
> >         >     >     > +
> SpatialDatabasesSQLBuilder.escapeSingleQuote(getTableName(datasetName)));
> >         >     >     >      }
> >         >     >     >
> >         >     >     >      @Override
> >         >     >     >      public String getSridQuery(String schemaName,
> String tableName, String colName) {
> >         >     >     > -        // TODO
> >         >     >     > -        return String.format(this.sridQuery,
> schemaName, tableName, colName);
> >         >     >     > +        //must escape single quote in idenfifiers
> before formatting query
> >         >     >     > +        return String.format(this.sridQuery,
> >         >     >     > +
> SpatialDatabasesSQLBuilder.escapeSingleQuote(schemaName),
> >         >     >     > +
> SpatialDatabasesSQLBuilder.escapeSingleQuote(tableName),
> >         >     >     > +
> SpatialDatabasesSQLBuilder.escapeSingleQuote(colName));
> >         >     >     >      }
> >         >     >     >
> >         >     >     >      @Override
> >         >     >     >
> >         >     >     > Modified:
> core/trunk/src/com/vividsolutions/jump/datastore/spatialdatabases/SpatialDatabasesDSMetadata.java
> >         >     >     >
> ===================================================================
> >         >     >     > ---
> core/trunk/src/com/vividsolutions/jump/datastore/spatialdatabases/SpatialDatabasesDSMetadata.java
> 2016-01-13 10:49:14 UTC (rev 4783)
> >         >     >     > +++
> core/trunk/src/com/vividsolutions/jump/datastore/spatialdatabases/SpatialDatabasesDSMetadata.java
> 2016-01-13 13:02:12 UTC (rev 4784)
> >         >     >     > @@ -93,9 +93,6 @@
> >         >     >     >    }
> >         >     >     >
> >         >     >     >    public
> SpatialDatabasesDSMetadata(DataStoreConnection conn) {
> >         >     >     > -
> JUMPWorkbench.getInstance().getFrame().log("creating a
> SpatialDatabasesDSMetadata (class:" + this.getClass()
> >         >     >     > -        + " ) (con: " + conn.toString() + ") id"
> >         >     >     > -        + this.hashCode(), this.getClass());
> >         >     >     >      this.conn = conn;
> >         >     >     >      // TODO: use bind parameters to avoid SQL
> injection
> >         >     >     >      this.datasetNameQuery = "";
> >         >     >     > @@ -289,6 +286,7 @@
> >         >     >     >          new ResultSetBlock() {
> >         >     >     >            public void yield(ResultSet resultSet)
> throws SQLException {
> >         >     >     >              while (resultSet.next()) {
> >         >     >     > +              // TODO: escape single quotes in
> geo column name ?
> >         >     >     >                geometryAttributes.add(new
> GeometryColumn(
> >         >     >     >                        resultSet.getString(1),
> >         >     >     >                        resultSet.getInt(2),
> >         >     >     > @@ -353,6 +351,7 @@
> >         >     >     >        DatabaseMetaData dbMd =
> this.conn.getJdbcConnection().getMetaData();
> >         >     >     >        rs = dbMd.getColumns(null,
> getSchemaName(datasetName), getTableName(datasetName), null);
> >         >     >     >        while (rs.next()) {
> >         >     >     > +        // TODO: escape quotes in column names ?
> >         >     >     >          cols.add(rs.getString(4));
> >         >     >     >        }
> >         >     >     >      } catch (SQLException sqle) {
> >         >     >     >
> >         >     >     > Modified:
> core/trunk/src/com/vividsolutions/jump/datastore/spatialdatabases/SpatialDatabasesSQLBuilder.java
> >         >     >     >
> ===================================================================
> >         >     >     > ---
> core/trunk/src/com/vividsolutions/jump/datastore/spatialdatabases/SpatialDatabasesSQLBuilder.java
> 2016-01-13 10:49:14 UTC (rev 4783)
> >         >     >     > +++
> core/trunk/src/com/vividsolutions/jump/datastore/spatialdatabases/SpatialDatabasesSQLBuilder.java
> 2016-01-13 13:02:12 UTC (rev 4784)
> >         >     >     > @@ -69,4 +69,14 @@
> >         >     >     >      else
> >         >     >     >        return srid.getString();
> >         >     >     >    }
> >         >     >     > +
> >         >     >     > +  /**
> >         >     >     > +   * Utility method to escape single quotes in
> given identifier.
> >         >     >     > +   * Replace all single quotes ("'") by double
> single quotes ("''")
> >         >     >     > +   * @param identifier
> >         >     >     > +   * @return the identifier with single quotes
> escaped, or identifier if no string found
> >         >     >     > +   */
> >         >     >     > +  public static String escapeSingleQuote(String
> identifier) {
> >         >     >     > +    return identifier == null ? null :
> identifier.replaceAll("'", "''");
> >         >     >     > +  }
> >         >     >     >  }
> >         >     >     >
> >         >     >     > Modified:
> core/trunk/src/com/vividsolutions/jump/datastore/spatialite/SpatialiteDSMetadata.java
> >         >     >     >
> ===================================================================
> >         >     >     > ---
> core/trunk/src/com/vividsolutions/jump/datastore/spatialite/SpatialiteDSMetadata.java
>    2016-01-13 10:49:14 UTC (rev 4783)
> >         >     >     > +++
> core/trunk/src/com/vividsolutions/jump/datastore/spatialite/SpatialiteDSMetadata.java
>    2016-01-13 13:02:12 UTC (rev 4784)
> >         >     >     > @@ -84,7 +84,7 @@
> >         >     >     >
> >         >     >     >      defaultSchemaName = "";
> >         >     >     >      spatialDbName = isSpatialiteLoaded() ?
> "Spatialite" : "SQLite";
> >         >     >     > -    spatialExtentQuery1 = "SELECT %s from %s";
> >         >     >     > +    spatialExtentQuery1 = "SELECT %s from \"%s\"";
> >         >     >     >      // no second query for spatialite
> >         >     >     >      spatialExtentQuery2 = null;
> >         >     >     >      if (this.geometryColumnsLayout ==
> GeometryColumnsLayout.OGC_GEOPACKAGE_LAYOUT) {
> >         >     >     > @@ -129,11 +129,12 @@
> >         >     >     >      // TODO: switch case
> >         >     >     >      if (this.isSpatialiteLoaded()) {
> >         >     >     >        if (gcType == GeometricColumnType.WKB) {
> >         >     >     > -        ret = String.format("select
> st_asBinary(extent(st_geomFromWkb(%s))) from %s", attributeName, table);
> >         >     >     > +        // quotes identifier.
> >         >     >     > +        ret = String.format("select
> st_asBinary(extent(st_geomFromWkb(%s))) from \"%s\"", attributeName, table);
> >         >     >     >        } else if (gcType ==
> GeometricColumnType.WKT) {
> >         >     >     > -        ret = String.format("select
> st_asBinary(extent(st_geomFromText(%s))) from %s", attributeName, table);
> >         >     >     > +        ret = String.format("select
> st_asBinary(extent(st_geomFromText(%s))) from \"%s\"", attributeName,
> table);
> >         >     >     >        } else if (gcType ==
> GeometricColumnType.SPATIALITE) {
> >         >     >     > -        ret = String.format("select
> st_asBinary(extent(CastAutomagic(%s))) from %s", attributeName, table);
> >         >     >     > +        ret = String.format("select
> st_asBinary(extent(CastAutomagic(%s))) from \"%s\"", attributeName, table);
> >         >     >     >        } else {
> >         >     >     >          // unknown geom type
> >         >     >     >          // TODO: log
> >         >     >     >
> >         >     >
> >         >     >
>  
> ------------------------------------------------------------------------------
> >         >     >     Site24x7 APM Insight: Get Deep Visibility into
> Application Performance
> >         >     >     APM + Mobile APM + RUM: Monitor 3 App instances at
> just $35/Month
> >         >     >     Monitor end-to-end web transactions and take
> corrective actions now
> >         >     >     Troubleshoot faster and improve end-user experience.
> Signup Now!
> >         >     >
> http://pubads.g.doubleclick.net/gampad/clk?id=267308311&iu=/4140
> >         >     >     _______________________________________________
> >         >     >     Jump-pilot-devel mailing list
> >         >     >     Jump-pilot-devel@lists.sourceforge.net <mailto:
> Jump-pilot-devel@lists.sourceforge.net> <mailto:
> Jump-pilot-devel@lists.sourceforge.net <mailto:
> Jump-pilot-devel@lists.sourceforge.net>> <mailto:
> Jump-pilot-devel@lists.sourceforge.net <mailto:
> Jump-pilot-devel@lists.sourceforge.net> <mailto:
> Jump-pilot-devel@lists.sourceforge.net <mailto:
> Jump-pilot-devel@lists.sourceforge.net>>>
> >         >     >
> https://lists.sourceforge.net/lists/listinfo/jump-pilot-devel
> >         >     >
> >         >     >
> >         >     >
> >         >     >
> >         >     >
> ------------------------------------------------------------------------------
> >         >     > Site24x7 APM Insight: Get Deep Visibility into
> Application Performance
> >         >     > APM + Mobile APM + RUM: Monitor 3 App instances at just
> $35/Month
> >         >     > Monitor end-to-end web transactions and take corrective
> actions now
> >         >     > Troubleshoot faster and improve end-user experience.
> Signup Now!
> >         >     >
> http://pubads.g.doubleclick.net/gampad/clk?id=267308311&iu=/4140
> >         >     >
> >         >     >
> >         >     >
> >         >     > _______________________________________________
> >         >     > Jump-pilot-devel mailing list
> >         >     > Jump-pilot-devel@lists.sourceforge.net <mailto:
> Jump-pilot-devel@lists.sourceforge.net> <mailto:
> Jump-pilot-devel@lists.sourceforge.net <mailto:
> Jump-pilot-devel@lists.sourceforge.net>>
> >         >     >
> https://lists.sourceforge.net/lists/listinfo/jump-pilot-devel
> >         >     >
> >         >
> >         >
>  
> ------------------------------------------------------------------------------
> >         >     Site24x7 APM Insight: Get Deep Visibility into Application
> Performance
> >         >     APM + Mobile APM + RUM: Monitor 3 App instances at just
> $35/Month
> >         >     Monitor end-to-end web transactions and take corrective
> actions now
> >         >     Troubleshoot faster and improve end-user experience.
> Signup Now!
> >         >
> http://pubads.g.doubleclick.net/gampad/clk?id=267308311&iu=/4140
> >         >     _______________________________________________
> >         >     Jump-pilot-devel mailing list
> >         >     Jump-pilot-devel@lists.sourceforge.net <mailto:
> Jump-pilot-devel@lists.sourceforge.net> <mailto:
> Jump-pilot-devel@lists.sourceforge.net <mailto:
> Jump-pilot-devel@lists.sourceforge.net>>
> >         >
> https://lists.sourceforge.net/lists/listinfo/jump-pilot-devel
> >         >
> >         >
> >         >
> >         >
> >         >
> ------------------------------------------------------------------------------
> >         > Site24x7 APM Insight: Get Deep Visibility into Application
> Performance
> >         > APM + Mobile APM + RUM: Monitor 3 App instances at just
> $35/Month
> >         > Monitor end-to-end web transactions and take corrective
> actions now
> >         > Troubleshoot faster and improve end-user experience. Signup
> Now!
> >         >
> http://pubads.g.doubleclick.net/gampad/clk?id=267308311&iu=/4140
> >         >
> >         >
> >         >
> >         > _______________________________________________
> >         > Jump-pilot-devel mailing list
> >         > Jump-pilot-devel@lists.sourceforge.net <mailto:
> Jump-pilot-devel@lists.sourceforge.net>
> >         > https://lists.sourceforge.net/lists/listinfo/jump-pilot-devel
> >         >
> >
> >
>  
> ------------------------------------------------------------------------------
> >         Site24x7 APM Insight: Get Deep Visibility into Application
> Performance
> >         APM + Mobile APM + RUM: Monitor 3 App instances at just $35/Month
> >         Monitor end-to-end web transactions and take corrective actions
> now
> >         Troubleshoot faster and improve end-user experience. Signup Now!
> >         http://pubads.g.doubleclick.net/gampad/clk?id=267308311&iu=/4140
> >         _______________________________________________
> >         Jump-pilot-devel mailing list
> >         Jump-pilot-devel@lists.sourceforge.net <mailto:
> Jump-pilot-devel@lists.sourceforge.net>
> >         https://lists.sourceforge.net/lists/listinfo/jump-pilot-devel
> >
> >
> >
> >
> >
> >
> ------------------------------------------------------------------------------
> > Site24x7 APM Insight: Get Deep Visibility into Application Performance
> > APM + Mobile APM + RUM: Monitor 3 App instances at just $35/Month
> > Monitor end-to-end web transactions and take corrective actions now
> > Troubleshoot faster and improve end-user experience. Signup Now!
> > http://pubads.g.doubleclick.net/gampad/clk?id=267308311&iu=/4140
> >
> >
> >
> > _______________________________________________
> > Jump-pilot-devel mailing list
> > Jump-pilot-devel@lists.sourceforge.net
> > https://lists.sourceforge.net/lists/listinfo/jump-pilot-devel
> >
>
>
> ------------------------------------------------------------------------------
> Site24x7 APM Insight: Get Deep Visibility into Application Performance
> APM + Mobile APM + RUM: Monitor 3 App instances at just $35/Month
> Monitor end-to-end web transactions and take corrective actions now
> Troubleshoot faster and improve end-user experience. Signup Now!
> http://pubads.g.doubleclick.net/gampad/clk?id=267308311&iu=/4140
> _______________________________________________
> Jump-pilot-devel mailing list
> Jump-pilot-devel@lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/jump-pilot-devel
>
------------------------------------------------------------------------------
Site24x7 APM Insight: Get Deep Visibility into Application Performance
APM + Mobile APM + RUM: Monitor 3 App instances at just $35/Month
Monitor end-to-end web transactions and take corrective actions now
Troubleshoot faster and improve end-user experience. Signup Now!
http://pubads.g.doubleclick.net/gampad/clk?id=267308311&iu=/4140
_______________________________________________
Jump-pilot-devel mailing list
Jump-pilot-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/jump-pilot-devel

Reply via email to