1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 package com.ibatis.common.jdbc.logging;
17
18 import java.util.*;
19
20
21
22
23 public class BaseLogProxy {
24
25
26 private static int nextId = 100000;
27
28
29 protected static final Set SET_METHODS = new HashSet();
30
31
32 protected static final Set GET_METHODS = new HashSet();
33
34
35 protected static final Set EXECUTE_METHODS = new HashSet();
36
37
38 private Map columnMap = new HashMap();
39
40
41 private List columnNames = new ArrayList();
42
43
44 private List columnValues = new ArrayList();
45
46
47 protected int id;
48
49
50
51
52 public BaseLogProxy() {
53 id = getNextId();
54 }
55
56 static {
57 SET_METHODS.add("setString");
58 SET_METHODS.add("setInt");
59 SET_METHODS.add("setByte");
60 SET_METHODS.add("setShort");
61 SET_METHODS.add("setLong");
62 SET_METHODS.add("setDouble");
63 SET_METHODS.add("setFloat");
64 SET_METHODS.add("setTimestamp");
65 SET_METHODS.add("setDate");
66 SET_METHODS.add("setTime");
67 SET_METHODS.add("setArray");
68 SET_METHODS.add("setBigDecimal");
69 SET_METHODS.add("setAsciiStream");
70 SET_METHODS.add("setBinaryStream");
71 SET_METHODS.add("setBlob");
72 SET_METHODS.add("setBoolean");
73 SET_METHODS.add("setBytes");
74 SET_METHODS.add("setCharacterStream");
75 SET_METHODS.add("setClob");
76 SET_METHODS.add("setObject");
77 SET_METHODS.add("setNull");
78
79 GET_METHODS.add("getString");
80 GET_METHODS.add("getInt");
81 GET_METHODS.add("getByte");
82 GET_METHODS.add("getShort");
83 GET_METHODS.add("getLong");
84 GET_METHODS.add("getDouble");
85 GET_METHODS.add("getFloat");
86 GET_METHODS.add("getTimestamp");
87 GET_METHODS.add("getDate");
88 GET_METHODS.add("getTime");
89 GET_METHODS.add("getArray");
90 GET_METHODS.add("getBigDecimal");
91 GET_METHODS.add("getAsciiStream");
92 GET_METHODS.add("getBinaryStream");
93 GET_METHODS.add("getBlob");
94 GET_METHODS.add("getBoolean");
95 GET_METHODS.add("getBytes");
96 GET_METHODS.add("getCharacterStream");
97 GET_METHODS.add("getClob");
98 GET_METHODS.add("getObject");
99 GET_METHODS.add("getNull");
100
101 EXECUTE_METHODS.add("execute");
102 EXECUTE_METHODS.add("executeUpdate");
103 EXECUTE_METHODS.add("executeQuery");
104
105 }
106
107
108
109
110
111
112
113
114
115 protected void setColumn(Object key, Object value) {
116 columnMap.put(key, value);
117 columnNames.add(key);
118 columnValues.add(value);
119 }
120
121
122
123
124
125
126
127
128
129 protected Object getColumn(Object key) {
130 return columnMap.get(key);
131 }
132
133
134
135
136
137
138 protected String getValueString() {
139 return columnValues.toString();
140 }
141
142
143
144
145
146
147 protected String getTypeString() {
148 List typeList = new ArrayList(columnValues.size());
149 for (int i = 0; i < columnValues.size(); i++) {
150 Object value = columnValues.get(i);
151 if (value == null) {
152 typeList.add("null");
153 } else {
154 typeList.add(value.getClass().getName());
155 }
156 }
157 return typeList.toString();
158 }
159
160
161
162
163
164
165 protected String getColumnString() {
166 return columnNames.toString();
167 }
168
169
170
171
172 protected void clearColumnInfo() {
173 columnMap.clear();
174 columnNames.clear();
175 columnValues.clear();
176 }
177
178
179
180
181
182
183
184
185
186 protected String removeBreakingWhitespace(String original) {
187 return original.replace('\n', ' ').replace('\r', ' ').replace('\t', ' ');
188 }
189
190
191
192
193
194
195 protected synchronized static int getNextId() {
196 return nextId++;
197 }
198
199 }