liquibase.snapshot.jvm.DerbyDatabaseSnapshotGenerator Maven / Gradle / Ivy
package liquibase.snapshot.jvm;
import liquibase.database.Database;
import liquibase.database.core.DerbyDatabase;
import liquibase.exception.DatabaseException;
import java.sql.ResultSet;
import java.sql.SQLException;
public class DerbyDatabaseSnapshotGenerator extends JdbcDatabaseSnapshotGenerator {
public boolean supports(Database database) {
return database instanceof DerbyDatabase;
}
public int getPriority(Database database) {
return PRIORITY_DATABASE;
}
@Override
protected String convertTableNameToDatabaseTableName(String tableName) {
return tableName.toUpperCase();
}
@Override
protected String convertColumnNameToDatabaseTableName(String columnName) {
return columnName.toUpperCase();
}
/**
* Derby seems to have troubles
*/
@Override
public boolean hasIndex(String schemaName, String tableName, String indexName, Database database, String columnNames) throws DatabaseException {
try {
ResultSet rs = getMetaData(database).getIndexInfo(database.convertRequestedSchemaToCatalog(schemaName), database.convertRequestedSchemaToSchema(schemaName), "%", false, true);
while (rs.next()) {
if (rs.getString("INDEX_NAME").equalsIgnoreCase(indexName)) {
return true;
}
if (tableName != null && columnNames != null) {
if (tableName.equalsIgnoreCase(rs.getString("TABLE_NAME")) && columnNames.replaceAll(" ","").equalsIgnoreCase(rs.getString("COLUMN_NAME").replaceAll(" ",""))) {
return true;
}
}
}
return false;
} catch (SQLException e) {
throw new DatabaseException(e);
}
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy