1*cdf0e10cSrcweir /*************************************************************************
2*cdf0e10cSrcweir * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
3*cdf0e10cSrcweir *
4*cdf0e10cSrcweir * Copyright 2008 by Sun Microsystems, Inc.
5*cdf0e10cSrcweir *
6*cdf0e10cSrcweir * OpenOffice.org - a multi-platform office productivity suite
7*cdf0e10cSrcweir *
8*cdf0e10cSrcweir * $RCSfile: mysqlc_resultsetmetadata.cxx,v $
9*cdf0e10cSrcweir *
10*cdf0e10cSrcweir * $Revision: 1.1.2.4 $
11*cdf0e10cSrcweir *
12*cdf0e10cSrcweir * This file is part of OpenOffice.org.
13*cdf0e10cSrcweir *
14*cdf0e10cSrcweir * OpenOffice.org is free software: you can redistribute it and/or modify
15*cdf0e10cSrcweir * it under the terms of the GNU Lesser General Public License version 3
16*cdf0e10cSrcweir * only, as published by the Free Software Foundation.
17*cdf0e10cSrcweir *
18*cdf0e10cSrcweir * OpenOffice.org is distributed in the hope that it will be useful,
19*cdf0e10cSrcweir * but WITHOUT ANY WARRANTY; without even the implied warranty of
20*cdf0e10cSrcweir * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
21*cdf0e10cSrcweir * GNU Lesser General Public License version 3 for more details
22*cdf0e10cSrcweir * (a copy is included in the LICENSE file that accompanied this code).
23*cdf0e10cSrcweir *
24*cdf0e10cSrcweir * You should have received a copy of the GNU Lesser General Public License
25*cdf0e10cSrcweir * version 3 along with OpenOffice.org.  If not, see
26*cdf0e10cSrcweir * <http://www.openoffice.org/license.html>
27*cdf0e10cSrcweir * for a copy of the LGPLv3 License.
28*cdf0e10cSrcweir ************************************************************************/
29*cdf0e10cSrcweir 
30*cdf0e10cSrcweir #include "mysqlc_resultsetmetadata.hxx"
31*cdf0e10cSrcweir #include "mysqlc_general.hxx"
32*cdf0e10cSrcweir #include "cppconn/exception.h"
33*cdf0e10cSrcweir 
34*cdf0e10cSrcweir #include <rtl/ustrbuf.hxx>
35*cdf0e10cSrcweir 
36*cdf0e10cSrcweir using namespace connectivity::mysqlc;
37*cdf0e10cSrcweir using namespace com::sun::star::uno;
38*cdf0e10cSrcweir using namespace com::sun::star::lang;
39*cdf0e10cSrcweir using namespace com::sun::star::sdbc;
40*cdf0e10cSrcweir using ::rtl::OUString;
41*cdf0e10cSrcweir 
42*cdf0e10cSrcweir // -------------------------------------------------------------------------
43*cdf0e10cSrcweir OResultSetMetaData::~OResultSetMetaData()
44*cdf0e10cSrcweir {
45*cdf0e10cSrcweir }
46*cdf0e10cSrcweir /* }}} */
47*cdf0e10cSrcweir 
48*cdf0e10cSrcweir 
49*cdf0e10cSrcweir /* {{{ OResultSetMetaData::getColumnDisplaySize() -I- */
50*cdf0e10cSrcweir sal_Int32 SAL_CALL OResultSetMetaData::getColumnDisplaySize(sal_Int32 column)
51*cdf0e10cSrcweir 	throw(SQLException, RuntimeException)
52*cdf0e10cSrcweir {
53*cdf0e10cSrcweir 	OSL_TRACE("OResultSetMetaData::getColumnDisplaySize");
54*cdf0e10cSrcweir 
55*cdf0e10cSrcweir 	try {
56*cdf0e10cSrcweir 		meta->getColumnDisplaySize(column);
57*cdf0e10cSrcweir 	} catch (sql::MethodNotImplementedException) {
58*cdf0e10cSrcweir 		mysqlc_sdbc_driver::throwFeatureNotImplementedException("OResultSetMetaData::getColumnDisplaySize", *this);
59*cdf0e10cSrcweir 	} catch (sql::SQLException &e) {
60*cdf0e10cSrcweir         mysqlc_sdbc_driver::translateAndThrow(e, *this, m_encoding);
61*cdf0e10cSrcweir 	}
62*cdf0e10cSrcweir 	return 0; // fool compiler
63*cdf0e10cSrcweir }
64*cdf0e10cSrcweir /* }}} */
65*cdf0e10cSrcweir 
66*cdf0e10cSrcweir 
67*cdf0e10cSrcweir /* {{{ OResultSetMetaData::getColumnType() -I- */
68*cdf0e10cSrcweir sal_Int32 SAL_CALL OResultSetMetaData::getColumnType(sal_Int32 column)
69*cdf0e10cSrcweir 	throw(SQLException, RuntimeException)
70*cdf0e10cSrcweir {
71*cdf0e10cSrcweir 	OSL_TRACE("OResultSetMetaData::getColumnType");
72*cdf0e10cSrcweir 	checkColumnIndex(column);
73*cdf0e10cSrcweir 
74*cdf0e10cSrcweir 	try {
75*cdf0e10cSrcweir 		return mysqlc_sdbc_driver::mysqlToOOOType(meta->getColumnType(column));
76*cdf0e10cSrcweir 	} catch (sql::MethodNotImplementedException) {
77*cdf0e10cSrcweir 		mysqlc_sdbc_driver::throwFeatureNotImplementedException("OResultSetMetaData::getMetaData", *this);
78*cdf0e10cSrcweir 	} catch (sql::SQLException &e) {
79*cdf0e10cSrcweir         mysqlc_sdbc_driver::translateAndThrow(e, *this, m_encoding);
80*cdf0e10cSrcweir 	}
81*cdf0e10cSrcweir 	return 0; // fool compiler
82*cdf0e10cSrcweir }
83*cdf0e10cSrcweir /* }}} */
84*cdf0e10cSrcweir 
85*cdf0e10cSrcweir /*
86*cdf0e10cSrcweir   XXX: This method doesn't throw exceptions at all.
87*cdf0e10cSrcweir   Should it declare that it throws ?? What if throw() is removed?
88*cdf0e10cSrcweir   Does it change the API, the open-close principle?
89*cdf0e10cSrcweir */
90*cdf0e10cSrcweir /* {{{ OResultSetMetaData::getColumnCount() -I- */
91*cdf0e10cSrcweir sal_Int32 SAL_CALL OResultSetMetaData::getColumnCount()
92*cdf0e10cSrcweir 	throw(SQLException, RuntimeException)
93*cdf0e10cSrcweir {
94*cdf0e10cSrcweir 	OSL_TRACE("OResultSetMetaData::getColumnCount");
95*cdf0e10cSrcweir 	try {
96*cdf0e10cSrcweir 		return meta->getColumnCount();
97*cdf0e10cSrcweir 	} catch (sql::MethodNotImplementedException) {
98*cdf0e10cSrcweir 		mysqlc_sdbc_driver::throwFeatureNotImplementedException("OResultSetMetaData::getMetaData", *this);
99*cdf0e10cSrcweir 	} catch (sql::SQLException &e) {
100*cdf0e10cSrcweir         mysqlc_sdbc_driver::translateAndThrow(e, *this, m_encoding);
101*cdf0e10cSrcweir 	}
102*cdf0e10cSrcweir 	return 0; // fool compiler
103*cdf0e10cSrcweir }
104*cdf0e10cSrcweir /* }}} */
105*cdf0e10cSrcweir 
106*cdf0e10cSrcweir 
107*cdf0e10cSrcweir /* {{{ OResultSetMetaData::isCaseSensitive() -I- */
108*cdf0e10cSrcweir sal_Bool SAL_CALL OResultSetMetaData::isCaseSensitive(sal_Int32 column)
109*cdf0e10cSrcweir 	throw(SQLException, RuntimeException)
110*cdf0e10cSrcweir {
111*cdf0e10cSrcweir 	OSL_TRACE("OResultSetMetaData::isCaseSensitive");
112*cdf0e10cSrcweir 	checkColumnIndex(column);
113*cdf0e10cSrcweir 
114*cdf0e10cSrcweir 	try {
115*cdf0e10cSrcweir 		return meta->isCaseSensitive(column);
116*cdf0e10cSrcweir 	} catch (sql::MethodNotImplementedException) {
117*cdf0e10cSrcweir 		mysqlc_sdbc_driver::throwFeatureNotImplementedException("OResultSetMetaData::getMetaData", *this);
118*cdf0e10cSrcweir 	} catch (sql::SQLException &e) {
119*cdf0e10cSrcweir         mysqlc_sdbc_driver::translateAndThrow(e, *this, m_encoding);
120*cdf0e10cSrcweir 	}
121*cdf0e10cSrcweir 	return sal_False; // fool compiler
122*cdf0e10cSrcweir }
123*cdf0e10cSrcweir /* }}} */
124*cdf0e10cSrcweir 
125*cdf0e10cSrcweir 
126*cdf0e10cSrcweir /* {{{ OResultSetMetaData::getSchemaName() -I- */
127*cdf0e10cSrcweir OUString SAL_CALL OResultSetMetaData::getSchemaName(sal_Int32 column)
128*cdf0e10cSrcweir 	throw(SQLException, RuntimeException)
129*cdf0e10cSrcweir {
130*cdf0e10cSrcweir 	OSL_TRACE("OResultSetMetaData::getSchemaName");
131*cdf0e10cSrcweir 	checkColumnIndex(column);
132*cdf0e10cSrcweir 
133*cdf0e10cSrcweir 	try {
134*cdf0e10cSrcweir 		return convert(meta->getSchemaName(column));
135*cdf0e10cSrcweir 	} catch (sql::MethodNotImplementedException) {
136*cdf0e10cSrcweir 		mysqlc_sdbc_driver::throwFeatureNotImplementedException("OResultSetMetaData::getMetaData", *this);
137*cdf0e10cSrcweir 	} catch (sql::SQLException &e) {
138*cdf0e10cSrcweir         mysqlc_sdbc_driver::translateAndThrow(e, *this, m_encoding);
139*cdf0e10cSrcweir 	}
140*cdf0e10cSrcweir 	return OUString(); // fool compiler
141*cdf0e10cSrcweir }
142*cdf0e10cSrcweir /* }}} */
143*cdf0e10cSrcweir 
144*cdf0e10cSrcweir 
145*cdf0e10cSrcweir /* {{{ OResultSetMetaData::getColumnName() -I- */
146*cdf0e10cSrcweir OUString SAL_CALL OResultSetMetaData::getColumnName(sal_Int32 column)
147*cdf0e10cSrcweir 	throw(SQLException, RuntimeException)
148*cdf0e10cSrcweir {
149*cdf0e10cSrcweir 	OSL_TRACE("OResultSetMetaData::getColumnName");
150*cdf0e10cSrcweir 	checkColumnIndex(column);
151*cdf0e10cSrcweir 
152*cdf0e10cSrcweir 	try {
153*cdf0e10cSrcweir 		return convert( meta->getColumnName( column ) );
154*cdf0e10cSrcweir 	} catch (sql::MethodNotImplementedException) {
155*cdf0e10cSrcweir 		mysqlc_sdbc_driver::throwFeatureNotImplementedException("OResultSetMetaData::getMetaData", *this);
156*cdf0e10cSrcweir 	} catch (sql::SQLException &e) {
157*cdf0e10cSrcweir         mysqlc_sdbc_driver::translateAndThrow(e, *this, m_encoding);
158*cdf0e10cSrcweir 	}
159*cdf0e10cSrcweir 	return OUString(); // fool compiler
160*cdf0e10cSrcweir }
161*cdf0e10cSrcweir /* }}} */
162*cdf0e10cSrcweir 
163*cdf0e10cSrcweir 
164*cdf0e10cSrcweir /* {{{ OResultSetMetaData::getTableName() -I- */
165*cdf0e10cSrcweir OUString SAL_CALL OResultSetMetaData::getTableName(sal_Int32 column)
166*cdf0e10cSrcweir 	throw(SQLException, RuntimeException)
167*cdf0e10cSrcweir {
168*cdf0e10cSrcweir 	OSL_TRACE("OResultSetMetaData::getTableName");
169*cdf0e10cSrcweir 	checkColumnIndex(column);
170*cdf0e10cSrcweir 
171*cdf0e10cSrcweir 	try {
172*cdf0e10cSrcweir 		return convert(meta->getTableName(column));
173*cdf0e10cSrcweir 	} catch (sql::MethodNotImplementedException) {
174*cdf0e10cSrcweir 		mysqlc_sdbc_driver::throwFeatureNotImplementedException("OResultSetMetaData::getMetaData", *this);
175*cdf0e10cSrcweir 	} catch (sql::SQLException &e) {
176*cdf0e10cSrcweir         mysqlc_sdbc_driver::translateAndThrow(e, *this, m_encoding);
177*cdf0e10cSrcweir 	}
178*cdf0e10cSrcweir 	return OUString(); // fool compiler
179*cdf0e10cSrcweir }
180*cdf0e10cSrcweir /* }}} */
181*cdf0e10cSrcweir 
182*cdf0e10cSrcweir 
183*cdf0e10cSrcweir /* {{{ OResultSetMetaData::getCatalogName() -I- */
184*cdf0e10cSrcweir OUString SAL_CALL OResultSetMetaData::getCatalogName(sal_Int32 column)
185*cdf0e10cSrcweir 	throw(SQLException, RuntimeException)
186*cdf0e10cSrcweir {
187*cdf0e10cSrcweir 	OSL_TRACE("OResultSetMetaData::getCatalogName");
188*cdf0e10cSrcweir 	checkColumnIndex(column);
189*cdf0e10cSrcweir 
190*cdf0e10cSrcweir 	try {
191*cdf0e10cSrcweir 		return convert(meta->getCatalogName(column));
192*cdf0e10cSrcweir 	} catch (sql::MethodNotImplementedException) {
193*cdf0e10cSrcweir 		mysqlc_sdbc_driver::throwFeatureNotImplementedException("OResultSetMetaData::getMetaData", *this);
194*cdf0e10cSrcweir 	} catch (sql::SQLException &e) {
195*cdf0e10cSrcweir         mysqlc_sdbc_driver::translateAndThrow(e, *this, m_encoding);
196*cdf0e10cSrcweir 	}
197*cdf0e10cSrcweir 	return OUString(); // fool compiler
198*cdf0e10cSrcweir }
199*cdf0e10cSrcweir /* }}} */
200*cdf0e10cSrcweir 
201*cdf0e10cSrcweir 
202*cdf0e10cSrcweir /* {{{ OResultSetMetaData::getColumnTypeName() -I- */
203*cdf0e10cSrcweir OUString SAL_CALL OResultSetMetaData::getColumnTypeName(sal_Int32 column)
204*cdf0e10cSrcweir 	throw(SQLException, RuntimeException)
205*cdf0e10cSrcweir {
206*cdf0e10cSrcweir 	OSL_TRACE("OResultSetMetaData::getColumnTypeName");
207*cdf0e10cSrcweir 	checkColumnIndex(column);
208*cdf0e10cSrcweir 
209*cdf0e10cSrcweir 	try {
210*cdf0e10cSrcweir 		return convert(meta->getColumnTypeName(column));
211*cdf0e10cSrcweir 	} catch (sql::MethodNotImplementedException) {
212*cdf0e10cSrcweir 		mysqlc_sdbc_driver::throwFeatureNotImplementedException("OResultSetMetaData::getMetaData", *this);
213*cdf0e10cSrcweir 	} catch (sql::SQLException &e) {
214*cdf0e10cSrcweir         mysqlc_sdbc_driver::translateAndThrow(e, *this, m_encoding);
215*cdf0e10cSrcweir 	}
216*cdf0e10cSrcweir 	return OUString(); // fool compiler
217*cdf0e10cSrcweir }
218*cdf0e10cSrcweir /* }}} */
219*cdf0e10cSrcweir 
220*cdf0e10cSrcweir 
221*cdf0e10cSrcweir /* {{{ OResultSetMetaData::getColumnLabel() -I- */
222*cdf0e10cSrcweir OUString SAL_CALL OResultSetMetaData::getColumnLabel(sal_Int32 column)
223*cdf0e10cSrcweir 	throw(SQLException, RuntimeException)
224*cdf0e10cSrcweir {
225*cdf0e10cSrcweir 	OSL_TRACE("OResultSetMetaData::getColumnLabel");
226*cdf0e10cSrcweir 	checkColumnIndex(column);
227*cdf0e10cSrcweir 
228*cdf0e10cSrcweir 	try {
229*cdf0e10cSrcweir 		return convert(meta->getColumnLabel(column));
230*cdf0e10cSrcweir 	} catch (sql::MethodNotImplementedException) {
231*cdf0e10cSrcweir 		mysqlc_sdbc_driver::throwFeatureNotImplementedException("OResultSetMetaData::getMetaData", *this);
232*cdf0e10cSrcweir 	} catch (sql::SQLException &e) {
233*cdf0e10cSrcweir         mysqlc_sdbc_driver::translateAndThrow(e, *this, m_encoding);
234*cdf0e10cSrcweir 	}
235*cdf0e10cSrcweir 	return OUString(); // fool compiler
236*cdf0e10cSrcweir }
237*cdf0e10cSrcweir /* }}} */
238*cdf0e10cSrcweir 
239*cdf0e10cSrcweir 
240*cdf0e10cSrcweir /* {{{ OResultSetMetaData::getColumnServiceName() -I- */
241*cdf0e10cSrcweir OUString SAL_CALL OResultSetMetaData::getColumnServiceName(sal_Int32 column)
242*cdf0e10cSrcweir 	throw(SQLException, RuntimeException)
243*cdf0e10cSrcweir {
244*cdf0e10cSrcweir 	OSL_TRACE("OResultSetMetaData::getColumnServiceName");
245*cdf0e10cSrcweir 	checkColumnIndex(column);
246*cdf0e10cSrcweir 
247*cdf0e10cSrcweir 	OUString aRet = OUString();
248*cdf0e10cSrcweir 	return aRet;
249*cdf0e10cSrcweir }
250*cdf0e10cSrcweir /* }}} */
251*cdf0e10cSrcweir 
252*cdf0e10cSrcweir 
253*cdf0e10cSrcweir /* {{{ OResultSetMetaData::isCurrency() -I- */
254*cdf0e10cSrcweir sal_Bool SAL_CALL OResultSetMetaData::isCurrency(sal_Int32 column)
255*cdf0e10cSrcweir 	throw(SQLException, RuntimeException)
256*cdf0e10cSrcweir {
257*cdf0e10cSrcweir 	OSL_TRACE("OResultSetMetaData::isCurrency");
258*cdf0e10cSrcweir 	checkColumnIndex(column);
259*cdf0e10cSrcweir 
260*cdf0e10cSrcweir 	try {
261*cdf0e10cSrcweir 		return meta->isCurrency(column)? sal_True:sal_False;
262*cdf0e10cSrcweir 	} catch (sql::MethodNotImplementedException) {
263*cdf0e10cSrcweir 		mysqlc_sdbc_driver::throwFeatureNotImplementedException("OResultSetMetaData::getMetaData", *this);
264*cdf0e10cSrcweir 	} catch (sql::SQLException &e) {
265*cdf0e10cSrcweir         mysqlc_sdbc_driver::translateAndThrow(e, *this, m_encoding);
266*cdf0e10cSrcweir 	}
267*cdf0e10cSrcweir 	return sal_False; // fool compiler
268*cdf0e10cSrcweir }
269*cdf0e10cSrcweir /* }}} */
270*cdf0e10cSrcweir 
271*cdf0e10cSrcweir 
272*cdf0e10cSrcweir /* {{{ OResultSetMetaData::isAutoIncrement() -I- */
273*cdf0e10cSrcweir sal_Bool SAL_CALL OResultSetMetaData::isAutoIncrement(sal_Int32 column)
274*cdf0e10cSrcweir 	throw(SQLException, RuntimeException)
275*cdf0e10cSrcweir {
276*cdf0e10cSrcweir 	OSL_TRACE("OResultSetMetaData::isAutoIncrement");
277*cdf0e10cSrcweir 	checkColumnIndex(column);
278*cdf0e10cSrcweir 
279*cdf0e10cSrcweir 	try {
280*cdf0e10cSrcweir 		return meta->isAutoIncrement(column)? sal_True:sal_False;
281*cdf0e10cSrcweir 	} catch (sql::MethodNotImplementedException) {
282*cdf0e10cSrcweir 		mysqlc_sdbc_driver::throwFeatureNotImplementedException("OResultSetMetaData::getMetaData", *this);
283*cdf0e10cSrcweir 	} catch (sql::SQLException &e) {
284*cdf0e10cSrcweir         mysqlc_sdbc_driver::translateAndThrow(e, *this, m_encoding);
285*cdf0e10cSrcweir 	}
286*cdf0e10cSrcweir 	return sal_False; // fool compiler
287*cdf0e10cSrcweir }
288*cdf0e10cSrcweir /* }}} */
289*cdf0e10cSrcweir 
290*cdf0e10cSrcweir 
291*cdf0e10cSrcweir /* {{{ OResultSetMetaData::isSigned() -I- */
292*cdf0e10cSrcweir sal_Bool SAL_CALL OResultSetMetaData::isSigned(sal_Int32 column)
293*cdf0e10cSrcweir 	throw(SQLException, RuntimeException)
294*cdf0e10cSrcweir {
295*cdf0e10cSrcweir 	OSL_TRACE("OResultSetMetaData::isSigned");
296*cdf0e10cSrcweir 	checkColumnIndex(column);
297*cdf0e10cSrcweir 
298*cdf0e10cSrcweir 	try {
299*cdf0e10cSrcweir 		return meta->isSigned(column)? sal_True:sal_False;
300*cdf0e10cSrcweir 	} catch (sql::MethodNotImplementedException) {
301*cdf0e10cSrcweir 		mysqlc_sdbc_driver::throwFeatureNotImplementedException("OResultSetMetaData::getMetaData", *this);
302*cdf0e10cSrcweir 	} catch (sql::SQLException &e) {
303*cdf0e10cSrcweir         mysqlc_sdbc_driver::translateAndThrow(e, *this, m_encoding);
304*cdf0e10cSrcweir 	}
305*cdf0e10cSrcweir 	return sal_False; // fool compiler
306*cdf0e10cSrcweir }
307*cdf0e10cSrcweir /* }}} */
308*cdf0e10cSrcweir 
309*cdf0e10cSrcweir 
310*cdf0e10cSrcweir /* {{{ OResultSetMetaData::getPrecision() -I- */
311*cdf0e10cSrcweir sal_Int32 SAL_CALL OResultSetMetaData::getPrecision(sal_Int32 column)
312*cdf0e10cSrcweir 	throw(SQLException, RuntimeException)
313*cdf0e10cSrcweir {
314*cdf0e10cSrcweir 	OSL_TRACE("OResultSetMetaData::getPrecision");
315*cdf0e10cSrcweir 	checkColumnIndex(column);
316*cdf0e10cSrcweir 
317*cdf0e10cSrcweir 	try {
318*cdf0e10cSrcweir 		return meta->getPrecision(column);
319*cdf0e10cSrcweir 	} catch (sql::MethodNotImplementedException) {
320*cdf0e10cSrcweir 		mysqlc_sdbc_driver::throwFeatureNotImplementedException("OResultSetMetaData::getPrecision", *this);
321*cdf0e10cSrcweir 	} catch (sql::SQLException &e) {
322*cdf0e10cSrcweir         mysqlc_sdbc_driver::translateAndThrow(e, *this, m_encoding);
323*cdf0e10cSrcweir 	}
324*cdf0e10cSrcweir 	return 0; // fool compiler
325*cdf0e10cSrcweir }
326*cdf0e10cSrcweir /* }}} */
327*cdf0e10cSrcweir 
328*cdf0e10cSrcweir 
329*cdf0e10cSrcweir /* {{{ OResultSetMetaData::getScale() -I- */
330*cdf0e10cSrcweir sal_Int32 SAL_CALL OResultSetMetaData::getScale(sal_Int32 column)
331*cdf0e10cSrcweir 	throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException)
332*cdf0e10cSrcweir {
333*cdf0e10cSrcweir 	OSL_TRACE("OResultSetMetaData::getScale");
334*cdf0e10cSrcweir 	checkColumnIndex(column);
335*cdf0e10cSrcweir 	try {
336*cdf0e10cSrcweir 		return meta->getScale(column);
337*cdf0e10cSrcweir 	} catch (sql::MethodNotImplementedException) {
338*cdf0e10cSrcweir 		mysqlc_sdbc_driver::throwFeatureNotImplementedException("OResultSetMetaData::getScale", *this);
339*cdf0e10cSrcweir 	} catch (sql::SQLException &e) {
340*cdf0e10cSrcweir         mysqlc_sdbc_driver::translateAndThrow(e, *this, m_encoding);
341*cdf0e10cSrcweir 	}
342*cdf0e10cSrcweir 	return 0; // fool compiler
343*cdf0e10cSrcweir }
344*cdf0e10cSrcweir /* }}} */
345*cdf0e10cSrcweir 
346*cdf0e10cSrcweir 
347*cdf0e10cSrcweir /* {{{ OResultSetMetaData::isNullable() -I- */
348*cdf0e10cSrcweir sal_Int32 SAL_CALL OResultSetMetaData::isNullable(sal_Int32 column)
349*cdf0e10cSrcweir 	throw(SQLException, RuntimeException)
350*cdf0e10cSrcweir {
351*cdf0e10cSrcweir 	OSL_TRACE("OResultSetMetaData::isNullable");
352*cdf0e10cSrcweir 	checkColumnIndex(column);
353*cdf0e10cSrcweir 
354*cdf0e10cSrcweir 	try {
355*cdf0e10cSrcweir 		return meta->isNullable(column)? sal_True:sal_False;
356*cdf0e10cSrcweir 	} catch (sql::MethodNotImplementedException) {
357*cdf0e10cSrcweir 		mysqlc_sdbc_driver::throwFeatureNotImplementedException("OResultSetMetaData::getMetaData", *this);
358*cdf0e10cSrcweir 	} catch (sql::SQLException &e) {
359*cdf0e10cSrcweir         mysqlc_sdbc_driver::translateAndThrow(e, *this, m_encoding);
360*cdf0e10cSrcweir 	}
361*cdf0e10cSrcweir 	return sal_False; // fool compiler
362*cdf0e10cSrcweir }
363*cdf0e10cSrcweir /* }}} */
364*cdf0e10cSrcweir 
365*cdf0e10cSrcweir 
366*cdf0e10cSrcweir /* {{{ OResultSetMetaData::isSearchable() -I- */
367*cdf0e10cSrcweir sal_Bool SAL_CALL OResultSetMetaData::isSearchable(sal_Int32 column)
368*cdf0e10cSrcweir 	throw(SQLException, RuntimeException)
369*cdf0e10cSrcweir {
370*cdf0e10cSrcweir 	OSL_TRACE("OResultSetMetaData::isSearchable");
371*cdf0e10cSrcweir 	checkColumnIndex(column);
372*cdf0e10cSrcweir 
373*cdf0e10cSrcweir 	try {
374*cdf0e10cSrcweir 		return meta->isSearchable(column)? sal_True:sal_False;
375*cdf0e10cSrcweir 	} catch (sql::MethodNotImplementedException) {
376*cdf0e10cSrcweir 		mysqlc_sdbc_driver::throwFeatureNotImplementedException("OResultSetMetaData::getMetaData", *this);
377*cdf0e10cSrcweir 	} catch (sql::SQLException &e) {
378*cdf0e10cSrcweir         mysqlc_sdbc_driver::translateAndThrow(e, *this, m_encoding);
379*cdf0e10cSrcweir 	}
380*cdf0e10cSrcweir 	return sal_False; // fool compiler
381*cdf0e10cSrcweir }
382*cdf0e10cSrcweir /* }}} */
383*cdf0e10cSrcweir 
384*cdf0e10cSrcweir 
385*cdf0e10cSrcweir /* {{{ OResultSetMetaData::isReadOnly() -I- */
386*cdf0e10cSrcweir sal_Bool SAL_CALL OResultSetMetaData::isReadOnly(sal_Int32 column)
387*cdf0e10cSrcweir 	throw(SQLException, RuntimeException)
388*cdf0e10cSrcweir {
389*cdf0e10cSrcweir 	OSL_TRACE("OResultSetMetaData::isReadOnly");
390*cdf0e10cSrcweir 	checkColumnIndex(column);
391*cdf0e10cSrcweir 
392*cdf0e10cSrcweir 	try {
393*cdf0e10cSrcweir 		return meta->isReadOnly(column)? sal_True:sal_False;
394*cdf0e10cSrcweir 	} catch (sql::MethodNotImplementedException) {
395*cdf0e10cSrcweir 		mysqlc_sdbc_driver::throwFeatureNotImplementedException("OResultSetMetaData::getMetaData", *this);
396*cdf0e10cSrcweir 	} catch (sql::SQLException &e) {
397*cdf0e10cSrcweir         mysqlc_sdbc_driver::translateAndThrow(e, *this, m_encoding);
398*cdf0e10cSrcweir 	}
399*cdf0e10cSrcweir 	return sal_False; // fool compiler
400*cdf0e10cSrcweir }
401*cdf0e10cSrcweir /* }}} */
402*cdf0e10cSrcweir 
403*cdf0e10cSrcweir 
404*cdf0e10cSrcweir /* {{{ OResultSetMetaData::isDefinitelyWritable() -I- */
405*cdf0e10cSrcweir sal_Bool SAL_CALL OResultSetMetaData::isDefinitelyWritable(sal_Int32 column)
406*cdf0e10cSrcweir 	throw(SQLException, RuntimeException)
407*cdf0e10cSrcweir {
408*cdf0e10cSrcweir 	OSL_TRACE("OResultSetMetaData::isDefinitelyWritable");
409*cdf0e10cSrcweir 	checkColumnIndex(column);
410*cdf0e10cSrcweir 
411*cdf0e10cSrcweir 	try {
412*cdf0e10cSrcweir 		return meta->isDefinitelyWritable(column)? sal_True:sal_False;
413*cdf0e10cSrcweir 	} catch (sql::MethodNotImplementedException) {
414*cdf0e10cSrcweir 		mysqlc_sdbc_driver::throwFeatureNotImplementedException("OResultSetMetaData::getMetaData", *this);
415*cdf0e10cSrcweir 	} catch (sql::SQLException &e) {
416*cdf0e10cSrcweir         mysqlc_sdbc_driver::translateAndThrow(e, *this, m_encoding);
417*cdf0e10cSrcweir 	}
418*cdf0e10cSrcweir 	return sal_False; // fool compiler
419*cdf0e10cSrcweir }
420*cdf0e10cSrcweir /* }}} */
421*cdf0e10cSrcweir 
422*cdf0e10cSrcweir 
423*cdf0e10cSrcweir /* {{{ OResultSetMetaData::isWritable() -I- */
424*cdf0e10cSrcweir sal_Bool SAL_CALL OResultSetMetaData::isWritable(sal_Int32 column)
425*cdf0e10cSrcweir 	throw(SQLException, RuntimeException)
426*cdf0e10cSrcweir {
427*cdf0e10cSrcweir 	OSL_TRACE("OResultSetMetaData::isWritable");
428*cdf0e10cSrcweir 	checkColumnIndex(column);
429*cdf0e10cSrcweir 
430*cdf0e10cSrcweir 	try {
431*cdf0e10cSrcweir 		return meta->isWritable(column)? sal_True:sal_False;
432*cdf0e10cSrcweir 	} catch (sql::MethodNotImplementedException) {
433*cdf0e10cSrcweir 		mysqlc_sdbc_driver::throwFeatureNotImplementedException("OResultSetMetaData::getMetaData", *this);
434*cdf0e10cSrcweir 	} catch (sql::SQLException &e) {
435*cdf0e10cSrcweir         mysqlc_sdbc_driver::translateAndThrow(e, *this, m_encoding);
436*cdf0e10cSrcweir 	}
437*cdf0e10cSrcweir 	return sal_False; // fool compiler
438*cdf0e10cSrcweir }
439*cdf0e10cSrcweir /* }}} */
440*cdf0e10cSrcweir 
441*cdf0e10cSrcweir 
442*cdf0e10cSrcweir /* {{{ OResultSetMetaData::checkColumnIndex() -I- */
443*cdf0e10cSrcweir void OResultSetMetaData::checkColumnIndex(sal_Int32 columnIndex)
444*cdf0e10cSrcweir 	throw (SQLException, RuntimeException)
445*cdf0e10cSrcweir {
446*cdf0e10cSrcweir 	OSL_TRACE("OResultSetMetaData::checkColumnIndex");
447*cdf0e10cSrcweir 	if (columnIndex < 1 || columnIndex > (sal_Int32) meta->getColumnCount()) {
448*cdf0e10cSrcweir 
449*cdf0e10cSrcweir         ::rtl::OUStringBuffer buf;
450*cdf0e10cSrcweir         buf.appendAscii( "Column index out of range (expected 1 to " );
451*cdf0e10cSrcweir         buf.append( sal_Int32( meta->getColumnCount() ) );
452*cdf0e10cSrcweir         buf.appendAscii( ", got " );
453*cdf0e10cSrcweir         buf.append( sal_Int32( columnIndex ) );
454*cdf0e10cSrcweir         buf.append( sal_Unicode( '.' ) );
455*cdf0e10cSrcweir 		throw SQLException( buf.makeStringAndClear(), *this, OUString(), 1, Any() );
456*cdf0e10cSrcweir 	}
457*cdf0e10cSrcweir }
458*cdf0e10cSrcweir /* }}} */
459*cdf0e10cSrcweir 
460*cdf0e10cSrcweir /*
461*cdf0e10cSrcweir  * Local variables:
462*cdf0e10cSrcweir  * tab-width: 4
463*cdf0e10cSrcweir  * c-basic-offset: 4
464*cdf0e10cSrcweir  * End:
465*cdf0e10cSrcweir  * vim600: noet sw=4 ts=4 fdm=marker
466*cdf0e10cSrcweir  * vim<600: noet sw=4 ts=4
467*cdf0e10cSrcweir  */
468*cdf0e10cSrcweir 
469