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 #ifndef _RESULTSETBASE_HXX
24 #define _RESULTSETBASE_HXX
25 
26 #ifndef INCLUDED_STL_VECTOR
27 #include <vector>
28 #define INCLUDED_STL_VECTOR
29 #endif
30 #include <cppuhelper/weak.hxx>
31 #include <cppuhelper/interfacecontainer.hxx>
32 #include <com/sun/star/lang/XComponent.hpp>
33 #include <com/sun/star/ucb/XContentAccess.hpp>
34 #include <com/sun/star/sdbc/XCloseable.hpp>
35 #include <com/sun/star/beans/XPropertySet.hpp>
36 #include <com/sun/star/sdbc/XResultSet.hpp>
37 #include <com/sun/star/sdbc/XRow.hpp>
38 #include <com/sun/star/sdbc/XResultSetMetaDataSupplier.hpp>
39 #include <com/sun/star/ucb/NumberedSortingInfo.hpp>
40 #include <com/sun/star/ucb/XContentProvider.hpp>
41 #include <com/sun/star/ucb/XContentIdentifier.hpp>
42 #include <com/sun/star/lang/XMultiServiceFactory.hpp>
43 #include <com/sun/star/beans/Property.hpp>
44 
45 
46 namespace chelp {
47 
48 	class ResultSetBase
49 		: public cppu::OWeakObject,
50 		  public com::sun::star::lang::XComponent,
51 		  public com::sun::star::sdbc::XRow,
52 		  public com::sun::star::sdbc::XResultSet,
53 		  public com::sun::star::sdbc::XCloseable,
54 		  public com::sun::star::sdbc::XResultSetMetaDataSupplier,
55 		  public com::sun::star::beans::XPropertySet,
56 		  public com::sun::star::ucb::XContentAccess
57 	{
58 	public:
59 
60 		ResultSetBase( const com::sun::star::uno::Reference< com::sun::star::lang::XMultiServiceFactory >&  xMSF,
61 					   const com::sun::star::uno::Reference< com::sun::star::ucb::XContentProvider >&  xProvider,
62 					   sal_Int32 nOpenMode,
63 					   const com::sun::star::uno::Sequence< com::sun::star::beans::Property >& seq,
64 					   const com::sun::star::uno::Sequence< com::sun::star::ucb::NumberedSortingInfo >& seqSort );
65 
66 		virtual ~ResultSetBase();
67 
68 		// XInterface
69 		virtual com::sun::star::uno::Any SAL_CALL
70 		queryInterface(
71 			const com::sun::star::uno::Type& aType )
72 			throw( com::sun::star::uno::RuntimeException);
73 
74 		virtual void SAL_CALL
75 		acquire(
76 			void )
77 			throw();
78 
79 		virtual void SAL_CALL
80 		release(
81 			void )
82 			throw();
83 
84 		// XComponent
85 		virtual void SAL_CALL
86 		dispose(
87 			void )
88 			throw( com::sun::star::uno::RuntimeException );
89 
90 		virtual void SAL_CALL
91 		addEventListener(
92 			const com::sun::star::uno::Reference< com::sun::star::lang::XEventListener >& xListener )
93 			throw( com::sun::star::uno::RuntimeException );
94 
95 		virtual void SAL_CALL
96 		removeEventListener( const com::sun::star::uno::Reference< com::sun::star::lang::XEventListener >& aListener )
97 			throw( com::sun::star::uno::RuntimeException );
98 
99 
100 		// XRow
101 		virtual sal_Bool SAL_CALL
wasNull(void)102 		wasNull(
103 			void )
104 			throw( com::sun::star::sdbc::SQLException,
105 				   com::sun::star::uno::RuntimeException )
106 		{
107 			if( 0<= m_nRow && sal::static_int_cast<sal_uInt32>( m_nRow ) < m_aItems.size() )
108 				m_nWasNull = m_aItems[m_nRow]->wasNull();
109 			else
110 				m_nWasNull = true;
111 			return m_nWasNull;
112 		}
113 
114 		virtual rtl::OUString SAL_CALL
getString(sal_Int32 columnIndex)115 		getString(
116 			sal_Int32 columnIndex )
117 			throw( com::sun::star::sdbc::SQLException,
118 				   com::sun::star::uno::RuntimeException)
119 		{
120 			if( 0 <= m_nRow && sal::static_int_cast<sal_uInt32>( m_nRow ) < m_aItems.size() )
121 				return m_aItems[m_nRow]->getString( columnIndex );
122 			else
123 				return rtl::OUString();
124 		}
125 
126 		virtual sal_Bool SAL_CALL
getBoolean(sal_Int32 columnIndex)127 		getBoolean(
128 			sal_Int32 columnIndex )
129 			throw( com::sun::star::sdbc::SQLException,
130 				   com::sun::star::uno::RuntimeException)
131 		{
132 			if( 0 <= m_nRow && sal::static_int_cast<sal_uInt32>( m_nRow ) < m_aItems.size() )
133 				return m_aItems[m_nRow]->getBoolean( columnIndex );
134 			else
135 				return false;
136 		}
137 
138 		virtual sal_Int8 SAL_CALL
getByte(sal_Int32 columnIndex)139 		getByte(
140 			sal_Int32 columnIndex )
141 			throw( com::sun::star::sdbc::SQLException,
142 				   com::sun::star::uno::RuntimeException)
143 		{
144 			if( 0 <= m_nRow && sal::static_int_cast<sal_uInt32>( m_nRow ) < m_aItems.size() )
145 				return m_aItems[m_nRow]->getByte( columnIndex );
146 			else
147 				return sal_Int8( 0 );
148 		}
149 
150 		virtual sal_Int16 SAL_CALL
getShort(sal_Int32 columnIndex)151 		getShort(
152 			sal_Int32 columnIndex )
153 			throw(
154 				com::sun::star::sdbc::SQLException,
155 				com::sun::star::uno::RuntimeException)
156 		{
157 			if( 0 <= m_nRow && sal::static_int_cast<sal_uInt32>( m_nRow ) < m_aItems.size() )
158 				return m_aItems[m_nRow]->getShort( columnIndex );
159 			else
160 				return sal_Int16( 0 );
161 		}
162 
163 		virtual sal_Int32 SAL_CALL
getInt(sal_Int32 columnIndex)164 		getInt(
165 			sal_Int32 columnIndex )
166 			throw( com::sun::star::sdbc::SQLException,
167 				   com::sun::star::uno::RuntimeException )
168 		{
169 			if( 0 <= m_nRow && sal::static_int_cast<sal_uInt32>( m_nRow ) < m_aItems.size() )
170 				return m_aItems[m_nRow]->getInt( columnIndex );
171 			else
172 				return sal_Int32( 0 );
173 		}
174 
175 		virtual sal_Int64 SAL_CALL
getLong(sal_Int32 columnIndex)176 		getLong(
177 			sal_Int32 columnIndex )
178 			throw( com::sun::star::sdbc::SQLException,
179 				   com::sun::star::uno::RuntimeException)
180 		{
181 			if( 0 <= m_nRow && sal::static_int_cast<sal_uInt32>( m_nRow ) < m_aItems.size() )
182 				return m_aItems[m_nRow]->getLong( columnIndex );
183 			else
184 				return sal_Int64( 0 );
185 		}
186 
187 		virtual float SAL_CALL
getFloat(sal_Int32 columnIndex)188 		getFloat(
189 			sal_Int32 columnIndex )
190 			throw( com::sun::star::sdbc::SQLException,
191 				   com::sun::star::uno::RuntimeException )
192 		{
193 			if( 0 <= m_nRow && sal::static_int_cast<sal_uInt32>( m_nRow ) < m_aItems.size() )
194 				return m_aItems[m_nRow]->getFloat( columnIndex );
195 			else
196 				return float( 0 );
197 		}
198 
199 		virtual double SAL_CALL
getDouble(sal_Int32 columnIndex)200 		getDouble(
201 			sal_Int32 columnIndex )
202 			throw( com::sun::star::sdbc::SQLException,
203 				   com::sun::star::uno::RuntimeException )
204 		{
205 			if( 0 <= m_nRow && sal::static_int_cast<sal_uInt32>( m_nRow ) < m_aItems.size() )
206 				return m_aItems[m_nRow]->getDouble( columnIndex );
207 			else
208 				return double( 0 );
209 		}
210 
211 		virtual com::sun::star::uno::Sequence< sal_Int8 > SAL_CALL
getBytes(sal_Int32 columnIndex)212 		getBytes(
213 			sal_Int32 columnIndex )
214 			throw( com::sun::star::sdbc::SQLException,
215 				   com::sun::star::uno::RuntimeException )
216 		{
217 			if( 0 <= m_nRow && sal::static_int_cast<sal_uInt32>( m_nRow ) < m_aItems.size() )
218 				return m_aItems[m_nRow]->getBytes( columnIndex );
219 			else
220 				return com::sun::star::uno::Sequence< sal_Int8 >();
221 		}
222 
223 		virtual com::sun::star::util::Date SAL_CALL
getDate(sal_Int32 columnIndex)224 		getDate(
225 			sal_Int32 columnIndex )
226 			throw( com::sun::star::sdbc::SQLException,
227 				   com::sun::star::uno::RuntimeException)
228 		{
229 			if( 0 <= m_nRow && sal::static_int_cast<sal_uInt32>( m_nRow ) < m_aItems.size() )
230 				return m_aItems[m_nRow]->getDate( columnIndex );
231 			else
232 				return com::sun::star::util::Date();
233 		}
234 
235 		virtual com::sun::star::util::Time SAL_CALL
getTime(sal_Int32 columnIndex)236 		getTime(
237 			sal_Int32 columnIndex )
238 			throw( com::sun::star::sdbc::SQLException,
239 				   com::sun::star::uno::RuntimeException)
240 		{
241 			if( 0 <= m_nRow && sal::static_int_cast<sal_uInt32>( m_nRow ) < m_aItems.size() )
242 				return m_aItems[m_nRow]->getTime( columnIndex );
243 			else
244 				return com::sun::star::util::Time();
245 		}
246 
247 		virtual com::sun::star::util::DateTime SAL_CALL
getTimestamp(sal_Int32 columnIndex)248 		getTimestamp(
249 			sal_Int32 columnIndex )
250 			throw( com::sun::star::sdbc::SQLException,
251 				   com::sun::star::uno::RuntimeException)
252 		{
253 			if( 0 <= m_nRow && sal::static_int_cast<sal_uInt32>( m_nRow ) < m_aItems.size() )
254 				return m_aItems[m_nRow]->getTimestamp( columnIndex );
255 			else
256 				return com::sun::star::util::DateTime();
257 		}
258 
259 		virtual com::sun::star::uno::Reference< com::sun::star::io::XInputStream > SAL_CALL
getBinaryStream(sal_Int32 columnIndex)260 		getBinaryStream(
261 			sal_Int32 columnIndex )
262 			throw( com::sun::star::sdbc::SQLException,
263 				   com::sun::star::uno::RuntimeException)
264 		{
265 			if( 0 <= m_nRow && sal::static_int_cast<sal_uInt32>( m_nRow ) < m_aItems.size() )
266 				return m_aItems[m_nRow]->getBinaryStream( columnIndex );
267 			else
268 				return com::sun::star::uno::Reference< com::sun::star::io::XInputStream >();
269 		}
270 
271 		virtual com::sun::star::uno::Reference< com::sun::star::io::XInputStream > SAL_CALL
getCharacterStream(sal_Int32 columnIndex)272 		getCharacterStream(
273 			sal_Int32 columnIndex )
274 			throw( com::sun::star::sdbc::SQLException,
275 				   com::sun::star::uno::RuntimeException)
276 		{
277 			if( 0 <= m_nRow && sal::static_int_cast<sal_uInt32>( m_nRow ) < m_aItems.size() )
278 				return m_aItems[m_nRow]->getCharacterStream( columnIndex );
279 			else
280 				return com::sun::star::uno::Reference< com::sun::star::io::XInputStream >();
281 		}
282 
283 		virtual com::sun::star::uno::Any SAL_CALL
getObject(sal_Int32 columnIndex,const com::sun::star::uno::Reference<com::sun::star::container::XNameAccess> & typeMap)284 		getObject(
285 			sal_Int32 columnIndex,
286 			const com::sun::star::uno::Reference< com::sun::star::container::XNameAccess >& typeMap )
287 			throw( com::sun::star::sdbc::SQLException,
288 				   com::sun::star::uno::RuntimeException)
289 		{
290 			if( 0 <= m_nRow && sal::static_int_cast<sal_uInt32>( m_nRow ) < m_aItems.size() )
291 				return m_aItems[m_nRow]->getObject( columnIndex,typeMap );
292 			else
293 				return com::sun::star::uno::Any();
294 		}
295 
296 		virtual com::sun::star::uno::Reference< com::sun::star::sdbc::XRef > SAL_CALL
getRef(sal_Int32 columnIndex)297 		getRef(
298 			sal_Int32 columnIndex )
299 			throw( com::sun::star::sdbc::SQLException,
300 				   com::sun::star::uno::RuntimeException)
301 		{
302 			if( 0 <= m_nRow && sal::static_int_cast<sal_uInt32>( m_nRow ) < m_aItems.size() )
303 				return m_aItems[m_nRow]->getRef( columnIndex );
304 			else
305 				return com::sun::star::uno::Reference< com::sun::star::sdbc::XRef >();
306 		}
307 
308 		virtual com::sun::star::uno::Reference< com::sun::star::sdbc::XBlob > SAL_CALL
getBlob(sal_Int32 columnIndex)309 		getBlob(
310 			sal_Int32 columnIndex )
311 			throw( com::sun::star::sdbc::SQLException,
312 				   com::sun::star::uno::RuntimeException)
313 		{
314 			if( 0 <= m_nRow && sal::static_int_cast<sal_uInt32>( m_nRow ) < m_aItems.size() )
315 				return m_aItems[m_nRow]->getBlob( columnIndex );
316 			else
317 				return com::sun::star::uno::Reference< com::sun::star::sdbc::XBlob >();
318 		}
319 
320 		virtual com::sun::star::uno::Reference< com::sun::star::sdbc::XClob > SAL_CALL
getClob(sal_Int32 columnIndex)321 		getClob(
322 			sal_Int32 columnIndex )
323 			throw( com::sun::star::sdbc::SQLException,
324 				   com::sun::star::uno::RuntimeException)
325 		{
326 			if( 0 <= m_nRow && sal::static_int_cast<sal_uInt32>( m_nRow ) < m_aItems.size() )
327 				return m_aItems[m_nRow]->getClob( columnIndex );
328 			else
329 				return com::sun::star::uno::Reference< com::sun::star::sdbc::XClob >();
330 		}
331 
332 		virtual com::sun::star::uno::Reference< com::sun::star::sdbc::XArray > SAL_CALL
getArray(sal_Int32 columnIndex)333 		getArray(
334 			sal_Int32 columnIndex )
335 			throw( com::sun::star::sdbc::SQLException,
336 				   com::sun::star::uno::RuntimeException)
337 		{
338 			if( 0 <= m_nRow && sal::static_int_cast<sal_uInt32>( m_nRow ) < m_aItems.size() )
339 				return m_aItems[m_nRow]->getArray( columnIndex );
340 			else
341 				return com::sun::star::uno::Reference< com::sun::star::sdbc::XArray >();
342 		}
343 
344 
345 		// XResultSet
346 
347 		virtual sal_Bool SAL_CALL
348 		next(
349 			void )
350 			throw( com::sun::star::sdbc::SQLException,
351 				   com::sun::star::uno::RuntimeException);
352 
353 		virtual sal_Bool SAL_CALL
354 		isBeforeFirst(
355 			void )
356 			throw( com::sun::star::sdbc::SQLException,
357 				   com::sun::star::uno::RuntimeException);
358 
359 		virtual sal_Bool SAL_CALL
360 		isAfterLast(
361 			void )
362 			throw( com::sun::star::sdbc::SQLException,
363 				   com::sun::star::uno::RuntimeException);
364 
365 		virtual sal_Bool SAL_CALL
366 		isFirst(
367 			void  )
368 			throw( com::sun::star::sdbc::SQLException,
369 				   com::sun::star::uno::RuntimeException);
370 
371 		virtual sal_Bool SAL_CALL
372 		isLast(
373 			void  )
374 			throw( com::sun::star::sdbc::SQLException,
375 				   com::sun::star::uno::RuntimeException);
376 
377 		virtual void SAL_CALL
378 		beforeFirst(
379 			void  )
380 			throw( com::sun::star::sdbc::SQLException,
381 				   com::sun::star::uno::RuntimeException);
382 
383 		virtual void SAL_CALL
384 		afterLast(
385 			void  )
386 			throw( com::sun::star::sdbc::SQLException,
387 				   com::sun::star::uno::RuntimeException);
388 
389 		virtual sal_Bool SAL_CALL
390 		first(
391 			void  )
392 			throw( com::sun::star::sdbc::SQLException,
393 				   com::sun::star::uno::RuntimeException);
394 
395 		virtual sal_Bool SAL_CALL
396 		last(
397 			void  )
398 			throw( com::sun::star::sdbc::SQLException,
399 				   com::sun::star::uno::RuntimeException);
400 
401 		virtual sal_Int32 SAL_CALL
402 		getRow(
403 			void  )
404 			throw( com::sun::star::sdbc::SQLException,
405 				   com::sun::star::uno::RuntimeException);
406 
407 		virtual sal_Bool SAL_CALL
408 		absolute(
409 			sal_Int32 row )
410 			throw( com::sun::star::sdbc::SQLException,
411 				   com::sun::star::uno::RuntimeException);
412 
413 		virtual sal_Bool SAL_CALL
414 		relative(
415 			sal_Int32 rows )
416 			throw( com::sun::star::sdbc::SQLException,
417 				   com::sun::star::uno::RuntimeException);
418 
419 		virtual sal_Bool SAL_CALL
420 		previous(
421 			void  )
422 			throw( com::sun::star::sdbc::SQLException,
423 				   com::sun::star::uno::RuntimeException);
424 
425 		virtual void SAL_CALL
426 		refreshRow(
427 			void  )
428 			throw( com::sun::star::sdbc::SQLException,
429 				   com::sun::star::uno::RuntimeException);
430 
431 		virtual sal_Bool SAL_CALL
432 		rowUpdated(
433 			void )
434 			throw( com::sun::star::sdbc::SQLException,
435 				   com::sun::star::uno::RuntimeException);
436 
437 		virtual sal_Bool SAL_CALL
438 		rowInserted(
439 			void  )
440 			throw( com::sun::star::sdbc::SQLException,
441 				   com::sun::star::uno::RuntimeException);
442 
443 		virtual sal_Bool SAL_CALL
444 		rowDeleted(
445 			void  )
446 			throw( com::sun::star::sdbc::SQLException,
447 				   com::sun::star::uno::RuntimeException);
448 
449 
450 		virtual  com::sun::star::uno::Reference<  com::sun::star::uno::XInterface > SAL_CALL
451 		getStatement(
452 			void  )
453 			throw( com::sun::star::sdbc::SQLException,
454 				   com::sun::star::uno::RuntimeException);
455 
456 		// XCloseable
457 
458 		virtual void SAL_CALL
459 		close(
460 			void )
461 			throw( com::sun::star::sdbc::SQLException,
462 				   com::sun::star::uno::RuntimeException);
463 
464 		// XContentAccess
465 
466 		virtual rtl::OUString SAL_CALL
467 		queryContentIdentifierString(
468 			void )
469 			throw( com::sun::star::uno::RuntimeException );
470 
471 		virtual com::sun::star::uno::Reference< com::sun::star::ucb::XContentIdentifier > SAL_CALL
472 		queryContentIdentifier(
473 			void )
474 			throw( com::sun::star::uno::RuntimeException );
475 
476 		virtual com::sun::star::uno::Reference< com::sun::star::ucb::XContent > SAL_CALL
477 		queryContent(
478 			void )
479 			throw( com::sun::star::uno::RuntimeException );
480 
481 		// XResultSetMetaDataSupplier
482 		virtual com::sun::star::uno::Reference< com::sun::star::sdbc::XResultSetMetaData > SAL_CALL
483 		getMetaData(
484 			void )
485 			throw( com::sun::star::sdbc::SQLException,
486 				   com::sun::star::uno::RuntimeException);
487 
488 
489 		// XPropertySet
490 		virtual com::sun::star::uno::Reference< com::sun::star::beans::XPropertySetInfo > SAL_CALL
491 		getPropertySetInfo()
492 			throw( com::sun::star::uno::RuntimeException);
493 
494 		virtual void SAL_CALL setPropertyValue(
495 			const rtl::OUString& aPropertyName,
496 			const com::sun::star::uno::Any& aValue )
497 			throw( com::sun::star::beans::UnknownPropertyException,
498 				   com::sun::star::beans::PropertyVetoException,
499 				   com::sun::star::lang::IllegalArgumentException,
500 				   com::sun::star::lang::WrappedTargetException,
501 				   com::sun::star::uno::RuntimeException);
502 
503 		virtual com::sun::star::uno::Any SAL_CALL
504 		getPropertyValue(
505 			const rtl::OUString& PropertyName )
506 			throw( com::sun::star::beans::UnknownPropertyException,
507 				   com::sun::star::lang::WrappedTargetException,
508 				   com::sun::star::uno::RuntimeException);
509 
510 		virtual void SAL_CALL
511 		addPropertyChangeListener(
512 			const rtl::OUString& aPropertyName,
513 			const com::sun::star::uno::Reference< com::sun::star::beans::XPropertyChangeListener >& xListener )
514 			throw( com::sun::star::beans::UnknownPropertyException,
515 				   com::sun::star::lang::WrappedTargetException,
516 				   com::sun::star::uno::RuntimeException);
517 
518 		virtual void SAL_CALL
519 		removePropertyChangeListener(
520 			const rtl::OUString& aPropertyName,
521 			const com::sun::star::uno::Reference< com::sun::star::beans::XPropertyChangeListener >& aListener )
522 			throw( com::sun::star::beans::UnknownPropertyException,
523 				   com::sun::star::lang::WrappedTargetException,
524 				   com::sun::star::uno::RuntimeException);
525 
526 		virtual void SAL_CALL
527 		addVetoableChangeListener(
528 			const rtl::OUString& PropertyName,
529 			const com::sun::star::uno::Reference< com::sun::star::beans::XVetoableChangeListener >& aListener )
530 			throw( com::sun::star::beans::UnknownPropertyException,
531 				   com::sun::star::lang::WrappedTargetException,
532 				   com::sun::star::uno::RuntimeException);
533 
534 		virtual void SAL_CALL removeVetoableChangeListener(
535 			const rtl::OUString& PropertyName,
536 			const com::sun::star::uno::Reference< com::sun::star::beans::XVetoableChangeListener >& aListener )
537 			throw( com::sun::star::beans::UnknownPropertyException,
538 				   com::sun::star::lang::WrappedTargetException,
539 				   com::sun::star::uno::RuntimeException);
540 
541 	protected:
542 
543 		com::sun::star::uno::Reference< com::sun::star::lang::XMultiServiceFactory >  m_xMSF;
544 		com::sun::star::uno::Reference< com::sun::star::ucb::XContentProvider >  m_xProvider;
545 		sal_Int32                           m_nRow;
546 		sal_Bool                            m_nWasNull;
547 		sal_Int32                           m_nOpenMode;
548 		sal_Bool                            m_bRowCountFinal;
549 
550 		typedef std::vector< com::sun::star::uno::Reference< com::sun::star::ucb::XContentIdentifier > > IdentSet;
551 		typedef std::vector< com::sun::star::uno::Reference< com::sun::star::sdbc::XRow > >              ItemSet;
552 		typedef std::vector< rtl::OUString >                                                             PathSet;
553 
554 		IdentSet                            m_aIdents;
555 		ItemSet                             m_aItems;
556 		PathSet                             m_aPath;
557 
558 		com::sun::star::uno::Sequence< com::sun::star::beans::Property >           m_sProperty;
559 		com::sun::star::uno::Sequence< com::sun::star::ucb::NumberedSortingInfo >  m_sSortingInfo;
560 
561 		osl::Mutex                          m_aMutex;
562 		cppu::OInterfaceContainerHelper*    m_pDisposeEventListeners;
563 
564 		cppu::OInterfaceContainerHelper*    m_pRowCountListeners;
565 		cppu::OInterfaceContainerHelper*    m_pIsFinalListeners;
566 	};
567 
568 
569 } // end namespace fileaccess
570 
571 
572 #endif
573