
artoria.jdbc.TableMetaUtils Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of artoria-extend Show documentation
Show all versions of artoria-extend Show documentation
Artoria is a java technology framework based on the facade pattern.
The newest version!
package artoria.jdbc;
import artoria.util.CloseUtils;
import java.sql.*;
import java.util.*;
import static artoria.common.constant.Numbers.*;
import static artoria.common.constant.Symbols.COMMA;
@Deprecated
public class TableMetaUtils {
public static List getTableMetaList(Connection connection, String catalog) throws SQLException {
List tableMetaList = new ArrayList();
String[] types = new String[]{"TABLE"};
ResultSet tableResultSet = null;
try {
DatabaseMetaData databaseMetaData = connection.getMetaData();
tableResultSet = databaseMetaData.getTables(catalog, (String) null, (String) null, types);
while (tableResultSet.next()) {
Map columnMap = new HashMap(TWENTY);
String tableName = tableResultSet.getString((String) "TABLE_NAME");
String remarks = tableResultSet.getString((String) "REMARKS");
TableMeta tableMeta = new TableMeta();
tableMetaList.add(tableMeta);
tableMeta.setName(tableName);
tableMeta.setRemarks(remarks);
fillColumnMeta(databaseMetaData, catalog, tableMeta, columnMap);
fillClassName(connection, tableName, columnMap);
}
return tableMetaList;
}
finally {
CloseUtils.closeQuietly(tableResultSet);
CloseUtils.closeQuietly(connection);
}
}
private static void fillColumnMeta(DatabaseMetaData dbMetaData, String catalog, TableMeta tableMeta, Map columnMap) throws SQLException {
String tableName = tableMeta.getName();
ResultSet columnResultSet = null;
try {
String primaryKey = findPrimaryKey(catalog, tableName, dbMetaData);
tableMeta.setPrimaryKey(primaryKey);
columnResultSet = dbMetaData.getColumns(catalog, null, tableName, null);
tableMeta.setColumnList(new ArrayList());
List primaryKeyList = Arrays.asList(primaryKey.split(COMMA));
while (columnResultSet.next()) {
ColumnMeta columnMeta = createColumnMeta(primaryKeyList, columnResultSet);
tableMeta.getColumnList().add(columnMeta);
columnMap.put(columnMeta.getName(), columnMeta);
}
}
finally {
CloseUtils.closeQuietly(columnResultSet);
}
}
private static ColumnMeta createColumnMeta(List primaryKeyList, ResultSet columnResultSet) throws SQLException {
ColumnMeta columnMeta = new ColumnMeta();
String columnName = columnResultSet.getString("COLUMN_NAME");
columnMeta.setName(columnName);
columnMeta.setType(columnResultSet.getString("TYPE_NAME"));
columnMeta.setSize(columnResultSet.getInt("COLUMN_SIZE"));
columnMeta.setDecimalDigits(columnResultSet.getInt("DECIMAL_DIGITS"));
columnMeta.setRemarks(columnResultSet.getString("REMARKS"));
columnMeta.setNullable(columnResultSet.getString("IS_NULLABLE"));
columnMeta.setAutoincrement(columnResultSet.getString("IS_AUTOINCREMENT"));
columnMeta.setPrimaryKey(primaryKeyList.contains(columnName));
return columnMeta;
}
private static String findPrimaryKey(String catalog, String tableName, DatabaseMetaData dbMetaData) throws SQLException {
StringBuilder primaryKey = new StringBuilder();
ResultSet primaryKeysResultSet = null;
try {
primaryKeysResultSet = dbMetaData.getPrimaryKeys(catalog, null, tableName);
while (primaryKeysResultSet.next()) {
primaryKey.append(primaryKeysResultSet.getString("COLUMN_NAME")).append(COMMA);
}
if (primaryKey.length() > ZERO) {
primaryKey.deleteCharAt(primaryKey.length() - ONE);
}
return primaryKey.toString();
}
finally {
CloseUtils.closeQuietly(primaryKeysResultSet);
}
}
private static void fillClassName(Connection connection, String tableName, Map columnMap) throws SQLException {
String sql = "select * from " + tableName + " where 1 = 2";
Statement statement = null;
ResultSet resultSet = null;
try {
statement = connection.createStatement();
resultSet = statement.executeQuery(sql);
ResultSetMetaData metaData = resultSet.getMetaData();
for (int i = 1; i <= metaData.getColumnCount(); i++) {
String columnName = metaData.getColumnName(i);
String columnClassName = metaData.getColumnClassName(i);
ColumnMeta columnMeta = columnMap.get(columnName);
if (columnMeta == null) { continue; }
columnMeta.setClassName(columnClassName);
}
}
finally {
CloseUtils.closeQuietly(resultSet);
CloseUtils.closeQuietly(statement);
}
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy