1 package com.github.davidmoten.rx.jdbc;
2
3 import java.sql.ResultSet;
4 import java.sql.ResultSetMetaData;
5 import java.sql.SQLException;
6 import java.util.HashMap;
7 import java.util.Map;
8
9 import com.github.davidmoten.rx.jdbc.exceptions.SQLRuntimeException;
10
11 class ResultSetCache {
12
13 final ResultSet rs;
14 final Map<String, Integer> colIndexes;
15
16 ResultSetCache(ResultSet rs) {
17 this.rs = rs;
18
19 this.colIndexes = collectColIndexes(rs);
20 }
21
22 private static Map<String, Integer> collectColIndexes(ResultSet rs) {
23 HashMap<String, Integer> map = new HashMap<String, Integer>();
24 try {
25 ResultSetMetaData metadata = rs.getMetaData();
26 for (int i=1;i<=metadata.getColumnCount();i++) {
27 map.put(metadata.getColumnName(i),i);
28 }
29 return map;
30 } catch (SQLException e) {
31 throw new SQLRuntimeException(e);
32 }
33 }
34
35 }