1 /**************************************************************
2  *
3  * Licensed to the Apache Software Foundation (ASF) under one
4  * or more contributor license agreements.  See the NOTICE file
5  * distributed with this work for additional information
6  * regarding copyright ownership.  The ASF licenses this file
7  * to you under the Apache License, Version 2.0 (the
8  * "License"); you may not use this file except in compliance
9  * with the License.  You may obtain a copy of the License at
10  *
11  *   http://www.apache.org/licenses/LICENSE-2.0
12  *
13  * Unless required by applicable law or agreed to in writing,
14  * software distributed under the License is distributed on an
15  * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
16  * KIND, either express or implied.  See the License for the
17  * specific language governing permissions and limitations
18  * under the License.
19  *
20  *************************************************************/
21 
22 
23 
24 // MARKER(update_precomp.py): autogen include statement, do not remove
25 #include "precompiled_dbaccess.hxx"
26 #ifndef _DBA_COREAPI_RESULTSET_HXX_
27 #include <resultset.hxx>
28 #endif
29 #ifndef DBACCESS_SHARED_DBASTRINGS_HRC
30 #include "dbastrings.hrc"
31 #endif
32 #ifndef _DBASHARED_APITOOLS_HXX_
33 #include "apitools.hxx"
34 #endif
35 #ifndef _COM_SUN_STAR_LANG_DISPOSEDEXCEPTION_HPP_
36 #include <com/sun/star/lang/DisposedException.hpp>
37 #endif
38 #ifndef _COM_SUN_STAR_SDBC_RESULTSETTYPE_HPP_
39 #include <com/sun/star/sdbc/ResultSetType.hpp>
40 #endif
41 #ifndef _CPPUHELPER_TYPEPROVIDER_HXX_
42 #include <cppuhelper/typeprovider.hxx>
43 #endif
44 #ifndef _COMPHELPER_PROPERTY_HXX_
45 #include <comphelper/property.hxx>
46 #endif
47 #ifndef _COMPHELPER_SEQUENCE_HXX_
48 #include <comphelper/sequence.hxx>
49 #endif
50 #ifndef _COMPHELPER_TYPES_HXX_
51 #include <comphelper/types.hxx>
52 #endif
53 #ifndef _TOOLS_DEBUG_HXX //autogen
54 #include <tools/debug.hxx>
55 #endif
56 #ifndef TOOLS_DIAGNOSE_EX_H
57 #include <tools/diagnose_ex.h>
58 #endif
59 #ifndef _DBA_COREAPI_DATACOLUMN_HXX_
60 #include <datacolumn.hxx>
61 #endif
62 #ifndef _COM_SUN_STAR_BEANS_PROPERTYATTRIBUTE_HPP_
63 #include <com/sun/star/beans/PropertyAttribute.hpp>
64 #endif
65 #ifndef _DBHELPER_DBEXCEPTION_HXX_
66 #include <connectivity/dbexception.hxx>
67 #endif
68 #ifndef _CONNECTIVITY_DBTOOLS_HXX_
69 #include <connectivity/dbtools.hxx>
70 #endif
71 #ifndef _CPPUHELPER_EXC_HLP_HXX_
72 #include <cppuhelper/exc_hlp.hxx>
73 #endif
74 #ifndef _OSL_THREAD_H_
75 #include <osl/thread.h>
76 #endif
77 #include <rtl/logfile.hxx>
78 
79 
80 using namespace ::com::sun::star::sdbc;
81 using namespace ::com::sun::star::sdbcx;
82 //using namespace ::com::sun::star::sdb;
83 using namespace ::com::sun::star::beans;
84 using namespace ::com::sun::star::uno;
85 using namespace ::com::sun::star::lang;
86 using namespace ::com::sun::star::container;
87 using namespace ::cppu;
88 using namespace ::osl;
89 using namespace dbaccess;
90 using namespace dbtools;
91 
DBG_NAME(OResultSet)92 DBG_NAME(OResultSet)
93 
94 //--------------------------------------------------------------------------
95 OResultSet::OResultSet(const ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XResultSet >& _xResultSet,
96 					   const ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface >& _xStatement,
97 					   sal_Bool _bCaseSensitive)
98 		   :OResultSetBase(m_aMutex)
99 		   ,OPropertySetHelper(OResultSetBase::rBHelper)
100 		   ,m_xDelegatorResultSet(_xResultSet)
101            ,m_aWarnings( Reference< XWarningsSupplier >( _xResultSet, UNO_QUERY ) )
102 		   ,m_bIsBookmarkable(sal_False)
103 {
104     RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "OResultSet::OResultSet" );
105 	DBG_CTOR(OResultSet, NULL);
106 
107 	m_pColumns = new OColumns(*this, m_aMutex, _bCaseSensitive, ::std::vector< ::rtl::OUString>(), NULL,NULL);
108 
109 	try
110 	{
111 		m_aStatement = _xStatement;
112         m_xDelegatorResultSetUpdate = m_xDelegatorResultSetUpdate.query( m_xDelegatorResultSet );
113 		m_xDelegatorRow = m_xDelegatorRow.query( m_xDelegatorResultSet );
114 		m_xDelegatorRowUpdate = m_xDelegatorRowUpdate.query( m_xDelegatorResultSet );
115 
116 		Reference< XPropertySet > xSet(m_xDelegatorResultSet, UNO_QUERY);
117 		xSet->getPropertyValue(PROPERTY_RESULTSETTYPE) >>= m_nResultSetType;
118 		xSet->getPropertyValue(PROPERTY_RESULTSETCONCURRENCY) >>= m_nResultSetConcurrency;
119 
120 		// test for Bookmarks
121 		if (ResultSetType::FORWARD_ONLY != m_nResultSetType)
122 		{
123 			Reference <XPropertySetInfo > xInfo(xSet->getPropertySetInfo());
124 			if (xInfo->hasPropertyByName(PROPERTY_ISBOOKMARKABLE))
125             {
126 				m_bIsBookmarkable = ::comphelper::getBOOL(xSet->getPropertyValue(PROPERTY_ISBOOKMARKABLE));
127                 OSL_ENSURE( !m_bIsBookmarkable || Reference< XRowLocate >(m_xDelegatorResultSet, UNO_QUERY).is(),
128                     "OResultSet::OResultSet: aggregate is inconsistent in it's bookmarkable attribute!" );
129                 m_bIsBookmarkable = m_bIsBookmarkable && Reference< XRowLocate >(m_xDelegatorResultSet, UNO_QUERY).is();
130             }
131 		}
132 	}
133 	catch(Exception&)
134 	{
135 	}
136 }
137 
138 //--------------------------------------------------------------------------
~OResultSet()139 OResultSet::~OResultSet()
140 {
141     m_pColumns->acquire();
142 	m_pColumns->disposing();
143     delete m_pColumns;
144 
145     DBG_DTOR(OResultSet, NULL);
146 }
147 
148 // com::sun::star::lang::XTypeProvider
149 //--------------------------------------------------------------------------
getTypes()150 Sequence< Type > OResultSet::getTypes() throw (RuntimeException)
151 {
152     RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "OResultSet::getTypes" );
153 	OTypeCollection aTypes(::getCppuType( (const Reference< XPropertySet > *)0 ),
154 						   OResultSetBase::getTypes());
155 
156 	return aTypes.getTypes();
157 }
158 
159 //--------------------------------------------------------------------------
getImplementationId()160 Sequence< sal_Int8 > OResultSet::getImplementationId() throw (RuntimeException)
161 {
162     RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "OResultSet::getImplementationId" );
163 	static OImplementationId * pId = 0;
164 	if (! pId)
165 	{
166 		MutexGuard aGuard( Mutex::getGlobalMutex() );
167 		if (! pId)
168 		{
169 			static OImplementationId aId;
170 			pId = &aId;
171 		}
172 	}
173 	return pId->getImplementationId();
174 }
175 
176 // com::sun::star::uno::XInterface
177 //--------------------------------------------------------------------------
queryInterface(const Type & rType)178 Any OResultSet::queryInterface( const Type & rType ) throw (RuntimeException)
179 {
180     //RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "OResultSet::queryInterface" );
181 	Any aIface = OResultSetBase::queryInterface( rType );
182 	if (!aIface.hasValue())
183 		aIface = ::cppu::queryInterface(
184 					rType,
185 					static_cast< XPropertySet * >( this ));
186 
187 	return aIface;
188 }
189 
190 //--------------------------------------------------------------------------
acquire()191 void OResultSet::acquire() throw ()
192 {
193 	OResultSetBase::acquire();
194 }
195 
196 //--------------------------------------------------------------------------
release()197 void OResultSet::release() throw ()
198 {
199 	OResultSetBase::release();
200 }
201 
202 
203 // OResultSetBase
204 //------------------------------------------------------------------------------
disposing()205 void OResultSet::disposing()
206 {
207     RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "OResultSet::disposing" );
208 	OPropertySetHelper::disposing();
209 
210 	MutexGuard aGuard(m_aMutex);
211 
212 	// free the columns
213 	m_pColumns->disposing();
214 
215 	// close the pending result set
216 	Reference< XCloseable > (m_xDelegatorResultSet, UNO_QUERY)->close();
217 
218 	m_xDelegatorResultSet = NULL;
219 	m_xDelegatorRow = NULL;
220 	m_xDelegatorRowUpdate = NULL;
221 
222 	m_aStatement = Reference< XInterface >();
223 }
224 
225 // XCloseable
226 //------------------------------------------------------------------------------
close(void)227 void OResultSet::close(void) throw( SQLException, RuntimeException )
228 {
229     RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "OResultSet::close" );
230 	{
231 		MutexGuard aGuard( m_aMutex );
232 		::connectivity::checkDisposed(OResultSetBase::rBHelper.bDisposed);
233 	}
234 	dispose();
235 }
236 
237 // XServiceInfo
238 //------------------------------------------------------------------------------
getImplementationName()239 rtl::OUString OResultSet::getImplementationName(  ) throw(RuntimeException)
240 {
241     //RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "OResultSet::getImplementationName" );
242 	return rtl::OUString::createFromAscii("com.sun.star.sdb.OResultSet");
243 }
244 
245 //------------------------------------------------------------------------------
supportsService(const::rtl::OUString & _rServiceName)246 sal_Bool OResultSet::supportsService( const ::rtl::OUString& _rServiceName ) throw (RuntimeException)
247 {
248     //RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "OResultSet::supportsService" );
249 	return ::comphelper::findValue(getSupportedServiceNames(), _rServiceName, sal_True).getLength() != 0;
250 }
251 
252 //------------------------------------------------------------------------------
getSupportedServiceNames()253 Sequence< ::rtl::OUString > OResultSet::getSupportedServiceNames(  ) throw (RuntimeException)
254 {
255     //RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "OResultSet::getSupportedServiceNames" );
256 	Sequence< ::rtl::OUString > aSNS( 2 );
257 	aSNS[0] = SERVICE_SDBC_RESULTSET;
258 	aSNS[1] = SERVICE_SDB_RESULTSET;
259 	return aSNS;
260 }
261 
262 // com::sun::star::beans::XPropertySet
263 //------------------------------------------------------------------------------
getPropertySetInfo()264 Reference< XPropertySetInfo > OResultSet::getPropertySetInfo() throw (RuntimeException)
265 {
266     //RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "OResultSet::getPropertySetInfo" );
267 	return createPropertySetInfo( getInfoHelper() ) ;
268 }
269 
270 // comphelper::OPropertyArrayUsageHelper
271 //------------------------------------------------------------------------------
createArrayHelper() const272 ::cppu::IPropertyArrayHelper* OResultSet::createArrayHelper( ) const
273 {
274     //RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "OResultSet::createArrayHelper" );
275 	BEGIN_PROPERTY_HELPER(6)
276 		DECL_PROP1(CURSORNAME,				::rtl::OUString,	READONLY);
277 		DECL_PROP0(FETCHDIRECTION,			sal_Int32);
278 		DECL_PROP0(FETCHSIZE,				sal_Int32);
279 		DECL_PROP1_BOOL(ISBOOKMARKABLE,			READONLY);
280 		DECL_PROP1(RESULTSETCONCURRENCY,	sal_Int32,		READONLY);
281 		DECL_PROP1(RESULTSETTYPE,			sal_Int32,		READONLY);
282 	END_PROPERTY_HELPER();
283 }
284 
285 // cppu::OPropertySetHelper
286 //------------------------------------------------------------------------------
getInfoHelper()287 ::cppu::IPropertyArrayHelper& OResultSet::getInfoHelper()
288 {
289     //RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "OResultSet::getInfoHelper" );
290 	return *getArrayHelper();
291 }
292 
293 //------------------------------------------------------------------------------
convertFastPropertyValue(Any & rConvertedValue,Any & rOldValue,sal_Int32 nHandle,const Any & rValue)294 sal_Bool OResultSet::convertFastPropertyValue(Any & rConvertedValue, Any & rOldValue, sal_Int32 nHandle, const Any& rValue ) throw( IllegalArgumentException  )
295 {
296     //RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "OResultSet::convertFastPropertyValue" );
297     // be lazy ...
298     rConvertedValue = rValue;
299     getFastPropertyValue( rOldValue, nHandle );
300     return sal_True;
301 }
302 
303 //------------------------------------------------------------------------------
setFastPropertyValue_NoBroadcast(sal_Int32 nHandle,const Any & rValue)304 void OResultSet::setFastPropertyValue_NoBroadcast( sal_Int32 nHandle, const Any& rValue ) throw (Exception)
305 {
306     //RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "OResultSet::setFastPropertyValue_NoBroadcast" );
307 	// set it for the driver result set
308 	Reference< XPropertySet > xSet(m_xDelegatorResultSet, UNO_QUERY);
309 	switch (nHandle)
310 	{
311 		case PROPERTY_ID_FETCHDIRECTION:
312 			xSet->setPropertyValue(PROPERTY_FETCHDIRECTION, rValue);
313 			break;
314 		case PROPERTY_ID_FETCHSIZE:
315 			xSet->setPropertyValue(PROPERTY_FETCHSIZE, rValue);
316 			break;
317 		default:
318 			DBG_ERROR("unknown Property");
319 	}
320 }
321 
322 //------------------------------------------------------------------------------
getFastPropertyValue(Any & rValue,sal_Int32 nHandle) const323 void OResultSet::getFastPropertyValue( Any& rValue, sal_Int32 nHandle ) const
324 {
325     //RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "OResultSet::getFastPropertyValue" );
326 	switch (nHandle)
327 	{
328 		case PROPERTY_ID_ISBOOKMARKABLE:
329 		{
330 			sal_Bool bVal = m_bIsBookmarkable;
331 			rValue.setValue(&bVal, getBooleanCppuType());
332 		}	break;
333 		default:
334 		{
335 			// get the property name
336 			::rtl::OUString aPropName;
337 			sal_Int16 nAttributes;
338 			const_cast<OResultSet*>(this)->getInfoHelper().
339 				fillPropertyMembersByHandle(&aPropName, &nAttributes, nHandle);
340 			OSL_ENSURE(aPropName.getLength(), "property not found?");
341 
342 			// now read the value
343 			rValue = Reference< XPropertySet >(m_xDelegatorResultSet, UNO_QUERY)->getPropertyValue(aPropName);
344 		}
345 	}
346 }
347 
348 // XWarningsSupplier
349 //------------------------------------------------------------------------------
getWarnings(void)350 Any OResultSet::getWarnings(void) throw( SQLException, RuntimeException )
351 {
352     RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "OResultSet::getWarnings" );
353 	MutexGuard aGuard(m_aMutex);
354 	::connectivity::checkDisposed(OResultSetBase::rBHelper.bDisposed);
355     return m_aWarnings.getWarnings();
356 }
357 
358 //------------------------------------------------------------------------------
clearWarnings(void)359 void OResultSet::clearWarnings(void) throw( SQLException, RuntimeException )
360 {
361     RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "OResultSet::clearWarnings" );
362 	MutexGuard aGuard(m_aMutex);
363 	::connectivity::checkDisposed(OResultSetBase::rBHelper.bDisposed);
364     m_aWarnings.clearWarnings();
365 }
366 
367 // ::com::sun::star::sdbc::XResultSetMetaDataSupplier
368 //------------------------------------------------------------------------------
getMetaData(void)369 Reference< XResultSetMetaData > OResultSet::getMetaData(void) throw( SQLException, RuntimeException )
370 {
371     RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "OResultSet::getMetaData" );
372 	MutexGuard aGuard(m_aMutex);
373 	::connectivity::checkDisposed(OResultSetBase::rBHelper.bDisposed);
374 
375 	return Reference< XResultSetMetaDataSupplier >(m_xDelegatorResultSet, UNO_QUERY)->getMetaData();
376 }
377 
378 // ::com::sun::star::sdbc::XColumnLocate
379 //------------------------------------------------------------------------------
findColumn(const rtl::OUString & columnName)380 sal_Int32 OResultSet::findColumn(const rtl::OUString& columnName) throw( SQLException, RuntimeException )
381 {
382     RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "OResultSet::findColumn" );
383 	MutexGuard aGuard(m_aMutex);
384 	::connectivity::checkDisposed(OResultSetBase::rBHelper.bDisposed);
385 
386 	return Reference< XColumnLocate >(m_xDelegatorResultSet, UNO_QUERY)->findColumn(columnName);
387 }
388 
389 //------------------------------------------------------------------------------
390 namespace
391 {
lcl_getDBMetaDataFromStatement_nothrow(const Reference<XInterface> & _rxStatement)392     static Reference< XDatabaseMetaData > lcl_getDBMetaDataFromStatement_nothrow( const Reference< XInterface >& _rxStatement )
393     {
394         Reference< XDatabaseMetaData > xDBMetaData;
395         try
396         {
397             Reference< XStatement > xStatement( _rxStatement, UNO_QUERY );
398             Reference< XPreparedStatement > xPreparedStatement( _rxStatement, UNO_QUERY );
399             Reference< XConnection > xConn;
400             if ( xStatement.is() )
401                 xConn = xStatement->getConnection();
402             else if ( xPreparedStatement.is() )
403                 xConn = xPreparedStatement->getConnection();
404             if ( xConn.is() )
405                 xDBMetaData = xConn->getMetaData();
406         }
407         catch( const Exception& )
408         {
409             DBG_UNHANDLED_EXCEPTION();
410         }
411         return xDBMetaData;
412     }
413 }
414 // ::com::sun::star::sdbcx::XColumnsSupplier
415 //------------------------------------------------------------------------------
getColumns(void)416 Reference< ::com::sun::star::container::XNameAccess > OResultSet::getColumns(void) throw( RuntimeException )
417 {
418     RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "OResultSet::getColumns" );
419 	MutexGuard aGuard(m_aMutex);
420 	::connectivity::checkDisposed(OResultSetBase::rBHelper.bDisposed);
421 
422 	// do we have to populate the columns
423 	if (!m_pColumns->isInitialized())
424 	{
425 		// get the metadata
426 		Reference< XResultSetMetaData > xMetaData = Reference< XResultSetMetaDataSupplier >(m_xDelegatorResultSet, UNO_QUERY)->getMetaData();
427 
428         sal_Int32 nColCount = 0;
429 		// do we have columns
430 		try
431 		{
432             Reference< XDatabaseMetaData > xDBMetaData( lcl_getDBMetaDataFromStatement_nothrow( getStatement() ) );
433             nColCount = xMetaData->getColumnCount();
434 
435 			for ( sal_Int32 i = 0; i < nColCount; ++i)
436 			{
437 				// retrieve the name of the column
438 				rtl::OUString sName = xMetaData->getColumnName(i + 1);
439 				ODataColumn* pColumn = new ODataColumn(xMetaData, m_xDelegatorRow, m_xDelegatorRowUpdate, i + 1, xDBMetaData);
440 
441                 // don't silently assume that the name is unique - result set implementations
442                 // are allowed to return duplicate names, but we are required to have
443                 // unique column names
444                 if ( m_pColumns->hasByName( sName ) )
445                     sName = ::dbtools::createUniqueName( m_pColumns, sName );
446 
447 			    m_pColumns->append( sName, pColumn );
448 			}
449 		}
450 		catch ( const SQLException& )
451 		{
452             DBG_UNHANDLED_EXCEPTION();
453 		}
454 		m_pColumns->setInitialized();
455 
456     #if OSL_DEBUG_LEVEL > 0
457         // some sanity checks. Especially in case we auto-adjusted the column names above,
458         // this might be reasonable
459         try
460         {
461             const Reference< XNameAccess > xColNames( static_cast< XNameAccess* >( m_pColumns ), UNO_SET_THROW );
462             const Sequence< ::rtl::OUString > aNames( xColNames->getElementNames() );
463             OSL_POSTCOND( aNames.getLength() == nColCount,
464                 "OResultSet::getColumns: invalid column count!" );
465             for (   const ::rtl::OUString* pName = aNames.getConstArray();
466                     pName != aNames.getConstArray() + aNames.getLength();
467                     ++pName
468                 )
469             {
470                 Reference< XPropertySet > xColProps( xColNames->getByName( *pName ), UNO_QUERY_THROW );
471                 ::rtl::OUString sName;
472                 OSL_VERIFY( xColProps->getPropertyValue( PROPERTY_NAME ) >>= sName );
473                 OSL_POSTCOND( sName == *pName, "OResultSet::getColumns: invalid column name!" );
474             }
475 
476         }
477         catch( const Exception& )
478         {
479             DBG_UNHANDLED_EXCEPTION();
480         }
481     #endif
482 	}
483 	return m_pColumns;
484 }
485 
486 // ::com::sun::star::sdbc::XRow
487 //------------------------------------------------------------------------------
wasNull(void)488 sal_Bool OResultSet::wasNull(void) throw( SQLException, RuntimeException )
489 {
490     RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "OResultSet::wasNull" );
491 	MutexGuard aGuard(m_aMutex);
492 	::connectivity::checkDisposed(OResultSetBase::rBHelper.bDisposed);
493 
494 	return m_xDelegatorRow->wasNull();
495 }
496 //------------------------------------------------------------------------------
getString(sal_Int32 columnIndex)497 rtl::OUString OResultSet::getString(sal_Int32 columnIndex) throw( SQLException, RuntimeException )
498 {
499     //RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "OResultSet::getString" );
500 	MutexGuard aGuard(m_aMutex);
501 	::connectivity::checkDisposed(OResultSetBase::rBHelper.bDisposed);
502 
503 	return m_xDelegatorRow->getString(columnIndex);
504 }
505 //------------------------------------------------------------------------------
getBoolean(sal_Int32 columnIndex)506 sal_Bool OResultSet::getBoolean(sal_Int32 columnIndex) throw( SQLException, RuntimeException )
507 {
508     //RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "OResultSet::getBoolean" );
509 	MutexGuard aGuard(m_aMutex);
510 	::connectivity::checkDisposed(OResultSetBase::rBHelper.bDisposed);
511 
512 	return m_xDelegatorRow->getBoolean(columnIndex);
513 }
514 //------------------------------------------------------------------------------
getByte(sal_Int32 columnIndex)515 sal_Int8 OResultSet::getByte(sal_Int32 columnIndex) throw( SQLException, RuntimeException )
516 {
517     RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "OResultSet::getByte" );
518 	MutexGuard aGuard(m_aMutex);
519 	::connectivity::checkDisposed(OResultSetBase::rBHelper.bDisposed);
520 
521 	return m_xDelegatorRow->getByte(columnIndex);
522 }
523 //------------------------------------------------------------------------------
getShort(sal_Int32 columnIndex)524 sal_Int16 OResultSet::getShort(sal_Int32 columnIndex) throw( SQLException, RuntimeException )
525 {
526     RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "OResultSet::getShort" );
527 	MutexGuard aGuard(m_aMutex);
528 	::connectivity::checkDisposed(OResultSetBase::rBHelper.bDisposed);
529 
530 	return m_xDelegatorRow->getShort(columnIndex);
531 }
532 //------------------------------------------------------------------------------
getInt(sal_Int32 columnIndex)533 sal_Int32 OResultSet::getInt(sal_Int32 columnIndex) throw( SQLException, RuntimeException )
534 {
535     RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "OResultSet::getInt" );
536 	MutexGuard aGuard(m_aMutex);
537 	::connectivity::checkDisposed(OResultSetBase::rBHelper.bDisposed);
538 
539 	return m_xDelegatorRow->getInt(columnIndex);
540 }
541 //------------------------------------------------------------------------------
getLong(sal_Int32 columnIndex)542 sal_Int64 OResultSet::getLong(sal_Int32 columnIndex) throw( SQLException, RuntimeException )
543 {
544     RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "OResultSet::getLong" );
545 	MutexGuard aGuard(m_aMutex);
546 	::connectivity::checkDisposed(OResultSetBase::rBHelper.bDisposed);
547 
548 	return m_xDelegatorRow->getLong(columnIndex);
549 }
550 //------------------------------------------------------------------------------
getFloat(sal_Int32 columnIndex)551 float OResultSet::getFloat(sal_Int32 columnIndex) throw( SQLException, RuntimeException )
552 {
553     RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "OResultSet::getFloat" );
554 	MutexGuard aGuard(m_aMutex);
555 	::connectivity::checkDisposed(OResultSetBase::rBHelper.bDisposed);
556 
557 	return m_xDelegatorRow->getFloat(columnIndex);
558 }
559 //------------------------------------------------------------------------------
getDouble(sal_Int32 columnIndex)560 double OResultSet::getDouble(sal_Int32 columnIndex) throw( SQLException, RuntimeException )
561 {
562     RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "OResultSet::getDouble" );
563 	MutexGuard aGuard(m_aMutex);
564 	::connectivity::checkDisposed(OResultSetBase::rBHelper.bDisposed);
565 
566 	return m_xDelegatorRow->getDouble(columnIndex);
567 }
568 //------------------------------------------------------------------------------
getBytes(sal_Int32 columnIndex)569 Sequence< sal_Int8 > OResultSet::getBytes(sal_Int32 columnIndex) throw( SQLException, RuntimeException )
570 {
571     RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "OResultSet::getBytes" );
572 	MutexGuard aGuard(m_aMutex);
573 	::connectivity::checkDisposed(OResultSetBase::rBHelper.bDisposed);
574 
575 	return m_xDelegatorRow->getBytes(columnIndex);
576 }
577 //------------------------------------------------------------------------------
getDate(sal_Int32 columnIndex)578 ::com::sun::star::util::Date OResultSet::getDate(sal_Int32 columnIndex) throw( SQLException, RuntimeException )
579 {
580     RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "OResultSet::getDate" );
581 	MutexGuard aGuard(m_aMutex);
582 	::connectivity::checkDisposed(OResultSetBase::rBHelper.bDisposed);
583 
584 	return m_xDelegatorRow->getDate(columnIndex);
585 }
586 //------------------------------------------------------------------------------
getTime(sal_Int32 columnIndex)587 ::com::sun::star::util::Time OResultSet::getTime(sal_Int32 columnIndex) throw( SQLException, RuntimeException )
588 {
589     RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "OResultSet::getTime" );
590 	MutexGuard aGuard(m_aMutex);
591 	::connectivity::checkDisposed(OResultSetBase::rBHelper.bDisposed);
592 
593 	return m_xDelegatorRow->getTime(columnIndex);
594 }
595 //------------------------------------------------------------------------------
getTimestamp(sal_Int32 columnIndex)596 ::com::sun::star::util::DateTime OResultSet::getTimestamp(sal_Int32 columnIndex) throw( SQLException, RuntimeException )
597 {
598     RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "OResultSet::getTimestamp" );
599 	MutexGuard aGuard(m_aMutex);
600 	::connectivity::checkDisposed(OResultSetBase::rBHelper.bDisposed);
601 
602 	return m_xDelegatorRow->getTimestamp(columnIndex);
603 }
604 //------------------------------------------------------------------------------
getBinaryStream(sal_Int32 columnIndex)605 Reference< ::com::sun::star::io::XInputStream >  OResultSet::getBinaryStream(sal_Int32 columnIndex) throw( SQLException, RuntimeException )
606 {
607     RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "OResultSet::getBinaryStream" );
608 	MutexGuard aGuard(m_aMutex);
609 	::connectivity::checkDisposed(OResultSetBase::rBHelper.bDisposed);
610 
611 	return m_xDelegatorRow->getBinaryStream(columnIndex);
612 }
613 //------------------------------------------------------------------------------
getCharacterStream(sal_Int32 columnIndex)614 Reference< ::com::sun::star::io::XInputStream >  OResultSet::getCharacterStream(sal_Int32 columnIndex) throw( SQLException, RuntimeException )
615 {
616     RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "OResultSet::getCharacterStream" );
617 	MutexGuard aGuard(m_aMutex);
618 	::connectivity::checkDisposed(OResultSetBase::rBHelper.bDisposed);
619 
620 	return m_xDelegatorRow->getCharacterStream(columnIndex);
621 }
622 //------------------------------------------------------------------------------
getObject(sal_Int32 columnIndex,const Reference<::com::sun::star::container::XNameAccess> & typeMap)623 Any OResultSet::getObject(sal_Int32 columnIndex, const Reference< ::com::sun::star::container::XNameAccess > & typeMap) throw( SQLException, RuntimeException )
624 {
625     RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "OResultSet::getObject" );
626 	MutexGuard aGuard(m_aMutex);
627 	::connectivity::checkDisposed(OResultSetBase::rBHelper.bDisposed);
628 
629 	return m_xDelegatorRow->getObject(columnIndex, typeMap);
630 }
631 //------------------------------------------------------------------------------
getRef(sal_Int32 columnIndex)632 Reference< XRef >  OResultSet::getRef(sal_Int32 columnIndex) throw( SQLException, RuntimeException )
633 {
634     RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "OResultSet::getRef" );
635 	MutexGuard aGuard(m_aMutex);
636 	::connectivity::checkDisposed(OResultSetBase::rBHelper.bDisposed);
637 
638 	return m_xDelegatorRow->getRef(columnIndex);
639 }
640 //------------------------------------------------------------------------------
getBlob(sal_Int32 columnIndex)641 Reference< XBlob >  OResultSet::getBlob(sal_Int32 columnIndex) throw( SQLException, RuntimeException )
642 {
643     RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "OResultSet::getBlob" );
644 	MutexGuard aGuard(m_aMutex);
645 	::connectivity::checkDisposed(OResultSetBase::rBHelper.bDisposed);
646 
647 	return m_xDelegatorRow->getBlob(columnIndex);
648 }
649 //------------------------------------------------------------------------------
getClob(sal_Int32 columnIndex)650 Reference< XClob >  OResultSet::getClob(sal_Int32 columnIndex) throw( SQLException, RuntimeException )
651 {
652     RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "OResultSet::getClob" );
653 	MutexGuard aGuard(m_aMutex);
654 	::connectivity::checkDisposed(OResultSetBase::rBHelper.bDisposed);
655 
656 	return m_xDelegatorRow->getClob(columnIndex);
657 }
658 //------------------------------------------------------------------------------
getArray(sal_Int32 columnIndex)659 Reference< XArray >  OResultSet::getArray(sal_Int32 columnIndex) throw( SQLException, RuntimeException )
660 {
661     RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "OResultSet::getArray" );
662 	MutexGuard aGuard(m_aMutex);
663 	::connectivity::checkDisposed(OResultSetBase::rBHelper.bDisposed);
664 
665 	return m_xDelegatorRow->getArray(columnIndex);
666 }
667 
668 // ::com::sun::star::sdbc::XRowUpdate
669 //------------------------------------------------------------------------------
updateNull(sal_Int32 columnIndex)670 void OResultSet::updateNull(sal_Int32 columnIndex) throw( SQLException, RuntimeException )
671 {
672     RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "OResultSet::updateNull" );
673 	MutexGuard aGuard(m_aMutex);
674 	::connectivity::checkDisposed(OResultSetBase::rBHelper.bDisposed);
675 
676 	checkReadOnly();
677 
678 	m_xDelegatorRowUpdate->updateNull(columnIndex);
679 }
680 
681 //------------------------------------------------------------------------------
updateBoolean(sal_Int32 columnIndex,sal_Bool x)682 void OResultSet::updateBoolean(sal_Int32 columnIndex, sal_Bool x) throw( SQLException, RuntimeException )
683 {
684     RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "OResultSet::updateBoolean" );
685 	MutexGuard aGuard(m_aMutex);
686 	::connectivity::checkDisposed(OResultSetBase::rBHelper.bDisposed);
687 
688 	checkReadOnly();
689 
690 	m_xDelegatorRowUpdate->updateBoolean(columnIndex, x);
691 }
692 //------------------------------------------------------------------------------
updateByte(sal_Int32 columnIndex,sal_Int8 x)693 void OResultSet::updateByte(sal_Int32 columnIndex, sal_Int8 x) throw( SQLException, RuntimeException )
694 {
695     RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "OResultSet::updateByte" );
696 	MutexGuard aGuard(m_aMutex);
697 	::connectivity::checkDisposed(OResultSetBase::rBHelper.bDisposed);
698 
699 	checkReadOnly();
700 
701 	m_xDelegatorRowUpdate->updateByte(columnIndex, x);
702 }
703 //------------------------------------------------------------------------------
updateShort(sal_Int32 columnIndex,sal_Int16 x)704 void OResultSet::updateShort(sal_Int32 columnIndex, sal_Int16 x) throw( SQLException, RuntimeException )
705 {
706     RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "OResultSet::updateShort" );
707 		MutexGuard aGuard(m_aMutex);
708 	::connectivity::checkDisposed(OResultSetBase::rBHelper.bDisposed);
709 
710 	checkReadOnly();
711 
712 	m_xDelegatorRowUpdate->updateShort(columnIndex, x);
713 }
714 //------------------------------------------------------------------------------
updateInt(sal_Int32 columnIndex,sal_Int32 x)715 void OResultSet::updateInt(sal_Int32 columnIndex, sal_Int32 x) throw( SQLException, RuntimeException )
716 {
717     RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "OResultSet::updateInt" );
718 	MutexGuard aGuard(m_aMutex);
719 	::connectivity::checkDisposed(OResultSetBase::rBHelper.bDisposed);
720 
721 	checkReadOnly();
722 
723 	m_xDelegatorRowUpdate->updateInt(columnIndex, x);
724 }
725 //------------------------------------------------------------------------------
updateLong(sal_Int32 columnIndex,sal_Int64 x)726 void OResultSet::updateLong(sal_Int32 columnIndex, sal_Int64 x) throw( SQLException, RuntimeException )
727 {
728     RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "OResultSet::updateLong" );
729 	MutexGuard aGuard(m_aMutex);
730 	::connectivity::checkDisposed(OResultSetBase::rBHelper.bDisposed);
731 
732 	checkReadOnly();
733 
734 	m_xDelegatorRowUpdate->updateLong(columnIndex, x);
735 }
736 //------------------------------------------------------------------------------
updateFloat(sal_Int32 columnIndex,float x)737 void OResultSet::updateFloat(sal_Int32 columnIndex, float x) throw( SQLException, RuntimeException )
738 {
739     RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "OResultSet::updateFloat" );
740 	MutexGuard aGuard(m_aMutex);
741 	::connectivity::checkDisposed(OResultSetBase::rBHelper.bDisposed);
742 
743 	checkReadOnly();
744 
745 	m_xDelegatorRowUpdate->updateFloat(columnIndex, x);
746 }
747 //------------------------------------------------------------------------------
updateDouble(sal_Int32 columnIndex,double x)748 void OResultSet::updateDouble(sal_Int32 columnIndex, double x) throw( SQLException, RuntimeException )
749 {
750     RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "OResultSet::updateDouble" );
751 	MutexGuard aGuard(m_aMutex);
752 	::connectivity::checkDisposed(OResultSetBase::rBHelper.bDisposed);
753 
754 	checkReadOnly();
755 
756 	m_xDelegatorRowUpdate->updateDouble(columnIndex, x);
757 }
758 //------------------------------------------------------------------------------
updateString(sal_Int32 columnIndex,const rtl::OUString & x)759 void OResultSet::updateString(sal_Int32 columnIndex, const rtl::OUString& x) throw( SQLException, RuntimeException )
760 {
761     RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "OResultSet::updateString" );
762 	MutexGuard aGuard(m_aMutex);
763 	::connectivity::checkDisposed(OResultSetBase::rBHelper.bDisposed);
764 
765 	checkReadOnly();
766 
767 	m_xDelegatorRowUpdate->updateString(columnIndex, x);
768 }
769 //------------------------------------------------------------------------------
updateBytes(sal_Int32 columnIndex,const Sequence<sal_Int8> & x)770 void OResultSet::updateBytes(sal_Int32 columnIndex, const Sequence< sal_Int8 >& x) throw( SQLException, RuntimeException )
771 {
772     RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "OResultSet::updateBytes" );
773 	MutexGuard aGuard(m_aMutex);
774 	::connectivity::checkDisposed(OResultSetBase::rBHelper.bDisposed);
775 
776 	checkReadOnly();
777 
778 	m_xDelegatorRowUpdate->updateBytes(columnIndex, x);
779 }
780 //------------------------------------------------------------------------------
updateDate(sal_Int32 columnIndex,const::com::sun::star::util::Date & x)781 void OResultSet::updateDate(sal_Int32 columnIndex, const ::com::sun::star::util::Date& x) throw( SQLException, RuntimeException )
782 {
783     RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "OResultSet::updateDate" );
784 	MutexGuard aGuard(m_aMutex);
785 	::connectivity::checkDisposed(OResultSetBase::rBHelper.bDisposed);
786 
787 	checkReadOnly();
788 
789 	m_xDelegatorRowUpdate->updateDate(columnIndex, x);
790 }
791 //------------------------------------------------------------------------------
updateTime(sal_Int32 columnIndex,const::com::sun::star::util::Time & x)792 void OResultSet::updateTime(sal_Int32 columnIndex, const ::com::sun::star::util::Time& x) throw( SQLException, RuntimeException )
793 {
794     RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "OResultSet::updateTime" );
795 	MutexGuard aGuard(m_aMutex);
796 	::connectivity::checkDisposed(OResultSetBase::rBHelper.bDisposed);
797 
798 	checkReadOnly();
799 
800 	m_xDelegatorRowUpdate->updateTime(columnIndex, x);
801 }
802 //------------------------------------------------------------------------------
updateTimestamp(sal_Int32 columnIndex,const::com::sun::star::util::DateTime & x)803 void OResultSet::updateTimestamp(sal_Int32 columnIndex, const ::com::sun::star::util::DateTime& x) throw( SQLException, RuntimeException )
804 {
805     RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "OResultSet::updateTimestamp" );
806 	MutexGuard aGuard(m_aMutex);
807 	::connectivity::checkDisposed(OResultSetBase::rBHelper.bDisposed);
808 
809 	checkReadOnly();
810 
811 	m_xDelegatorRowUpdate->updateTimestamp(columnIndex, x);
812 }
813 //------------------------------------------------------------------------------
updateBinaryStream(sal_Int32 columnIndex,const Reference<::com::sun::star::io::XInputStream> & x,sal_Int32 length)814 void OResultSet::updateBinaryStream(sal_Int32 columnIndex, const Reference< ::com::sun::star::io::XInputStream > & x, sal_Int32 length) throw( SQLException, RuntimeException )
815 {
816     RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "OResultSet::updateBinaryStream" );
817 	MutexGuard aGuard(m_aMutex);
818 	::connectivity::checkDisposed(OResultSetBase::rBHelper.bDisposed);
819 
820 	checkReadOnly();
821 
822 	m_xDelegatorRowUpdate->updateBinaryStream(columnIndex, x, length);
823 }
824 //------------------------------------------------------------------------------
updateCharacterStream(sal_Int32 columnIndex,const Reference<::com::sun::star::io::XInputStream> & x,sal_Int32 length)825 void OResultSet::updateCharacterStream(sal_Int32 columnIndex, const Reference< ::com::sun::star::io::XInputStream > & x, sal_Int32 length) throw( SQLException, RuntimeException )
826 {
827     RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "OResultSet::updateCharacterStream" );
828 	MutexGuard aGuard(m_aMutex);
829 	::connectivity::checkDisposed(OResultSetBase::rBHelper.bDisposed);
830 
831 	checkReadOnly();
832 
833 	m_xDelegatorRowUpdate->updateCharacterStream(columnIndex, x, length);
834 }
835 //------------------------------------------------------------------------------
updateNumericObject(sal_Int32 columnIndex,const Any & x,sal_Int32 scale)836 void OResultSet::updateNumericObject(sal_Int32 columnIndex, const Any& x, sal_Int32 scale) throw( SQLException, RuntimeException )
837 {
838     RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "OResultSet::updateNumericObject" );
839 	MutexGuard aGuard(m_aMutex);
840 	::connectivity::checkDisposed(OResultSetBase::rBHelper.bDisposed);
841 
842 	checkReadOnly();
843 
844 	m_xDelegatorRowUpdate->updateNumericObject(columnIndex, x, scale);
845 }
846 
847 //------------------------------------------------------------------------------
updateObject(sal_Int32 columnIndex,const Any & x)848 void OResultSet::updateObject(sal_Int32 columnIndex, const Any& x) throw( SQLException, RuntimeException )
849 {
850     RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "OResultSet::updateObject" );
851 	MutexGuard aGuard(m_aMutex);
852 	::connectivity::checkDisposed(OResultSetBase::rBHelper.bDisposed);
853 
854 	checkReadOnly();
855 
856 	m_xDelegatorRowUpdate->updateObject(columnIndex, x);
857 }
858 
859 // ::com::sun::star::sdbc::XResultSet
860 //------------------------------------------------------------------------------
next(void)861 sal_Bool OResultSet::next(void) throw( SQLException, RuntimeException )
862 {
863     RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "OResultSet::next" );
864 	MutexGuard aGuard(m_aMutex);
865 	::connectivity::checkDisposed(OResultSetBase::rBHelper.bDisposed);
866 
867 	return m_xDelegatorResultSet->next();
868 }
869 
870 //------------------------------------------------------------------------------
isBeforeFirst(void)871 sal_Bool OResultSet::isBeforeFirst(void) throw( SQLException, RuntimeException )
872 {
873     RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "OResultSet::isBeforeFirst" );
874 	MutexGuard aGuard(m_aMutex);
875 	::connectivity::checkDisposed(OResultSetBase::rBHelper.bDisposed);
876 
877 	return m_xDelegatorResultSet->isBeforeFirst();
878 }
879 
880 //------------------------------------------------------------------------------
isAfterLast(void)881 sal_Bool OResultSet::isAfterLast(void) throw( SQLException, RuntimeException )
882 {
883     RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "OResultSet::isAfterLast" );
884 	MutexGuard aGuard(m_aMutex);
885 	::connectivity::checkDisposed(OResultSetBase::rBHelper.bDisposed);
886 
887 	return m_xDelegatorResultSet->isAfterLast();
888 }
889 
890 //------------------------------------------------------------------------------
isFirst(void)891 sal_Bool OResultSet::isFirst(void) throw( SQLException, RuntimeException )
892 {
893     RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "OResultSet::isFirst" );
894 	MutexGuard aGuard(m_aMutex);
895 	::connectivity::checkDisposed(OResultSetBase::rBHelper.bDisposed);
896 
897 	return m_xDelegatorResultSet->isFirst();
898 }
899 
900 //------------------------------------------------------------------------------
isLast(void)901 sal_Bool OResultSet::isLast(void) throw( SQLException, RuntimeException )
902 {
903     RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "OResultSet::isLast" );
904 	MutexGuard aGuard(m_aMutex);
905 	::connectivity::checkDisposed(OResultSetBase::rBHelper.bDisposed);
906 
907 	return m_xDelegatorResultSet->isLast();
908 }
909 
910 //------------------------------------------------------------------------------
beforeFirst(void)911 void OResultSet::beforeFirst(void) throw( SQLException, RuntimeException )
912 {
913     RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "OResultSet::beforeFirst" );
914 	MutexGuard aGuard(m_aMutex);
915 	::connectivity::checkDisposed(OResultSetBase::rBHelper.bDisposed);
916 
917 	m_xDelegatorResultSet->beforeFirst();
918 }
919 
920 //------------------------------------------------------------------------------
afterLast(void)921 void OResultSet::afterLast(void) throw( SQLException, RuntimeException )
922 {
923     RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "OResultSet::afterLast" );
924 	MutexGuard aGuard(m_aMutex);
925 	::connectivity::checkDisposed(OResultSetBase::rBHelper.bDisposed);
926 
927 	m_xDelegatorResultSet->afterLast();
928 }
929 
930 //------------------------------------------------------------------------------
first(void)931 sal_Bool OResultSet::first(void) throw( SQLException, RuntimeException )
932 {
933     RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "OResultSet::first" );
934 	MutexGuard aGuard(m_aMutex);
935 	::connectivity::checkDisposed(OResultSetBase::rBHelper.bDisposed);
936 
937 	return m_xDelegatorResultSet->first();
938 }
939 
940 //------------------------------------------------------------------------------
last(void)941 sal_Bool OResultSet::last(void) throw( SQLException, RuntimeException )
942 {
943     RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "OResultSet::last" );
944 	MutexGuard aGuard(m_aMutex);
945 	::connectivity::checkDisposed(OResultSetBase::rBHelper.bDisposed);
946 
947 	return m_xDelegatorResultSet->last();
948 }
949 
950 //------------------------------------------------------------------------------
getRow(void)951 sal_Int32 OResultSet::getRow(void) throw( SQLException, RuntimeException )
952 {
953     RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "OResultSet::getRow" );
954 	MutexGuard aGuard(m_aMutex);
955 	::connectivity::checkDisposed(OResultSetBase::rBHelper.bDisposed);
956 
957 	return m_xDelegatorResultSet->getRow();
958 }
959 
960 //------------------------------------------------------------------------------
absolute(sal_Int32 row)961 sal_Bool OResultSet::absolute(sal_Int32 row) throw( SQLException, RuntimeException )
962 {
963     RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "OResultSet::absolute" );
964 	MutexGuard aGuard(m_aMutex);
965 	::connectivity::checkDisposed(OResultSetBase::rBHelper.bDisposed);
966 
967 	return m_xDelegatorResultSet->absolute(row);
968 }
969 
970 //------------------------------------------------------------------------------
relative(sal_Int32 rows)971 sal_Bool OResultSet::relative(sal_Int32 rows) throw( SQLException, RuntimeException )
972 {
973     RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "OResultSet::relative" );
974 	MutexGuard aGuard(m_aMutex);
975 	::connectivity::checkDisposed(OResultSetBase::rBHelper.bDisposed);
976 
977 	return m_xDelegatorResultSet->relative(rows);
978 }
979 
980 //------------------------------------------------------------------------------
previous(void)981 sal_Bool OResultSet::previous(void) throw( SQLException, RuntimeException )
982 {
983     RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "OResultSet::previous" );
984 	MutexGuard aGuard(m_aMutex);
985 	::connectivity::checkDisposed(OResultSetBase::rBHelper.bDisposed);
986 
987 	return m_xDelegatorResultSet->previous();
988 }
989 
990 //------------------------------------------------------------------------------
refreshRow(void)991 void OResultSet::refreshRow(void) throw( SQLException, RuntimeException )
992 {
993     RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "OResultSet::refreshRow" );
994 	MutexGuard aGuard(m_aMutex);
995 	::connectivity::checkDisposed(OResultSetBase::rBHelper.bDisposed);
996 
997 	m_xDelegatorResultSet->refreshRow();
998 }
999 
1000 //------------------------------------------------------------------------------
rowUpdated(void)1001 sal_Bool OResultSet::rowUpdated(void) throw( SQLException, RuntimeException )
1002 {
1003     RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "OResultSet::rowUpdated" );
1004 	MutexGuard aGuard(m_aMutex);
1005 	::connectivity::checkDisposed(OResultSetBase::rBHelper.bDisposed);
1006 
1007 	return m_xDelegatorResultSet->rowUpdated();
1008 }
1009 
1010 //------------------------------------------------------------------------------
rowInserted(void)1011 sal_Bool OResultSet::rowInserted(void) throw( SQLException, RuntimeException )
1012 {
1013     RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "OResultSet::rowInserted" );
1014 	MutexGuard aGuard(m_aMutex);
1015 	::connectivity::checkDisposed(OResultSetBase::rBHelper.bDisposed);
1016 
1017 	return m_xDelegatorResultSet->rowInserted();
1018 }
1019 
1020 //------------------------------------------------------------------------------
rowDeleted(void)1021 sal_Bool OResultSet::rowDeleted(void) throw( SQLException, RuntimeException )
1022 {
1023     RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "OResultSet::rowDeleted" );
1024 	MutexGuard aGuard(m_aMutex);
1025 	::connectivity::checkDisposed(OResultSetBase::rBHelper.bDisposed);
1026 
1027 	return m_xDelegatorResultSet->rowDeleted();
1028 }
1029 
1030 //------------------------------------------------------------------------------
getStatement(void)1031 Reference< XInterface > OResultSet::getStatement(void) throw( SQLException, RuntimeException )
1032 {
1033     RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "OResultSet::getStatement" );
1034 	MutexGuard aGuard(m_aMutex);
1035 	::connectivity::checkDisposed(OResultSetBase::rBHelper.bDisposed);
1036 
1037 	return m_aStatement;
1038 }
1039 
1040 // ::com::sun::star::sdbcx::XRowLocate
1041 //------------------------------------------------------------------------------
getBookmark(void)1042 Any OResultSet::getBookmark(void) throw( SQLException, RuntimeException )
1043 {
1044     RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "OResultSet::getBookmark" );
1045 	MutexGuard aGuard(m_aMutex);
1046 	::connectivity::checkDisposed(OResultSetBase::rBHelper.bDisposed);
1047 
1048 	checkBookmarkable();
1049 
1050 	return Reference< XRowLocate >(m_xDelegatorResultSet, UNO_QUERY)->getBookmark();
1051 }
1052 
1053 //------------------------------------------------------------------------------
moveToBookmark(const Any & bookmark)1054 sal_Bool OResultSet::moveToBookmark(const Any& bookmark) throw( SQLException, RuntimeException )
1055 {
1056     RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "OResultSet::moveToBookmark" );
1057 	MutexGuard aGuard(m_aMutex);
1058 	::connectivity::checkDisposed(OResultSetBase::rBHelper.bDisposed);
1059 
1060 	checkBookmarkable();
1061 
1062 	return Reference< XRowLocate >(m_xDelegatorResultSet, UNO_QUERY)->moveToBookmark(bookmark);
1063 }
1064 
1065 //------------------------------------------------------------------------------
moveRelativeToBookmark(const Any & bookmark,sal_Int32 rows)1066 sal_Bool OResultSet::moveRelativeToBookmark(const Any& bookmark, sal_Int32 rows) throw( SQLException, RuntimeException )
1067 {
1068     RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "OResultSet::moveRelativeToBookmark" );
1069 	MutexGuard aGuard(m_aMutex);
1070 	::connectivity::checkDisposed(OResultSetBase::rBHelper.bDisposed);
1071 
1072 	checkBookmarkable();
1073 
1074 	return Reference< XRowLocate >(m_xDelegatorResultSet, UNO_QUERY)->moveRelativeToBookmark(bookmark, rows);
1075 }
1076 
1077 //------------------------------------------------------------------------------
compareBookmarks(const Any & _first,const Any & _second)1078 sal_Int32 OResultSet::compareBookmarks(const Any& _first, const Any& _second) throw( SQLException, RuntimeException )
1079 {
1080     RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "OResultSet::compareBookmarks" );
1081 	MutexGuard aGuard(m_aMutex);
1082 	::connectivity::checkDisposed(OResultSetBase::rBHelper.bDisposed);
1083 
1084 	checkBookmarkable();
1085 
1086 	return Reference< XRowLocate >(m_xDelegatorResultSet, UNO_QUERY)->compareBookmarks(_first, _second);
1087 }
1088 
1089 //------------------------------------------------------------------------------
hasOrderedBookmarks(void)1090 sal_Bool OResultSet::hasOrderedBookmarks(void) throw( SQLException, RuntimeException )
1091 {
1092     RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "OResultSet::hasOrderedBookmarks" );
1093 	MutexGuard aGuard(m_aMutex);
1094 	::connectivity::checkDisposed(OResultSetBase::rBHelper.bDisposed);
1095 
1096 	checkBookmarkable();
1097 
1098 	return Reference< XRowLocate >(m_xDelegatorResultSet, UNO_QUERY)->hasOrderedBookmarks();
1099 }
1100 
1101 //------------------------------------------------------------------------------
hashBookmark(const Any & bookmark)1102 sal_Int32 OResultSet::hashBookmark(const Any& bookmark) throw( SQLException, RuntimeException )
1103 {
1104     RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "OResultSet::hashBookmark" );
1105 	MutexGuard aGuard(m_aMutex);
1106 	::connectivity::checkDisposed(OResultSetBase::rBHelper.bDisposed);
1107 
1108 	checkBookmarkable();
1109 
1110 	return Reference< XRowLocate >(m_xDelegatorResultSet, UNO_QUERY)->hashBookmark(bookmark);
1111 }
1112 
1113 // ::com::sun::star::sdbc::XResultSetUpdate
1114 //------------------------------------------------------------------------------
insertRow(void)1115 void OResultSet::insertRow(void) throw( SQLException, RuntimeException )
1116 {
1117     RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "OResultSet::insertRow" );
1118 	MutexGuard aGuard(m_aMutex);
1119 	::connectivity::checkDisposed(OResultSetBase::rBHelper.bDisposed);
1120 
1121 	checkReadOnly();
1122 
1123 	m_xDelegatorResultSetUpdate->insertRow();
1124 }
1125 
1126 //------------------------------------------------------------------------------
updateRow(void)1127 void OResultSet::updateRow(void) throw( SQLException, RuntimeException )
1128 {
1129     RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "OResultSet::updateRow" );
1130 	MutexGuard aGuard(m_aMutex);
1131 	::connectivity::checkDisposed(OResultSetBase::rBHelper.bDisposed);
1132 
1133 	checkReadOnly();
1134 
1135 	m_xDelegatorResultSetUpdate->updateRow();
1136 }
1137 
1138 //------------------------------------------------------------------------------
deleteRow(void)1139 void OResultSet::deleteRow(void) throw( SQLException, RuntimeException )
1140 {
1141     RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "OResultSet::deleteRow" );
1142 	MutexGuard aGuard(m_aMutex);
1143 	::connectivity::checkDisposed(OResultSetBase::rBHelper.bDisposed);
1144 
1145 	checkReadOnly();
1146 
1147 	m_xDelegatorResultSetUpdate->deleteRow();
1148 }
1149 
1150 //------------------------------------------------------------------------------
cancelRowUpdates(void)1151 void OResultSet::cancelRowUpdates(void) throw( SQLException, RuntimeException )
1152 {
1153     RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "OResultSet::cancelRowUpdates" );
1154 	MutexGuard aGuard(m_aMutex);
1155 	::connectivity::checkDisposed(OResultSetBase::rBHelper.bDisposed);
1156 
1157 	checkReadOnly();
1158 
1159 	m_xDelegatorResultSetUpdate->cancelRowUpdates();
1160 }
1161 
1162 //------------------------------------------------------------------------------
moveToInsertRow(void)1163 void OResultSet::moveToInsertRow(void) throw( SQLException, RuntimeException )
1164 {
1165     RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "OResultSet::moveToInsertRow" );
1166 	MutexGuard aGuard(m_aMutex);
1167 	::connectivity::checkDisposed(OResultSetBase::rBHelper.bDisposed);
1168 
1169 	checkReadOnly();
1170 
1171 	m_xDelegatorResultSetUpdate->moveToInsertRow();
1172 }
1173 
1174 //------------------------------------------------------------------------------
moveToCurrentRow(void)1175 void OResultSet::moveToCurrentRow(void) throw( SQLException, RuntimeException )
1176 {
1177     RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "OResultSet::moveToCurrentRow" );
1178 	MutexGuard aGuard(m_aMutex);
1179 	::connectivity::checkDisposed(OResultSetBase::rBHelper.bDisposed);
1180 
1181 	checkReadOnly();
1182 
1183 	m_xDelegatorResultSetUpdate->moveToCurrentRow();
1184 }
1185 
1186 // -----------------------------------------------------------------------------
checkReadOnly() const1187 void OResultSet::checkReadOnly() const
1188 {
1189     //RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "OResultSet::checkReadOnly" );
1190     if  (   ( m_nResultSetConcurrency == ResultSetConcurrency::READ_ONLY )
1191         ||  !m_xDelegatorResultSetUpdate.is()
1192         )
1193         throwSQLException( "The result set is read-only.", SQL_GENERAL_ERROR, *const_cast< OResultSet* >( this ) );
1194 }
1195 
1196 // -----------------------------------------------------------------------------
checkBookmarkable() const1197 void OResultSet::checkBookmarkable() const
1198 {
1199     //RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "OResultSet::checkBookmarkable" );
1200 	if ( !m_bIsBookmarkable )
1201         throwSQLException( "The result set does not have bookmark support.", SQL_GENERAL_ERROR, *const_cast< OResultSet* >( this ) );
1202 }
1203 // -----------------------------------------------------------------------------
1204 
1205