public static MapperKey<JdbcColumnKey> mapperKey(ResultSetMetaData metaData) throws SQLException { JdbcColumnKey[] keys = new JdbcColumnKey[metaData.getColumnCount()]; for(int i = 1; i <= metaData.getColumnCount(); i++) { keys[i - 1] = of(metaData, i); } return new MapperKey<JdbcColumnKey>(keys); }
public static MapperKey<JdbcColumnKey> mapperKey(ResultSetMetaData metaData) throws SQLException { JdbcColumnKey[] keys = new JdbcColumnKey[metaData.getColumnCount()]; for(int i = 1; i <= metaData.getColumnCount(); i++) { keys[i - 1] = of(metaData, i); } return new MapperKey<JdbcColumnKey>(keys); }
private static List<String> getPrimaryKeys(Connection connection, ResultSetMetaData resultSetMetaData, ColumnDefinitionProvider<JdbcColumnKey> columnDefinitionProvider) throws SQLException { List<String> primaryKeys = new ArrayList<String>(); for(int i = 1; i <= resultSetMetaData.getColumnCount(); i++) { JdbcColumnKey key = JdbcColumnKey.of(resultSetMetaData, i); if (columnDefinitionProvider.getColumnDefinition(key).has(KeyProperty.class)) { primaryKeys.add(key.getName()); } } if (!primaryKeys.isEmpty()) { return primaryKeys; } String catalogName = resultSetMetaData.getCatalogName(1); String schemaName = resultSetMetaData.getSchemaName(1); String tableName = resultSetMetaData.getTableName(1); try { ResultSet set = connection.getMetaData().getPrimaryKeys(catalogName, schemaName, tableName); try { while (set.next()) { primaryKeys.add(set.getString("COLUMN_NAME")); } } finally { set.close(); } } catch (SQLSyntaxErrorException e) { // ignore likely mysql view issues } return primaryKeys; }
private static List<String> getPrimaryKeys(Connection connection, ResultSetMetaData resultSetMetaData, ColumnDefinitionProvider<JdbcColumnKey> columnDefinitionProvider) throws SQLException { List<String> primaryKeys = new ArrayList<String>(); for(int i = 1; i <= resultSetMetaData.getColumnCount(); i++) { JdbcColumnKey key = JdbcColumnKey.of(resultSetMetaData, i); if (columnDefinitionProvider.getColumnDefinition(key).has(KeyProperty.class)) { primaryKeys.add(key.getName()); } } if (!primaryKeys.isEmpty()) { return primaryKeys; } String catalogName = resultSetMetaData.getCatalogName(1); String schemaName = resultSetMetaData.getSchemaName(1); String tableName = resultSetMetaData.getTableName(1); try { ResultSet set = connection.getMetaData().getPrimaryKeys(catalogName, schemaName, tableName); try { while (set.next()) { primaryKeys.add(set.getString("COLUMN_NAME")); } } finally { set.close(); } } catch (SQLSyntaxErrorException e) { // ignore likely mysql view issues } return primaryKeys; }
private static CrudMeta getCrudMeta(Connection connection, String table, ColumnDefinitionProvider<JdbcColumnKey> columnDefinitionProvider, ResultSet resultSet, DatabaseMeta databaseMeta) throws SQLException { ResultSetMetaData resultSetMetaData = resultSet.getMetaData(); ColumnMeta[] columnMetas = new ColumnMeta[resultSetMetaData.getColumnCount()]; List<String> primaryKeys = getPrimaryKeys(connection, resultSetMetaData, columnDefinitionProvider); int length = columnMetas.length; for(int i = 0; i < length; i++) { String columnName = resultSetMetaData.getColumnName(i + 1); ColumnDefinition<JdbcColumnKey,?> columnDefinition = columnDefinitionProvider.getColumnDefinition(JdbcColumnKey.of(resultSetMetaData, i + 1)); AutoGeneratedProperty autoGeneratedProperty = columnDefinition.lookFor(AutoGeneratedProperty.class); if (autoGeneratedProperty == null && resultSetMetaData.isAutoIncrement(i + 1) && ! columnDefinition.has(IgnoreAutoGeneratedProperty.class)) { autoGeneratedProperty = AutoGeneratedProperty.DEFAULT; } columnMetas[i] = new ColumnMeta( columnName, resultSetMetaData.getColumnType(i + 1), primaryKeys.contains(columnName), autoGeneratedProperty); } return new CrudMeta(databaseMeta, table, columnMetas); }
private static CrudMeta getCrudMeta(Connection connection, String table, ColumnDefinitionProvider<JdbcColumnKey> columnDefinitionProvider, ResultSet resultSet, DatabaseMeta databaseMeta) throws SQLException { ResultSetMetaData resultSetMetaData = resultSet.getMetaData(); ColumnMeta[] columnMetas = new ColumnMeta[resultSetMetaData.getColumnCount()]; List<String> primaryKeys = getPrimaryKeys(connection, resultSetMetaData, columnDefinitionProvider); int length = columnMetas.length; for(int i = 0; i < length; i++) { String columnName = resultSetMetaData.getColumnName(i + 1); ColumnDefinition<JdbcColumnKey,?> columnDefinition = columnDefinitionProvider.getColumnDefinition(JdbcColumnKey.of(resultSetMetaData, i + 1)); AutoGeneratedProperty autoGeneratedProperty = columnDefinition.lookFor(AutoGeneratedProperty.class); if (autoGeneratedProperty == null && resultSetMetaData.isAutoIncrement(i + 1) && ! columnDefinition.has(IgnoreAutoGeneratedProperty.class)) { autoGeneratedProperty = AutoGeneratedProperty.DEFAULT; } columnMetas[i] = new ColumnMeta( columnName, resultSetMetaData.getColumnType(i + 1), primaryKeys.contains(columnName), autoGeneratedProperty); } return new CrudMeta(databaseMeta, table, columnMetas); }