package com.github.davidmoten.rx.jdbc;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.SQLException;
import java.util.HashMap;
import java.util.Map;
import com.github.davidmoten.rx.jdbc.exceptions.SQLRuntimeException;
class ResultSetCache {
final ResultSet rs;
final Map<String, Integer> colIndexes;
ResultSetCache(ResultSet rs) {
this.rs = rs;
this.colIndexes = collectColIndexes(rs);
}
private static Map<String, Integer> collectColIndexes(ResultSet rs) {
HashMap<String, Integer> map = new HashMap<String, Integer>();
try {
ResultSetMetaData metadata = rs.getMetaData();
for (int i = 1; i <= metadata.getColumnCount(); i++) {
map.put(metadata.getColumnName(i).toUpperCase(), i);
}
return map;
} catch (SQLException e) {
throw new SQLRuntimeException(e);
}
}
}