public SqlWindow(ResultSet rs,
ValueToJooqConverterProvider valueToJooqConverterProvider,
ValueToJooqDataTypeProvider valueToJooqDataTypeProvider,
ScalarTypeToSqlType scalarTypeToSqlType) throws SQLException {
ResultSetMetaData metaData = rs.getMetaData();
final int columnLenght = metaData.getColumnCount();
String[] columns = new String[columnLenght];
SubdocValueConverter<?, ?>[] converters = new SubdocValueConverter[columnLenght];
for (int i = 0; i < columnLenght; i++) {
int jdbcIndex = i + 1;
columns[i] = metaData.getColumnName(jdbcIndex);
ScalarType scalarType = getScalarType(metaData, jdbcIndex, scalarTypeToSqlType);
converters[i] = valueToJooqDataTypeProvider.getDataType(scalarType).getSubdocValueConverter();
}
ImmutableList.Builder<ValueRow<ScalarValue<?>>> builder = ImmutableList.builder();
while (rs.next()) {
ScalarValue[] values = new ScalarValue[columns.length];
for (int i = 0; i < columns.length; i++) {
int jdbcIndex = i+1;
ScalarValue<?> value = readAndTransform(rs, jdbcIndex, converters[i]);
Preconditions.checkNotNull(value);
values[i] = value;
}
builder.add(new WindowValueRow(columns, values));
}
rows = builder.build().iterator();
}