1 package sharin.sql.runner.processor;
2
3 import java.sql.ResultSet;
4 import java.sql.ResultSetMetaData;
5 import java.util.HashMap;
6 import java.util.Map;
7
8 import sharin.sql.runner.ResultSetProcessor;
9 import sharin.util.PropertyUtils;
10 import sharin.util.SqlUtils;
11
12 public class MapResultSetProcessor implements ResultSetProcessor {
13
14 public Object prepare(ResultSet rs) {
15 ResultSetMetaData metaData = SqlUtils.getMetaData(rs);
16 int columnCount = SqlUtils.getColumnCount(metaData);
17 String[] columnLabels = new String[columnCount];
18
19 for (int i = 0; i < columnCount; i++) {
20 columnLabels[i] = SqlUtils.getColumnLabel(metaData, i + 1);
21 }
22
23 return columnLabels;
24 }
25
26 public Object process(ResultSet rs, Object context) {
27 String[] columnLabels = (String[]) context;
28 Map<String, Object> result = new HashMap<String, Object>();
29
30 for (int i = 0; i < columnLabels.length; i++) {
31 PropertyUtils.setNestedPropertyValue(result, columnLabels[i],
32 SqlUtils.getObject(rs, i + 1));
33 }
34
35 return result;
36 }
37 }