package com.txtr.hibernatedelta.generator;
import java.sql.SQLException;
import liquibase.database.Database;
import liquibase.exception.DatabaseException;
import liquibase.snapshot.JdbcDatabaseSnapshot.CachedRow;
import liquibase.snapshot.jvm.ColumnSnapshotGenerator;
import liquibase.structure.DatabaseObject;
import liquibase.structure.core.Column;
import liquibase.structure.core.DataType.ColumnSizeUnit;
import liquibase.structure.core.Relation;
public class LiquibaseSnapshotGenerator extends ColumnSnapshotGenerator {
@Override
protected Column readColumn(CachedRow columnMetadataResultSet, Relation table, Database database) throws SQLException, DatabaseException {
Column column = super.readColumn(columnMetadataResultSet, table, database);
String columnTypeName = columnMetadataResultSet.getString("TYPE_NAME");
if ("VARCHAR2".equals(columnTypeName)) {
if (columnMetadataResultSet.getInt("COLUMN_SIZE") == LiquibaseModelFactory.MAX_CHAR_SIZE) {
column.getType().setColumnSizeUnit(ColumnSizeUnit.CHAR);
}
}
return column;
}
@Override
public int getPriority(Class<? extends DatabaseObject> objectType, Database database) {
return 10;
}
}