/** * Create a spatial database * @param dbName filename * @param initSpatial If true add spatial features to the database * @param h2Parameters Additional h2 parameters * @return Connection * @throws java.sql.SQLException * @throws java.lang.ClassNotFoundException */ public static Connection createSpatialDataBase(String dbName,boolean initSpatial, String h2Parameters )throws SQLException, ClassNotFoundException { String databasePath = initDBFile(dbName, h2Parameters); org.h2.Driver.load(); // Keep a connection alive to not close the DataBase on each unit test Connection connection = DriverManager.getConnection(databasePath, "sa", "sa"); Statement st = connection.createStatement(); //Create one row table for tests st.execute("CREATE TABLE dummy(id INTEGER);"); st.execute("INSERT INTO dummy values (1)"); // Init spatial ext if(initSpatial) { CreateSpatialExtension.initSpatialExtension(connection); } return connection; } /**
/** * Create a database and return a DataSource * @param dbName * @param initSpatial * @param h2Parameters * @return * @throws SQLException */ public static DataSource createDataSource(String dbName ,boolean initSpatial, String h2Parameters) throws SQLException { // Create H2 memory DataSource org.h2.Driver driver = org.h2.Driver.load(); OsgiDataSourceFactory dataSourceFactory = new OsgiDataSourceFactory(driver); Properties properties = new Properties(); String databasePath = initDBFile(dbName, h2Parameters); properties.setProperty(DataSourceFactory.JDBC_URL, databasePath); properties.setProperty(DataSourceFactory.JDBC_USER, "sa"); properties.setProperty(DataSourceFactory.JDBC_PASSWORD, "sa"); DataSource dataSource = dataSourceFactory.createDataSource(properties); // Init spatial ext if(initSpatial) { Connection connection = dataSource.getConnection(); try { CreateSpatialExtension.initSpatialExtension(connection); } finally { connection.close(); } } return dataSource; } private static String initDBFile( String dbName, String h2_PARAMETERS ) {
CreateSpatialExtension.initSpatialExtension(dds.getConnection()); execute("CREATE TABLE hids (id LONG)"); execute("INSERT INTO hids VALUES (1)");