/** * Hook to initialize the embedded database. Subclasses may call this method * to force initialization. * <p>After calling this method, {@link #getDataSource()} returns the * {@link DataSource} providing connectivity to the database. */ protected void initDatabase() { // Create the embedded database source first if (logger.isInfoEnabled()) { logger.info("Creating embedded database '" + this.databaseName + "'"); } if (this.databaseConfigurer == null) { this.databaseConfigurer = EmbeddedDatabaseConfigurerFactory.getConfigurer(EmbeddedDatabaseType.HSQL); } this.databaseConfigurer.configureConnectionProperties( this.dataSourceFactory.getConnectionProperties(), this.databaseName); this.dataSource = this.dataSourceFactory.getDataSource(); // Now populate the database if (this.databasePopulator != null) { try { DatabasePopulatorUtils.execute(this.databasePopulator, this.dataSource); } catch (RuntimeException ex) { // failed to populate, so leave it as not initialized shutdownDatabase(); throw ex; } } }
private void runScripts(List<Resource> resources, String username, String password) { if (resources.isEmpty()) { return; } ResourceDatabasePopulator populator = new ResourceDatabasePopulator(); populator.setContinueOnError(this.properties.isContinueOnError()); populator.setSeparator(this.properties.getSeparator()); if (this.properties.getSqlScriptEncoding() != null) { populator.setSqlScriptEncoding(this.properties.getSqlScriptEncoding().name()); } for (Resource resource : resources) { populator.addScript(resource); } DataSource dataSource = this.dataSource; if (StringUtils.hasText(username) && StringUtils.hasText(password)) { dataSource = DataSourceBuilder.create(this.properties.getClassLoader()) .driverClassName(this.properties.determineDriverClassName()) .url(this.properties.determineUrl()).username(username) .password(password).build(); } DatabasePopulatorUtils.execute(populator, dataSource); }
private void runScripts(List<Resource> resources, DataSource dataSource) { if (resources.isEmpty()) { return; } ResourceDatabasePopulator populator = new ResourceDatabasePopulator(); populator.setContinueOnError(configuration.isContinueOnError()); populator.setSeparator(configuration.getConfigPropertyValue(SpringDataSourceConfigProperties.SEPARATOR, ";")); String encoding = configuration.getConfigPropertyValue(SpringDataSourceConfigProperties.SQL_SCRIPT_ENCODING, null); if (encoding != null) { populator.setSqlScriptEncoding(encoding); } for (Resource resource : resources) { populator.addScript(resource); } DatabasePopulatorUtils.execute(populator, dataSource); }
protected void createTable() { StringBuilder sb = new StringBuilder(); sb.append("CREATE TABLE if not exists `leopard_domainwhitelist` ("); sb.append("`domain` varchar(50) NOT NULL DEFAULT '',"); sb.append("`username` varchar(50) NOT NULL DEFAULT '',"); sb.append("`posttime` datetime NOT NULL DEFAULT '1970-01-01 00:00:00',"); sb.append("`comment` varchar(255) NOT NULL DEFAULT '',"); sb.append("PRIMARY KEY (`domain`)"); sb.append(");"); String sql = sb.toString(); Resource scripts = new ByteArrayResource(sql.getBytes()); DatabasePopulator populator = new ResourceDatabasePopulator(scripts); try { DatabasePopulatorUtils.execute(populator, jdbcTemplate.getDataSource()); } catch (ScriptStatementFailedException e) { } }
@Override protected void before() { ResourceDatabasePopulator populator = new ResourceDatabasePopulator( new ClassPathResource("sql/cache-data-remove.sql"), new ClassPathResource("sql/cache-data-insert.sql") ); DatabasePopulatorUtils.execute(populator, cacheDataSource); CacheManager.getInstance().clearAll(); controlTagCache.init(); processCache.init(); dataTagCache.init(); equipmentCache.init(); aliveTimerCache.init(); commFaultTagCache.init(); subEquipmentCache.init(); alarmCache.init(); ruleTagCache.init(); commandTagCache.init(); deviceClassCache.init(); deviceCache.init(); }
public DataSource build() { DataSource dataSource; if (url == null || url.contains("hsqldb:mem")) { // Start an in-process, in-memory HSQL server dataSource = new EmbeddedDatabaseBuilder().setType(HSQL).setName("c2mondb").build(); } else if (url.contains("hsql://")) { // Start an externally visible, file-based HSQL server HsqlServer.start("file:///tmp/c2mondb", "c2mondb"); url += ";sql.syntax_ora=true;hsqldb.default_table_type=cached;hsqldb.cache_rows=1000;hsqldb.result_max_memory_rows=2000;hsqldb.cache_size=100"; dataSource = DataSourceBuilder.create().url(url).username(username).password(password).build(); } else { throw new RuntimeException("The given URL was not a valid HSQL JDBC URL!"); } if (!scripts.isEmpty()) { ResourceDatabasePopulator populator = new ResourceDatabasePopulator(scripts.toArray(new Resource[scripts.size()])); populator.setContinueOnError(true); DatabasePopulatorUtils.execute(populator, dataSource); } return dataSource; }
/** * Get a new herd data source based on an in-memory HSQLDB database. This data source is used for loading the configuration table as an environment property * source as well as for the JPA entity manager. It will therefore create/re-create the configuration table which is required for the former. It also * inserts required values for both scenarios. * * @return the test herd data source. */ @Bean public static DataSource herdDataSource() { // Create and return a data source that can connect directly to a JDBC URL. BasicDataSource basicDataSource = new BasicDataSource(); basicDataSource.setDriverClassName(org.h2.Driver.class.getName()); basicDataSource.setUsername(""); basicDataSource.setPassword(""); basicDataSource.setUrl("jdbc:h2:mem:herdTestDb"); // Create and populate the configuration table. // This is needed for all data source method calls since it is used to create the environment property source which happens before // JPA and other non-static beans are initialized. ResourceDatabasePopulator resourceDatabasePopulator = new ResourceDatabasePopulator(); resourceDatabasePopulator.addScript(new ClassPathResource("createConfigurationTableAndData.sql")); DatabasePopulatorUtils.execute(resourceDatabasePopulator, basicDataSource); // This is what the DataSourceInitializer does. return basicDataSource; }
@Bean(initMethod = "init", destroyMethod = "close") public PoolingDataSource batchMetaDataDataSource() { PoolingDataSource ds = new PoolingDataSource(); ds.setClassName(org.hsqldb.jdbc.pool.JDBCXADataSource.class.getName()); ds.setUniqueName("batchdb"); ds.setMaxPoolSize(100); Properties props = new Properties(); props.setProperty("databaseName", "spring-batch-metadata"); // props.setProperty("createDatabase", "create"); ds.setDriverProperties(props); ds.setAllowLocalTransactions(true); final ResourceDatabasePopulator populator = new ResourceDatabasePopulator(); populator.addScript(batchDropSchemaScript); populator.addScript(batchCreateSchemaScript); DatabasePopulatorUtils.execute(populator, ds); return ds; }
@Bean(initMethod = "init", destroyMethod = "close") public PoolingDataSource applicationDataSource() { PoolingDataSource ds = new PoolingDataSource(); ds.setClassName(org.hsqldb.jdbc.pool.JDBCXADataSource.class.getName()); ds.setUniqueName("appdb"); ds.setMaxPoolSize(100); final Properties props = new Properties(); props.setProperty("databaseName", "chapter09-application"); // props.setProperty("createDatabase", "create"); ds.setDriverProperties(props); ds.setAllowLocalTransactions(true); final ResourceDatabasePopulator populator = new ResourceDatabasePopulator(); populator.addScript(dropTablesScript); populator.addScript(createTableScript); DatabasePopulatorUtils.execute(populator, ds); return ds; }
@Override public void destroy() { if (this.databaseCleaner != null) { DatabasePopulatorUtils.execute(this.databaseCleaner, getDataSource()); } shutdownDatabase(); }
/** * Hook to initialize the embedded database. * <p>If the {@code generateUniqueDatabaseName} flag has been set to {@code true}, * the current value of the {@linkplain #setDatabaseName database name} will * be overridden with an auto-generated name. * <p>Subclasses may call this method to force initialization; however, * this method should only be invoked once. * <p>After calling this method, {@link #getDataSource()} returns the * {@link DataSource} providing connectivity to the database. */ protected void initDatabase() { if (this.generateUniqueDatabaseName) { setDatabaseName(UUID.randomUUID().toString()); } // Create the embedded database first if (this.databaseConfigurer == null) { this.databaseConfigurer = EmbeddedDatabaseConfigurerFactory.getConfigurer(EmbeddedDatabaseType.HSQL); } this.databaseConfigurer.configureConnectionProperties( this.dataSourceFactory.getConnectionProperties(), this.databaseName); this.dataSource = this.dataSourceFactory.getDataSource(); if (logger.isInfoEnabled()) { if (this.dataSource instanceof SimpleDriverDataSource) { SimpleDriverDataSource simpleDriverDataSource = (SimpleDriverDataSource) this.dataSource; logger.info(String.format("Starting embedded database: url='%s', username='%s'", simpleDriverDataSource.getUrl(), simpleDriverDataSource.getUsername())); } else { logger.info(String.format("Starting embedded database '%s'", this.databaseName)); } } // Now populate the database if (this.databasePopulator != null) { try { DatabasePopulatorUtils.execute(this.databasePopulator, this.dataSource); } catch (RuntimeException ex) { // failed to populate, so leave it as not initialized shutdownDatabase(); throw ex; } } }
@Bean public DataSource getDataSource() { DriverManagerDataSource dataSource = new DriverManagerDataSource(); dataSource.setDriverClassName(driverClassName); dataSource.setUrl(url + hostName + portNumber + databaseName + extraPram); dataSource.setUsername(userName); dataSource.setPassword(userPwd); DatabasePopulatorUtils.execute(createDatabasePopulator(), dataSource); return dataSource; }
@Override protected void before() { ResourceDatabasePopulator populator = new ResourceDatabasePopulator( new ClassPathResource("sql/config-test-data.sql") ); DatabasePopulatorUtils.execute(populator, configurationDataSource); }
@Override protected void before() { ResourceDatabasePopulator populator = new ResourceDatabasePopulator( new ClassPathResource("sql/cache-data-remove.sql"), new ClassPathResource("sql/cache-data-insert.sql") ); DatabasePopulatorUtils.execute(populator, cacheDataSource); }
private static void create() { final ResourceDatabasePopulator databasePopulator = new ResourceDatabasePopulator(); databasePopulator.addScript(new ClassPathResource("JdbcUsersConnectionRepository.sql", JdbcUsersConnectionRepository.class)); DatabasePopulatorUtils.execute(databasePopulator, dataSource); LOG.info("Table UserConnection successfully created"); }
@Bean public InitializingBean dataPopulator(final DataSource dataSource) { return () -> { final DatabasePopulator populator = new ResourceDatabasePopulator(new ClassPathResource("data.sql")); DatabasePopulatorUtils.execute(populator, dataSource); }; }
private void runScripts(List<Resource> resources) { if (resources.isEmpty()) { return; } ResourceDatabasePopulator populator = new ResourceDatabasePopulator(); populator.setContinueOnError(this.properties.isContinueOnError()); populator.setSeparator(this.properties.getSeparator()); if (this.properties.getSqlScriptEncoding() != null) { populator.setSqlScriptEncoding(this.properties.getSqlScriptEncoding().name()); } for (Resource resource : resources) { populator.addScript(resource); } DatabasePopulatorUtils.execute(populator, this.dataSource); }
@PostConstruct public void init() { ResourceDatabasePopulator databasePopulator = new ResourceDatabasePopulator(); databasePopulator.addScript(new ClassPathResource(env.getProperty("jdbc.initLocation"))); databasePopulator.addScript(new ClassPathResource(env.getProperty("jdbc.dataLocation"))); DatabasePopulatorUtils.execute(databasePopulator, dataSource); }
public void createTableIfNotExist() { JdbcTemplate jdbcTemplate = new JdbcTemplate(dataSource); try { jdbcTemplate.queryForList("select count(*) from UserConnection"); } catch (Exception e) { LOG.debug("Create table UserConnection"); try { ResourceDatabasePopulator rdp = new ResourceDatabasePopulator(); rdp.addScript(new ClassPathResource("/org/springframework/social/connect/jdbc/JdbcUsersConnectionRepository.sql")); DatabasePopulatorUtils.execute(rdp, dataSource); } catch (Exception e1) { LOG.error("Error create table UserConnection", e1); } } }
@After public void clearJobTables() throws SQLException { ResourceDatabasePopulator databasePopulator = new ResourceDatabasePopulator(); databasePopulator.setScripts( new ClassPathResource("org/springframework/batch/core/schema-truncate-hsqldb.sql") ); DatabasePopulatorUtils.execute(databasePopulator, this.dataSource); }