private static List<ColumnMetaData> createColumnMetaDataList( final Map<String, ColumnDefinitionSegment> modifiedColumnDefinitions, final boolean dropPrimaryKey, final TableMetaData oldTableMetaData) { List<ColumnMetaData> result = new LinkedList<>(); for (ColumnMetaData each : oldTableMetaData.getColumns().values()) { ColumnMetaData columnMetaData; if (modifiedColumnDefinitions.containsKey(each.getColumnName())) { ColumnDefinitionSegment columnDefinition = modifiedColumnDefinitions.get(each.getColumnName()); columnMetaData = new ColumnMetaData(columnDefinition.getColumnName(), columnDefinition.getDataType(), !dropPrimaryKey && columnDefinition.isPrimaryKey()); } else { columnMetaData = new ColumnMetaData(each.getColumnName(), each.getDataType(), !dropPrimaryKey && each.isPrimaryKey()); } result.add(columnMetaData); } return result; }
/** * Find column definition from meta data. * * @param columnName column name * @param shardingTableMetaData sharding table meta data * @return column definition */ public Optional<ColumnDefinitionSegment> findColumnDefinitionFromMetaData(final String columnName, final ShardingTableMetaData shardingTableMetaData) { if (!shardingTableMetaData.containsTable(getTables().getSingleTableName())) { return Optional.absent(); } for (ColumnMetaData each : shardingTableMetaData.get(getTables().getSingleTableName()).getColumns().values()) { if (columnName.equalsIgnoreCase(each.getColumnName())) { return Optional.of(new ColumnDefinitionSegment(columnName, each.getDataType(), each.isPrimaryKey())); } } return Optional.absent(); }
public TableMetaData(final Collection<ColumnMetaData> columnMetaDataList) { columns = new LinkedHashMap<>(columnMetaDataList.size(), 1); for (ColumnMetaData each : columnMetaDataList) { columns.put(each.getColumnName(), each); } } }
private List<ColumnMetaData> getColumnMetaDataList(final Connection connection, final String catalog, final String actualTableName) throws SQLException { List<ColumnMetaData> result = new LinkedList<>(); Collection<String> primaryKeys = getPrimaryKeys(connection, catalog, actualTableName); try (ResultSet resultSet = connection.getMetaData().getColumns(catalog, null, actualTableName, "%")) { while (resultSet.next()) { String columnName = resultSet.getString("COLUMN_NAME"); String columnType = resultSet.getString("TYPE_NAME"); result.add(new ColumnMetaData(columnName, columnType, primaryKeys.contains(columnName))); } } return result; }
private static Optional<ColumnMetaData> find(final String columnName, final List<ColumnMetaData> columnMetaDataList) { for (ColumnMetaData each : columnMetaDataList) { if (columnName.equals(each.getColumnName())) { return Optional.of(each); } } return Optional.absent(); }
private static List<ColumnMetaData> createColumnMetaDataList(final Collection<ColumnDefinitionSegment> addedColumnDefinitions, final boolean dropPrimaryKey) { List<ColumnMetaData> result = new LinkedList<>(); for (ColumnDefinitionSegment each : addedColumnDefinitions) { result.add(new ColumnMetaData(each.getColumnName(), each.getDataType(), !dropPrimaryKey && each.isPrimaryKey())); } return result; }
private static void dropColumnDefinitions(final Collection<String> droppedColumnNames, final List<ColumnMetaData> columnMetaDataList) { List<ColumnMetaData> droppedColumnMetaDataList = new LinkedList<>(); for (ColumnMetaData each : columnMetaDataList) { if (droppedColumnNames.contains(each.getColumnName())) { droppedColumnMetaDataList.add(each); } } columnMetaDataList.removeAll(droppedColumnMetaDataList); } }
@Override public ColumnMetaData apply(final ColumnDefinitionSegment input) { return new ColumnMetaData(input.getColumnName(), input.getDataType(), input.isPrimaryKey()); } }));