private void execute(final DbUnitWork work) { this.connUtil.doWork(new DbWork() { @Override public void execute(Connection conn) { doExecute(conn, work); } }); }
@Override public void dropSchema(SchemaInfo schemaInfo, String... users) { throw new JuDbException("Schema Dropping not yet implemented for " + this.connUtil.getDbType()); } }
@Override public String convertTableNameCasing(String tableName) { // MySQL is case sensitive, so look for the exact casing in the table list for (String actualTableName : this.connUtil.getMetaDataInfo().getTableNames()) { if (actualTableName.equalsIgnoreCase(tableName)) return actualTableName; } // If we were unlucky, just return the same tableName return tableName; }
if (this.connUtil.getDbType() == DbType.MYSQL) { schemaInfos = this.connUtil.extractDatabaseMetaData(new DatabaseMetaDataCallback<SchemaInfos>() { @Override public SchemaInfos processMetaData(DatabaseMetaData dbmd) throws SQLException { schemaInfos = this.connUtil.extractDatabaseMetaData(new DatabaseMetaDataCallback<SchemaInfos>() { @Override public SchemaInfos processMetaData(DatabaseMetaData dbmd) throws SQLException {
final DbType dbType = this.connUtil.getDbType(); final String metaDataUserName = this.connUtil.getMetaDataInfo().getUserName(); this.connUtil.doWork(new DbWork() { @Override public void execute(Connection conn) {
if (adminConnUtil.getMetaDataInfo().getSchemaInfos().getSchemaNames().contains(schemaName)) { boolean dropExistingSchema = JuUtils.getJuPropertyChain().get( String.format("ju-dbutil-test.%s.dropExistingSchema", adminProfile), Boolean.class, "false"); List<SchemaInfo> schemaInfos = adminConnUtil.getMetaDataInfo().getSchemaInfos() .getSchemaInfos(schemaName, null); Assert.assertEquals("Catalogs not supported yet", 1, schemaInfos.size()); if (adminConnUtil.getDbType() == DbType.MYSQL) { adminConnUtil.getDbHandler().dropSchema(schemaInfos.get(0), userName); } else { adminConnUtil.getDbHandler().dropSchema(schemaInfos.get(0)); String.format("ju-dbutil-test.%s.jtaRecoveryGrants", profile), Boolean.class, "false"); adminConnUtil.getDbHandler().createSchema() .name(schemaName)
switch (this.connUtil.getDbType()) { case DERBY: dataTypeFactory = new DefaultDataTypeFactory(); this.schemaName = this.connUtil.getMetaDataInfo().getUserName(); throw new JuDbException("Unsupported DB: " + this.connUtil.getDbType());
DbType dbType = this.connUtil.getDbType(); if (this.connUtil.getDbType() != DbType.ORACLE && !emptyTables) { du.buildImport().from("/ju-testing/data/default-fullData-dataTypes.xml").executeUpdate(); this.connUtil.getDbHandler().resetIdentityGenerationOrSequences(1);
convertedColumn = this.emUtil.asConnUtil().getDbHandler().wrapInLowerString(mappedName); value = value.toString().toLowerCase();
@Override public List<String> getTableNames() { List<String> tableNames = this.connUtil.extractDatabaseMetaData(new DatabaseMetaDataCallback<List<String>>() { @Override public List<String> processMetaData(DatabaseMetaData dbmd) throws SQLException {
@Override public List<String> getPrimaryKeyColumns(String tableName) { final String actualTableName = this.connUtil.getDbType().getDbSpecificHandler(this.connUtil).convertTableNameCasing(tableName); List<String> columnNames = this.connUtil.extractDatabaseMetaData(new DatabaseMetaDataCallback<List<String>>() { @Override public List<String> processMetaData(DatabaseMetaData dbmd) throws SQLException { ResultSet rs = dbmd.getPrimaryKeys(null, null, actualTableName); List<String> columnNames = new ArrayList<>(); while (rs.next()) { columnNames.add(rs.getString("COLUMN_NAME")); } rs.close(); return columnNames; } }); return columnNames; }
@Override public void resetIdentityGenerationOrSequences(final int val) { this.connUtil.doWork(new DbWork() { @Override public void execute(Connection conn) { JdbcTemplate jt = JuConnUtils.asJdbcTemplate(conn); for (String sequence : getSequenceNames()) { // We'll just drop and recreate the sequence. jt.execute("drop sequence " + sequence); jt.execute(String.format("create sequence %s start with %d", sequence, val)); } } }); }
/** * Assumes that the DB represented by JuConnUtil is none of the * DbTypes specified. * @param connUtil JuConnUtil * @param types Types we assume the DB is not */ public static void dbIsNot(JuConnUtil connUtil, DbType... types) { DbType actualType = connUtil.getDbType(); for (DbType type : types) { Assume.assumeFalse("Assumed DB was not " + type, type == actualType); } }
private String[] getPrimaryKeyColumns(String tableName) { if (!dbDataUtil.primaryKeyColumns.containsKey(tableName)) { List<String> primaryKeyColumnsList = this.dbDataUtil.connUtil.getMetaDataInfo().getPrimaryKeyColumns(tableName); dbDataUtil.primaryKeyColumns.put(tableName, primaryKeyColumnsList.toArray(new String[0])); } return dbDataUtil.primaryKeyColumns.get(tableName); }
/** * Clears the DB Schema. * <p> * Uses Flyway functionality. */ public void clearSchema() { this.connUtil.doWork(new DsWork() { @Override public void execute(DataSource ds) { Flyway flyway = new Flyway(); flyway.setDataSource(ds); flyway.clean(); // FIXME: Try Liquibase.dropAll() } }); }
@Override public List<String> getSequenceNames() { throw new JuDbException("Sequences not supported by " + this.connUtil.getDbType()); }
/** * Runs Flyway migration scripts. * @param locations Locations containing scripts in Flyway structure (e.g. db/migration). */ public void runFlywayMigration(final String... locations) { this.connUtil.doWork(new DsWork() { @Override public void execute(DataSource ds) { Flyway flyway = new Flyway(); flyway.setDataSource(ds); flyway.setLocations(locations); flyway.migrate(); } }); }
@Override public void createSchema(DbSchemaBuilder builder) { throw new JuDbException("Schema Creation not yet implemented for " + this.connUtil.getDbType()); }
@Override public void dropSchema(final SchemaInfo schemaInfo, final String... users) { this.connUtil.doWork(new DbWork() { @Override public void execute(Connection conn) { JdbcTemplate jt = JuConnUtils.asJdbcTemplate(conn); jt.execute(String.format("DROP SCHEMA `%s`", schemaInfo.getName())); for (String user : users) { int cnt = jt.queryForInt(String.format("select count(*) from mysql.user where user = '%s'", user)); if (cnt > 0) { jt.execute(String.format("DROP USER `%s`", user)); } } } }); } }
@Override public Long getNextValueFromSequence(String sequenceName) { throw new JuDbException("Sequences not supported by " + this.connUtil.getDbType()); }