package x;import java.sql.DatabaseMetaData;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
/**
* @author muzhi
* @author <a href="mailto:maming.zhong2526@nvxclouds.com">Muzhi Zhang</a>
* @version 1.0.0
* @date 2023-12-12 00:59
*/
public class HBaseIntrospector extends DatabaseIntrospector {
public HBaseIntrospector(DBMetadataUtils dbMetadataUtils) {
super(dbMetadataUtils);
}
public HBaseIntrospector(DBMetadataUtils dbMetadataUtils, boolean forceBigDecimals, boolean useCamelCase) {
super(dbMetadataUtils, forceBigDecimals, useCamelCase);
}
@Override
public List<String> getCatalogs() throws SQLException {
return super.getCatalogs();
}
@Override
public List<String> getSchemas() throws SQLException {
return super.getSchemas();
}
@Override
protected Map<IntrospectedTable, List<IntrospectedColumn>> getColumns(DatabaseConfig config) throws SQLException {
DatabaseMetaData metaData = dbMetadataUtils.getDatabaseMetaData();
String[] types = {"TABLE"}; //"SYSTEM TABLE"
ResultSet resultSet = metaData.getTables(config.getCatalog(), config.getSchemaPattern(), config.getTableNamePattern(), types);
List<String> tables = new ArrayList<>();
while (resultSet.next()) {
tables.add(resultSet.getString("TABLE_NAME"));
}
return super.getColumns(config);
}
@Override
public List<IntrospectedTable> introspectTables(DatabaseConfig config) throws SQLException {
DatabaseMetaData metaData = dbMetadataUtils.getDatabaseMetaData();
String[] types = {"TABLE"}; //"SYSTEM TABLE"
ResultSet resultSet = metaData.getTables(config.getCatalog(), config.getSchemaPattern(), config.getTableNamePattern(), types);
ResultSet columnsSet = metaData.getColumns(config.getCatalog(), config.getSchemaPattern(), config.getTableNamePattern(), "%");
List<IntrospectedTable> result = new ArrayList<>();
while (resultSet.next()) {
String tableName = resultSet.getString("TABLE_NAME");
IntrospectedTable table = new IntrospectedTable();
table.setName(tableName);
table.setCatalog(config.getCatalog());
result.add(table);
}
while (columnsSet.next()) {
String tableName = resultSet.getString("TABLE_NAME");
IntrospectedTable table = new IntrospectedTable();
table.setName(tableName);
table.setCatalog(config.getCatalog());
result.add(table);
}
return result;
}
}