001 package com.mockrunner.mock.jdbc;
002
003 import java.sql.ResultSetMetaData;
004 import java.sql.SQLException;
005 import java.sql.Types;
006 import java.util.HashMap;
007 import java.util.Map;
008
009 /**
010 * Mock implementation of <code>ResultSetMetaData</code>.
011 */
012 public class MockResultSetMetaData implements ResultSetMetaData
013 {
014 private int columnCount;
015 private Map columnDisplaySizeMap;
016 private Map columnTypeMap;
017 private Map precisionMap;
018 private Map scaleMap;
019 private Map isNullableMap;
020 private Map isAutoIncrementMap;
021 private Map isCaseSensitiveMap;
022 private Map isCurrencyMap;
023 private Map isDefinitelyWritableMap;
024 private Map isReadOnlyMap;
025 private Map isSearchableMap;
026 private Map isSignedMap;
027 private Map isWritableMap;
028 private Map catalogNameMap;
029 private Map columnClassNameMap;
030 private Map columnLabelMap;
031 private Map columnNameMap;
032 private Map columnTypeNameMap;
033 private Map schemaNameMap;
034 private Map tableNameMap;
035
036 public MockResultSetMetaData()
037 {
038 columnCount = 0;
039 columnDisplaySizeMap = new HashMap();
040 columnTypeMap = new HashMap();
041 precisionMap = new HashMap();
042 scaleMap = new HashMap();
043 isNullableMap = new HashMap();
044 isAutoIncrementMap = new HashMap();
045 isCaseSensitiveMap = new HashMap();
046 isCurrencyMap = new HashMap();
047 isDefinitelyWritableMap = new HashMap();;
048 isReadOnlyMap = new HashMap();
049 isSearchableMap = new HashMap();
050 isSignedMap = new HashMap();
051 isWritableMap = new HashMap();
052 catalogNameMap = new HashMap();
053 columnClassNameMap = new HashMap();
054 columnLabelMap = new HashMap();
055 columnNameMap = new HashMap();
056 columnTypeNameMap = new HashMap();
057 schemaNameMap = new HashMap();
058 tableNameMap = new HashMap();
059 }
060
061 public void setColumnCount(int columnCount)
062 {
063 this.columnCount = columnCount;
064 }
065
066 public void setColumnDisplaySize(int column, int displaySize)
067 {
068 columnDisplaySizeMap.put(new Integer(column), new Integer(displaySize));
069 }
070
071 public void setColumnType(int column, int columnType)
072 {
073 columnTypeMap.put(new Integer(column), new Integer(columnType));
074 }
075
076 public void setPrecision(int column, int precision)
077 {
078 precisionMap.put(new Integer(column), new Integer(precision));
079 }
080
081 public void setScale(int column, int scale)
082 {
083 scaleMap.put(new Integer(column), new Integer(scale));
084 }
085
086 public void setNullable(int column, int nullable)
087 {
088 isNullableMap.put(new Integer(column), new Integer(nullable));
089 }
090
091 public void setAutoIncrement(int column, boolean autoIncrement)
092 {
093 isAutoIncrementMap.put(new Integer(column), new Boolean(autoIncrement));
094 }
095
096 public void setCaseSensitive(int column, boolean caseSensitive)
097 {
098 isCaseSensitiveMap.put(new Integer(column), new Boolean(caseSensitive));
099 }
100
101 public void setCurrency(int column, boolean currency)
102 {
103 isCurrencyMap.put(new Integer(column), new Boolean(currency));
104 }
105
106 public void setDefinitelyWritable(int column, boolean definitelyWritable)
107 {
108 isDefinitelyWritableMap.put(new Integer(column), new Boolean(definitelyWritable));
109 }
110
111 public void setReadOnly(int column, boolean readOnly)
112 {
113 isReadOnlyMap.put(new Integer(column), new Boolean(readOnly));
114 }
115
116 public void setSearchable(int column, boolean searchable)
117 {
118 isSearchableMap.put(new Integer(column), new Boolean(searchable));
119 }
120
121 public void setSigned(int column, boolean signed)
122 {
123 isSignedMap.put(new Integer(column), new Boolean(signed));
124 }
125
126 public void setWritable(int column, boolean writable)
127 {
128 isWritableMap.put(new Integer(column), new Boolean(writable));
129 }
130
131 public void setCatalogName(int column, String catalogName)
132 {
133 catalogNameMap.put(new Integer(column), catalogName);
134 }
135
136 public void setColumnClassName(int column, String columnClassName)
137 {
138 columnClassNameMap.put(new Integer(column), columnClassName);
139 }
140
141 public void setColumnLabel(int column, String columnLabel)
142 {
143 columnLabelMap.put(new Integer(column), columnLabel);
144 }
145
146 public void setColumnName(int column, String columnName)
147 {
148 columnNameMap.put(new Integer(column), columnName);
149 }
150
151 public void setColumnTypeName(int column, String columnTypeName)
152 {
153 columnTypeNameMap.put(new Integer(column), columnTypeName);
154 }
155
156 public void setSchemaName(int column, String schemaName)
157 {
158 schemaNameMap.put(new Integer(column), schemaName);
159 }
160
161 public void setTableName(int column, String tableName)
162 {
163 tableNameMap.put(new Integer(column), tableName);
164 }
165
166 public int getColumnCount() throws SQLException
167 {
168 return columnCount;
169 }
170
171 public int getColumnDisplaySize(int column) throws SQLException
172 {
173 Integer columnDisplaySize = (Integer)columnDisplaySizeMap.get(new Integer(column));
174 if(null == columnDisplaySize) return getColumnCount();
175 return columnDisplaySize.intValue();
176 }
177
178 public int getColumnType(int column) throws SQLException
179 {
180 Integer columnType = (Integer)columnTypeMap.get(new Integer(column));
181 if(null == columnType) return Types.OTHER;
182 return columnType.intValue();
183 }
184
185 public int getPrecision(int column) throws SQLException
186 {
187 Integer precision = (Integer)precisionMap.get(new Integer(column));
188 if(null == precision) return 0;
189 return precision.intValue();
190 }
191
192 public int getScale(int column) throws SQLException
193 {
194 Integer scale = (Integer)scaleMap.get(new Integer(column));
195 if(null == scale) return 0;
196 return scale.intValue();
197 }
198
199 public int isNullable(int column) throws SQLException
200 {
201 Integer isNullable = (Integer)isNullableMap.get(new Integer(column));
202 if(null == isNullable) return columnNullable;
203 return isNullable.intValue();
204 }
205
206 public boolean isAutoIncrement(int column) throws SQLException
207 {
208 Boolean isAutoIncrement = (Boolean)isAutoIncrementMap.get(new Integer(column));
209 if(null == isAutoIncrement) return false;
210 return isAutoIncrement.booleanValue();
211 }
212
213 public boolean isCaseSensitive(int column) throws SQLException
214 {
215 Boolean isCaseSensitive = (Boolean)isCaseSensitiveMap.get(new Integer(column));
216 if(null == isCaseSensitive) return true;
217 return isCaseSensitive.booleanValue();
218 }
219
220 public boolean isCurrency(int column) throws SQLException
221 {
222 Boolean isCurrency = (Boolean)isCurrencyMap.get(new Integer(column));
223 if(null == isCurrency) return false;
224 return isCurrency.booleanValue();
225 }
226
227 public boolean isDefinitelyWritable(int column) throws SQLException
228 {
229 Boolean isDefinitelyWritable = (Boolean)isDefinitelyWritableMap.get(new Integer(column));
230 if(null == isDefinitelyWritable) return true;
231 return isDefinitelyWritable.booleanValue();
232 }
233
234 public boolean isReadOnly(int column) throws SQLException
235 {
236 Boolean isReadOnly = (Boolean)isReadOnlyMap.get(new Integer(column));
237 if(null == isReadOnly) return false;
238 return isReadOnly.booleanValue();
239 }
240
241 public boolean isSearchable(int column) throws SQLException
242 {
243 Boolean isSearchable = (Boolean)isSearchableMap.get(new Integer(column));
244 if(null == isSearchable) return true;
245 return isSearchable.booleanValue();
246 }
247
248 public boolean isSigned(int column) throws SQLException
249 {
250 Boolean isSigned = (Boolean)isSignedMap.get(new Integer(column));
251 if(null == isSigned) return false;
252 return isSigned.booleanValue();
253 }
254
255 public boolean isWritable(int column) throws SQLException
256 {
257 Boolean isWritable = (Boolean)isWritableMap.get(new Integer(column));
258 if(null == isWritable) return true;
259 return isWritable.booleanValue();
260 }
261
262 public String getCatalogName(int column) throws SQLException
263 {
264 String catalogName = (String)catalogNameMap.get(new Integer(column));
265 if(null == catalogName) return "";
266 return catalogName;
267 }
268
269 public String getColumnClassName(int column) throws SQLException
270 {
271 String columnClassName = (String)columnClassNameMap.get(new Integer(column));
272 if(null == columnClassName) return Object.class.getName();
273 return columnClassName;
274 }
275
276 public String getColumnLabel(int column) throws SQLException
277 {
278 String columnLabel = (String)columnLabelMap.get(new Integer(column));
279 if(null == columnLabel) return getColumnName(column);
280 return columnLabel;
281 }
282
283 public String getColumnName(int column) throws SQLException
284 {
285 String columnName = (String)columnNameMap.get(new Integer(column));
286 if(null == columnName) return "";
287 return columnName;
288 }
289
290 public String getColumnTypeName(int column) throws SQLException
291 {
292 String columnTypeName = (String)columnTypeNameMap.get(new Integer(column));
293 if(null == columnTypeName) return "";
294 return columnTypeName;
295 }
296
297 public String getSchemaName(int column) throws SQLException
298 {
299 String schemaName = (String)schemaNameMap.get(new Integer(column));
300 if(null == schemaName) return "";
301 return schemaName;
302 }
303
304 public String getTableName(int column) throws SQLException
305 {
306 String tableName = (String)tableNameMap.get(new Integer(column));
307 if(null == tableName) return "";
308 return tableName;
309 }
310 }