Search in sources :

Example 1 with DB

use of org.sqlite.core.DB in project hale by halestudio.

the class SpatiaLiteConnectionConfigurer method configureConnection.

/**
 * Enable SpatiaLite extension for the provided connection.
 */
@Override
public void configureConnection(SQLiteConnection connection) {
    DB sqliteDB = connection.db();
    Statement stmt = null;
    try {
        sqliteDB.enable_load_extension(true);
        stmt = connection.createStatement();
        // set timeout to 30 sec.
        stmt.setQueryTimeout(30);
        // loading SpatiaLite
        stmt.execute("SELECT load_extension('mod_spatialite')");
    } catch (SQLException e) {
        // just a warning - maybe only SQLite is needed
        log.warn("Failed to load SpatiaLite extension (mod_spatialite). Please check the help on how to make it available.", e);
    } finally {
        if (stmt != null) {
            try {
                stmt.close();
            } catch (SQLException e) {
            // ignore
            }
        }
    }
}
Also used : SQLException(java.sql.SQLException) Statement(java.sql.Statement) DB(org.sqlite.core.DB)

Example 2 with DB

use of org.sqlite.core.DB in project com.revolsys.open by revolsys.

the class GeoPackageRecordStore method initializeDo.

@Override
@PostConstruct
public void initializeDo() {
    super.initializeDo();
    setUsesSchema(false);
    final String filter = "WHERE NOT (NAME LIKE 'GPKG%' OR NAME LIKE 'RTREE%' OR NAME LIKE 'SQLITE%')";
    setSchemaTablePermissionsSql("select  '/' \"SCHEMA_NAME\", name \"TABLE_NAME\", 'ALL' \"PRIVILEGE\", '' \"REMARKS\"  from sqlite_master " + filter + " union all " + "select  '/' \"SCHEMA_NAME\", name \"TABLE_NAME\", 'ALL' \"PRIVILEGE\", '' \"REMARKS\"  from sqlite_temp_master " + filter);
    addFieldAdder("BOOLEAN", DataTypes.BOOLEAN);
    addFieldAdder("TINYINT", DataTypes.BYTE);
    addFieldAdder("SMALLINT", DataTypes.SHORT);
    addFieldAdder("MEDIUMINT", DataTypes.INT);
    addFieldAdder("INT", DataTypes.LONG);
    addFieldAdder("BIG_INTEGER", DataTypes.LONG);
    addFieldAdder("FLOAT", DataTypes.FLOAT);
    addFieldAdder("DOUBLE", DataTypes.DOUBLE);
    addFieldAdder("REAL", DataTypes.DOUBLE);
    addFieldAdder("TEXT", DataTypes.STRING);
    addFieldAdder("BLOB", DataTypes.BLOB);
    addFieldAdder("DATE", DataTypes.SQL_DATE);
    addFieldAdder("DATETIME", DataTypes.DATE_TIME);
    final GeoPackageGeometryFieldAdder geometryAdder = new GeoPackageGeometryFieldAdder();
    addFieldAdder("GEOMETRY", geometryAdder);
    addFieldAdder("POINT", geometryAdder);
    addFieldAdder("LINESTRING", geometryAdder);
    addFieldAdder("POLYGON", geometryAdder);
    addFieldAdder("GEOMETRYCOLLECTION", geometryAdder);
    addFieldAdder("MULTIPOINT", geometryAdder);
    addFieldAdder("MULTILINESTRING", geometryAdder);
    addFieldAdder("MULTIPOLYGON", geometryAdder);
    super.initialize();
    try (JdbcConnection connection = getJdbcConnection(true)) {
        final CoreConnection sqliteConnection = (CoreConnection) ((DelegatingConnection<?>) connection.getConnection()).getInnermostDelegate();
        final DB db = sqliteConnection.db();
        db.enable_load_extension(true);
        try {
            db._exec("select load_extension('libgpkg')");
        } finally {
            db.enable_load_extension(false);
        }
    } catch (final SQLException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
}
Also used : CoreConnection(org.sqlite.core.CoreConnection) SQLException(java.sql.SQLException) JdbcConnection(com.revolsys.jdbc.JdbcConnection) DB(org.sqlite.core.DB) PostConstruct(javax.annotation.PostConstruct)

Aggregations

SQLException (java.sql.SQLException)2 DB (org.sqlite.core.DB)2 JdbcConnection (com.revolsys.jdbc.JdbcConnection)1 Statement (java.sql.Statement)1 PostConstruct (javax.annotation.PostConstruct)1 CoreConnection (org.sqlite.core.CoreConnection)1