xref: /aoo41x/main/ucb/source/ucp/file/filrset.hxx (revision cdf0e10c)
1 /*************************************************************************
2  *
3  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
4  *
5  * Copyright 2000, 2010 Oracle and/or its affiliates.
6  *
7  * OpenOffice.org - a multi-platform office productivity suite
8  *
9  * This file is part of OpenOffice.org.
10  *
11  * OpenOffice.org is free software: you can redistribute it and/or modify
12  * it under the terms of the GNU Lesser General Public License version 3
13  * only, as published by the Free Software Foundation.
14  *
15  * OpenOffice.org is distributed in the hope that it will be useful,
16  * but WITHOUT ANY WARRANTY; without even the implied warranty of
17  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
18  * GNU Lesser General Public License version 3 for more details
19  * (a copy is included in the LICENSE file that accompanied this code).
20  *
21  * You should have received a copy of the GNU Lesser General Public License
22  * version 3 along with OpenOffice.org.  If not, see
23  * <http://www.openoffice.org/license.html>
24  * for a copy of the LGPLv3 License.
25  *
26  ************************************************************************/
27 #ifndef _FILRSET_HXX_
28 #define _FILRSET_HXX_
29 
30 #ifndef __SGI_STL_VECTOR
31 #include <vector>
32 #endif
33 #include <ucbhelper/macros.hxx>
34 #include <osl/file.hxx>
35 
36 #include "osl/mutex.hxx"
37 #include <cppuhelper/weak.hxx>
38 #include <cppuhelper/interfacecontainer.hxx>
39 #include <com/sun/star/lang/XTypeProvider.hpp>
40 #include <com/sun/star/ucb/XContentAccess.hpp>
41 #include <com/sun/star/sdbc/XCloseable.hpp>
42 #include <com/sun/star/beans/XPropertySet.hpp>
43 #ifndef _COM_SUN_STAR_UCB_XDYNAMICRESULTSET_HPP__
44 #include <com/sun/star/ucb/XDynamicResultSet.hpp>
45 #endif
46 #include <com/sun/star/ucb/XDynamicResultSetListener.hpp>
47 #include <com/sun/star/sdbc/XResultSetMetaDataSupplier.hpp>
48 #include <com/sun/star/ucb/NumberedSortingInfo.hpp>
49 #include <com/sun/star/ucb/XContentProvider.hpp>
50 #include <com/sun/star/ucb/XContentIdentifier.hpp>
51 #include <com/sun/star/beans/Property.hpp>
52 #include "filrow.hxx"
53 #include "filnot.hxx"
54 
55 
56 
57 namespace fileaccess {
58 
59 	class Notifier;
60 
61 	class XResultSet_impl
62 		: public cppu::OWeakObject,
63 		  public com::sun::star::lang::XTypeProvider,
64 		  public com::sun::star::lang::XEventListener,
65 		  public com::sun::star::sdbc::XRow,
66 		  public com::sun::star::sdbc::XResultSet,
67 		  public com::sun::star::ucb::XDynamicResultSet,
68 		  public com::sun::star::sdbc::XCloseable,
69 		  public com::sun::star::sdbc::XResultSetMetaDataSupplier,
70 		  public com::sun::star::beans::XPropertySet,
71 		  public com::sun::star::ucb::XContentAccess,
72 		  public Notifier
73 	{
74 	public:
75 
76 		XResultSet_impl( shell* pMyShell,
77 						 const rtl::OUString& aUnqPath,
78 						 sal_Int32 OpenMode,
79 						 const com::sun::star::uno::Sequence< com::sun::star::beans::Property >& seq,
80 						 const com::sun::star::uno::Sequence< com::sun::star::ucb::NumberedSortingInfo >& seqSort );
81 
82 		virtual ~XResultSet_impl();
83 
84 		virtual ContentEventNotifier*        cDEL( void )
85 		{
86 			return 0;
87 		}
88 
89 		virtual ContentEventNotifier*        cEXC( const rtl::OUString )
90 		{
91 			return 0;
92 		}
93 
94 		virtual ContentEventNotifier*          cCEL( void )
95 		{
96 			return 0;
97 		}
98 
99 		virtual PropertySetInfoChangeNotifier* cPSL( void )
100 		{
101 			return 0;
102 		}
103 
104 		virtual PropertyChangeNotifier*        cPCL( void )
105 		{
106 			return 0;
107 		}
108 
109 		virtual rtl::OUString                  getKey( void )
110 		{
111 			return m_aBaseDirectory;
112 		}
113 
114 		sal_Int32 SAL_CALL CtorSuccess();
115 		sal_Int32 SAL_CALL getMinorError();
116 
117 		// XInterface
118 		virtual com::sun::star::uno::Any SAL_CALL
119 		queryInterface(
120 			const com::sun::star::uno::Type& aType )
121 			throw( com::sun::star::uno::RuntimeException);
122 
123 		virtual void SAL_CALL
124 		acquire(
125 			void )
126 			throw();
127 
128 		virtual void SAL_CALL
129 		release(
130 			void )
131 			throw();
132 
133 
134 		// XTypeProvider
135 
136 		XTYPEPROVIDER_DECL()
137 
138 
139 		// XEventListener
140 		virtual void SAL_CALL
141 		disposing(
142 			const com::sun::star::lang::EventObject& Source )
143 			throw( com::sun::star::uno::RuntimeException );
144 
145 		// XComponent
146 		virtual void SAL_CALL
147 		dispose(
148 			void )
149 			throw( com::sun::star::uno::RuntimeException );
150 
151 		virtual void SAL_CALL
152 		addEventListener(
153 			const com::sun::star::uno::Reference< com::sun::star::lang::XEventListener >& xListener )
154 			throw( com::sun::star::uno::RuntimeException );
155 
156 		virtual void SAL_CALL
157 		removeEventListener( const com::sun::star::uno::Reference< com::sun::star::lang::XEventListener >& aListener )
158 			throw( com::sun::star::uno::RuntimeException );
159 
160 
161 		// XRow
162 		virtual sal_Bool SAL_CALL
163 		wasNull(
164 			void )
165 			throw( com::sun::star::sdbc::SQLException,
166 				   com::sun::star::uno::RuntimeException )
167 		{
168 			if( 0<= m_nRow && m_nRow < sal::static_int_cast<sal_Int32>(m_aItems.size()) )
169 				m_nWasNull = m_aItems[m_nRow]->wasNull();
170 			else
171 				m_nWasNull = true;
172 			return m_nWasNull;
173 		}
174 
175 		virtual rtl::OUString SAL_CALL
176 		getString(
177 			sal_Int32 columnIndex )
178 			throw( com::sun::star::sdbc::SQLException,
179 				   com::sun::star::uno::RuntimeException)
180 		{
181 			if( 0 <= m_nRow && m_nRow < sal::static_int_cast<sal_Int32>(m_aItems.size()) )
182 				return m_aItems[m_nRow]->getString( columnIndex );
183 			else
184 				return rtl::OUString();
185 		}
186 
187 		virtual sal_Bool SAL_CALL
188 		getBoolean(
189 			sal_Int32 columnIndex )
190 			throw( com::sun::star::sdbc::SQLException,
191 				   com::sun::star::uno::RuntimeException)
192 		{
193 			if( 0 <= m_nRow && m_nRow < sal::static_int_cast<sal_Int32>(m_aItems.size()) )
194 				return m_aItems[m_nRow]->getBoolean( columnIndex );
195 			else
196 				return false;
197 		}
198 
199 		virtual sal_Int8 SAL_CALL
200 		getByte(
201 			sal_Int32 columnIndex )
202 			throw( com::sun::star::sdbc::SQLException,
203 				   com::sun::star::uno::RuntimeException)
204 		{
205 			if( 0 <= m_nRow && m_nRow < sal::static_int_cast<sal_Int32>(m_aItems.size()) )
206 				return m_aItems[m_nRow]->getByte( columnIndex );
207 			else
208 				return sal_Int8( 0 );
209 		}
210 
211 		virtual sal_Int16 SAL_CALL
212 		getShort(
213 			sal_Int32 columnIndex )
214 			throw(
215 				com::sun::star::sdbc::SQLException,
216 				com::sun::star::uno::RuntimeException)
217 		{
218 			if( 0 <= m_nRow && m_nRow < sal::static_int_cast<sal_Int32>(m_aItems.size()) )
219 				return m_aItems[m_nRow]->getShort( columnIndex );
220 			else
221 				return sal_Int16( 0 );
222 		}
223 
224 		virtual sal_Int32 SAL_CALL
225 		getInt(
226 			sal_Int32 columnIndex )
227 			throw( com::sun::star::sdbc::SQLException,
228 				   com::sun::star::uno::RuntimeException )
229 		{
230 			if( 0 <= m_nRow && m_nRow < sal::static_int_cast<sal_Int32>(m_aItems.size()) )
231 				return m_aItems[m_nRow]->getInt( columnIndex );
232 			else
233 				return sal_Int32( 0 );
234 		}
235 
236 		virtual sal_Int64 SAL_CALL
237 		getLong(
238 			sal_Int32 columnIndex )
239 			throw( com::sun::star::sdbc::SQLException,
240 				   com::sun::star::uno::RuntimeException)
241 		{
242 			if( 0 <= m_nRow && m_nRow < sal::static_int_cast<sal_Int32>(m_aItems.size()) )
243 				return m_aItems[m_nRow]->getLong( columnIndex );
244 			else
245 				return sal_Int64( 0 );
246 		}
247 
248 		virtual float SAL_CALL
249 		getFloat(
250 			sal_Int32 columnIndex )
251 			throw( com::sun::star::sdbc::SQLException,
252 				   com::sun::star::uno::RuntimeException )
253 		{
254 			if( 0 <= m_nRow && m_nRow < sal::static_int_cast<sal_Int32>(m_aItems.size()) )
255 				return m_aItems[m_nRow]->getFloat( columnIndex );
256 			else
257 				return float( 0 );
258 		}
259 
260 		virtual double SAL_CALL
261 		getDouble(
262 			sal_Int32 columnIndex )
263 			throw( com::sun::star::sdbc::SQLException,
264 				   com::sun::star::uno::RuntimeException )
265 		{
266 			if( 0 <= m_nRow && m_nRow < sal::static_int_cast<sal_Int32>(m_aItems.size()) )
267 				return m_aItems[m_nRow]->getDouble( columnIndex );
268 			else
269 				return double( 0 );
270 		}
271 
272 		virtual com::sun::star::uno::Sequence< sal_Int8 > SAL_CALL
273 		getBytes(
274 			sal_Int32 columnIndex )
275 			throw( com::sun::star::sdbc::SQLException,
276 				   com::sun::star::uno::RuntimeException )
277 		{
278 			if( 0 <= m_nRow && m_nRow < sal::static_int_cast<sal_Int32>(m_aItems.size()) )
279 				return m_aItems[m_nRow]->getBytes( columnIndex );
280 			else
281 				return com::sun::star::uno::Sequence< sal_Int8 >();
282 		}
283 
284 		virtual com::sun::star::util::Date SAL_CALL
285 		getDate(
286 			sal_Int32 columnIndex )
287 			throw( com::sun::star::sdbc::SQLException,
288 				   com::sun::star::uno::RuntimeException)
289 		{
290 			if( 0 <= m_nRow && m_nRow < sal::static_int_cast<sal_Int32>(m_aItems.size()) )
291 				return m_aItems[m_nRow]->getDate( columnIndex );
292 			else
293 				return com::sun::star::util::Date();
294 		}
295 
296 		virtual com::sun::star::util::Time SAL_CALL
297 		getTime(
298 			sal_Int32 columnIndex )
299 			throw( com::sun::star::sdbc::SQLException,
300 				   com::sun::star::uno::RuntimeException)
301 		{
302 			if( 0 <= m_nRow && m_nRow < sal::static_int_cast<sal_Int32>(m_aItems.size()) )
303 				return m_aItems[m_nRow]->getTime( columnIndex );
304 			else
305 				return com::sun::star::util::Time();
306 		}
307 
308 		virtual com::sun::star::util::DateTime SAL_CALL
309 		getTimestamp(
310 			sal_Int32 columnIndex )
311 			throw( com::sun::star::sdbc::SQLException,
312 				   com::sun::star::uno::RuntimeException)
313 		{
314 			if( 0 <= m_nRow && m_nRow < sal::static_int_cast<sal_Int32>(m_aItems.size()) )
315 				return m_aItems[m_nRow]->getTimestamp( columnIndex );
316 			else
317 				return com::sun::star::util::DateTime();
318 		}
319 
320 		virtual com::sun::star::uno::Reference< com::sun::star::io::XInputStream > SAL_CALL
321 		getBinaryStream(
322 			sal_Int32 columnIndex )
323 			throw( com::sun::star::sdbc::SQLException,
324 				   com::sun::star::uno::RuntimeException)
325 		{
326 			if( 0 <= m_nRow && m_nRow < sal::static_int_cast<sal_Int32>(m_aItems.size()) )
327 				return m_aItems[m_nRow]->getBinaryStream( columnIndex );
328 			else
329 				return com::sun::star::uno::Reference< com::sun::star::io::XInputStream >();
330 		}
331 
332 		virtual com::sun::star::uno::Reference< com::sun::star::io::XInputStream > SAL_CALL
333 		getCharacterStream(
334 			sal_Int32 columnIndex )
335 			throw( com::sun::star::sdbc::SQLException,
336 				   com::sun::star::uno::RuntimeException)
337 		{
338 			if( 0 <= m_nRow && m_nRow < sal::static_int_cast<sal_Int32>(m_aItems.size()) )
339 				return m_aItems[m_nRow]->getCharacterStream( columnIndex );
340 			else
341 				return com::sun::star::uno::Reference< com::sun::star::io::XInputStream >();
342 		}
343 
344 		virtual com::sun::star::uno::Any SAL_CALL
345 		getObject(
346 			sal_Int32 columnIndex,
347 			const com::sun::star::uno::Reference< com::sun::star::container::XNameAccess >& typeMap )
348 			throw( com::sun::star::sdbc::SQLException,
349 				   com::sun::star::uno::RuntimeException)
350 		{
351 			if( 0 <= m_nRow && m_nRow < sal::static_int_cast<sal_Int32>(m_aItems.size()) )
352 				return m_aItems[m_nRow]->getObject( columnIndex,typeMap );
353 			else
354 				return com::sun::star::uno::Any();
355 		}
356 
357 		virtual com::sun::star::uno::Reference< com::sun::star::sdbc::XRef > SAL_CALL
358 		getRef(
359 			sal_Int32 columnIndex )
360 			throw( com::sun::star::sdbc::SQLException,
361 				   com::sun::star::uno::RuntimeException)
362 		{
363 			if( 0 <= m_nRow && m_nRow < sal::static_int_cast<sal_Int32>(m_aItems.size()) )
364 				return m_aItems[m_nRow]->getRef( columnIndex );
365 			else
366 				return com::sun::star::uno::Reference< com::sun::star::sdbc::XRef >();
367 		}
368 
369 		virtual com::sun::star::uno::Reference< com::sun::star::sdbc::XBlob > SAL_CALL
370 		getBlob(
371 			sal_Int32 columnIndex )
372 			throw( com::sun::star::sdbc::SQLException,
373 				   com::sun::star::uno::RuntimeException)
374 		{
375 			if( 0 <= m_nRow && m_nRow < sal::static_int_cast<sal_Int32>(m_aItems.size()) )
376 				return m_aItems[m_nRow]->getBlob( columnIndex );
377 			else
378 				return com::sun::star::uno::Reference< com::sun::star::sdbc::XBlob >();
379 		}
380 
381 		virtual com::sun::star::uno::Reference< com::sun::star::sdbc::XClob > SAL_CALL
382 		getClob(
383 			sal_Int32 columnIndex )
384 			throw( com::sun::star::sdbc::SQLException,
385 				   com::sun::star::uno::RuntimeException)
386 		{
387 			if( 0 <= m_nRow && m_nRow < sal::static_int_cast<sal_Int32>(m_aItems.size()) )
388 				return m_aItems[m_nRow]->getClob( columnIndex );
389 			else
390 				return com::sun::star::uno::Reference< com::sun::star::sdbc::XClob >();
391 		}
392 
393 		virtual com::sun::star::uno::Reference< com::sun::star::sdbc::XArray > SAL_CALL
394 		getArray(
395 			sal_Int32 columnIndex )
396 			throw( com::sun::star::sdbc::SQLException,
397 				   com::sun::star::uno::RuntimeException)
398 		{
399 			if( 0 <= m_nRow && m_nRow < sal::static_int_cast<sal_Int32>(m_aItems.size()) )
400 				return m_aItems[m_nRow]->getArray( columnIndex );
401 			else
402 				return com::sun::star::uno::Reference< com::sun::star::sdbc::XArray >();
403 		}
404 
405 
406 		// XResultSet
407 
408 		virtual sal_Bool SAL_CALL
409 		next(
410 			void )
411 			throw( com::sun::star::sdbc::SQLException,
412 				   com::sun::star::uno::RuntimeException);
413 
414 		virtual sal_Bool SAL_CALL
415 		isBeforeFirst(
416 			void )
417 			throw( com::sun::star::sdbc::SQLException,
418 				   com::sun::star::uno::RuntimeException);
419 
420 		virtual sal_Bool SAL_CALL
421 		isAfterLast(
422 			void )
423 			throw( com::sun::star::sdbc::SQLException,
424 				   com::sun::star::uno::RuntimeException);
425 
426 		virtual sal_Bool SAL_CALL
427 		isFirst(
428 			void  )
429 			throw( com::sun::star::sdbc::SQLException,
430 				   com::sun::star::uno::RuntimeException);
431 
432 		virtual sal_Bool SAL_CALL
433 		isLast(
434 			void  )
435 			throw( com::sun::star::sdbc::SQLException,
436 				   com::sun::star::uno::RuntimeException);
437 
438 		virtual void SAL_CALL
439 		beforeFirst(
440 			void  )
441 			throw( com::sun::star::sdbc::SQLException,
442 				   com::sun::star::uno::RuntimeException);
443 
444 		virtual void SAL_CALL
445 		afterLast(
446 			void  )
447 			throw( com::sun::star::sdbc::SQLException,
448 				   com::sun::star::uno::RuntimeException);
449 
450 		virtual sal_Bool SAL_CALL
451 		first(
452 			void  )
453 			throw( com::sun::star::sdbc::SQLException,
454 				   com::sun::star::uno::RuntimeException);
455 
456 		virtual sal_Bool SAL_CALL
457 		last(
458 			void  )
459 			throw( com::sun::star::sdbc::SQLException,
460 				   com::sun::star::uno::RuntimeException);
461 
462 		virtual sal_Int32 SAL_CALL
463 		getRow(
464 			void  )
465 			throw( com::sun::star::sdbc::SQLException,
466 				   com::sun::star::uno::RuntimeException);
467 
468 		virtual sal_Bool SAL_CALL
469 		absolute(
470 			sal_Int32 row )
471 			throw( com::sun::star::sdbc::SQLException,
472 				   com::sun::star::uno::RuntimeException);
473 
474 		virtual sal_Bool SAL_CALL
475 		relative(
476 			sal_Int32 rows )
477 			throw( com::sun::star::sdbc::SQLException,
478 				   com::sun::star::uno::RuntimeException);
479 
480 		virtual sal_Bool SAL_CALL
481 		previous(
482 			void  )
483 			throw( com::sun::star::sdbc::SQLException,
484 				   com::sun::star::uno::RuntimeException);
485 
486 		virtual void SAL_CALL
487 		refreshRow(
488 			void  )
489 			throw( com::sun::star::sdbc::SQLException,
490 				   com::sun::star::uno::RuntimeException);
491 
492 		virtual sal_Bool SAL_CALL
493 		rowUpdated(
494 			void )
495 			throw( com::sun::star::sdbc::SQLException,
496 				   com::sun::star::uno::RuntimeException);
497 
498 		virtual sal_Bool SAL_CALL
499 		rowInserted(
500 			void  )
501 			throw( com::sun::star::sdbc::SQLException,
502 				   com::sun::star::uno::RuntimeException);
503 
504 		virtual sal_Bool SAL_CALL
505 		rowDeleted(
506 			void  )
507 			throw( com::sun::star::sdbc::SQLException,
508 				   com::sun::star::uno::RuntimeException);
509 
510 
511 		virtual  com::sun::star::uno::Reference<  com::sun::star::uno::XInterface > SAL_CALL
512 		getStatement(
513 			void  )
514 			throw( com::sun::star::sdbc::SQLException,
515 				   com::sun::star::uno::RuntimeException);
516 
517 
518 		// XDynamicResultSet
519 
520 		virtual com::sun::star::uno::Reference< com::sun::star::sdbc::XResultSet > SAL_CALL
521 		getStaticResultSet(
522 			void )
523 			throw( com::sun::star::ucb::ListenerAlreadySetException,
524 				   com::sun::star::uno::RuntimeException );
525 
526 		virtual void SAL_CALL
527 		setListener(
528 			const com::sun::star::uno::Reference<
529 			com::sun::star::ucb::XDynamicResultSetListener >& Listener )
530 			throw( com::sun::star::ucb::ListenerAlreadySetException,
531 				   com::sun::star::uno::RuntimeException );
532 
533 		virtual void SAL_CALL
534 		connectToCache( const com::sun::star::uno::Reference< com::sun::star::ucb::XDynamicResultSet > & xCache )
535 			throw( com::sun::star::ucb::ListenerAlreadySetException,
536 				   com::sun::star::ucb::AlreadyInitializedException,
537 				   com::sun::star::ucb::ServiceNotFoundException,
538 				   com::sun::star::uno::RuntimeException );
539 
540 		virtual sal_Int16 SAL_CALL
541 		getCapabilities()
542 			throw( com::sun::star::uno::RuntimeException );
543 
544 
545 		// XCloseable
546 
547 		virtual void SAL_CALL
548 		close(
549 			void )
550 			throw( com::sun::star::sdbc::SQLException,
551 				   com::sun::star::uno::RuntimeException);
552 
553 		// XContentAccess
554 
555 		virtual rtl::OUString SAL_CALL
556 		queryContentIdentifierString(
557 			void )
558 			throw( com::sun::star::uno::RuntimeException );
559 
560 		virtual com::sun::star::uno::Reference< com::sun::star::ucb::XContentIdentifier > SAL_CALL
561 		queryContentIdentifier(
562 			void )
563 			throw( com::sun::star::uno::RuntimeException );
564 
565 		virtual com::sun::star::uno::Reference< com::sun::star::ucb::XContent > SAL_CALL
566 		queryContent(
567 			void )
568 			throw( com::sun::star::uno::RuntimeException );
569 
570 		// XResultSetMetaDataSupplier
571 		virtual com::sun::star::uno::Reference< com::sun::star::sdbc::XResultSetMetaData > SAL_CALL
572 		getMetaData(
573 			void )
574 			throw( com::sun::star::sdbc::SQLException,
575 				   com::sun::star::uno::RuntimeException);
576 
577 
578 		// XPropertySet
579 		virtual com::sun::star::uno::Reference< com::sun::star::beans::XPropertySetInfo > SAL_CALL
580 		getPropertySetInfo()
581 			throw( com::sun::star::uno::RuntimeException);
582 
583 		virtual void SAL_CALL setPropertyValue(
584 			const rtl::OUString& aPropertyName,
585 			const com::sun::star::uno::Any& aValue )
586 			throw( com::sun::star::beans::UnknownPropertyException,
587 				   com::sun::star::beans::PropertyVetoException,
588 				   com::sun::star::lang::IllegalArgumentException,
589 				   com::sun::star::lang::WrappedTargetException,
590 				   com::sun::star::uno::RuntimeException);
591 
592 		virtual com::sun::star::uno::Any SAL_CALL
593 		getPropertyValue(
594 			const rtl::OUString& PropertyName )
595 			throw( com::sun::star::beans::UnknownPropertyException,
596 				   com::sun::star::lang::WrappedTargetException,
597 				   com::sun::star::uno::RuntimeException);
598 
599 		virtual void SAL_CALL
600 		addPropertyChangeListener(
601 			const rtl::OUString& aPropertyName,
602 			const com::sun::star::uno::Reference< com::sun::star::beans::XPropertyChangeListener >& xListener )
603 			throw( com::sun::star::beans::UnknownPropertyException,
604 				   com::sun::star::lang::WrappedTargetException,
605 				   com::sun::star::uno::RuntimeException);
606 
607 		virtual void SAL_CALL
608 		removePropertyChangeListener(
609 			const rtl::OUString& aPropertyName,
610 			const com::sun::star::uno::Reference< com::sun::star::beans::XPropertyChangeListener >& aListener )
611 			throw( com::sun::star::beans::UnknownPropertyException,
612 				   com::sun::star::lang::WrappedTargetException,
613 				   com::sun::star::uno::RuntimeException);
614 
615 		virtual void SAL_CALL
616 		addVetoableChangeListener(
617 			const rtl::OUString& PropertyName,
618 			const com::sun::star::uno::Reference< com::sun::star::beans::XVetoableChangeListener >& aListener )
619 			throw( com::sun::star::beans::UnknownPropertyException,
620 				   com::sun::star::lang::WrappedTargetException,
621 				   com::sun::star::uno::RuntimeException);
622 
623 		virtual void SAL_CALL removeVetoableChangeListener(
624 			const rtl::OUString& PropertyName,
625 			const com::sun::star::uno::Reference< com::sun::star::beans::XVetoableChangeListener >& aListener )
626 			throw( com::sun::star::beans::UnknownPropertyException,
627 				   com::sun::star::lang::WrappedTargetException,
628 				   com::sun::star::uno::RuntimeException);
629 
630 	private:
631 
632 		// Members
633 		//  const uno::Reference< lang::XMultiServiceFactory > m_xMSF;
634 		//  const uno::Reference< ucb::XContentProvider > m_xProvider;
635 
636 		shell*                              m_pMyShell;
637 		com::sun::star::uno::Reference< com::sun::star::ucb::XContentProvider >  m_xProvider;
638 		sal_Bool                            m_nIsOpen;
639 		sal_Int32                           m_nRow;
640 		sal_Bool                            m_nWasNull;
641 		sal_Int32                           m_nOpenMode;
642 		sal_Bool                            m_bRowCountFinal;
643 
644 		typedef std::vector< com::sun::star::uno::Reference< com::sun::star::ucb::XContentIdentifier > > IdentSet;
645 		typedef std::vector< com::sun::star::uno::Reference< com::sun::star::sdbc::XRow > >         ItemSet;
646 		typedef std::vector< rtl::OUString >                        UnqPathSet;
647 
648 		IdentSet                            m_aIdents;
649 		ItemSet                             m_aItems;
650 		UnqPathSet                          m_aUnqPath;
651 		const rtl::OUString                 m_aBaseDirectory;
652 
653 		osl::Directory                        m_aFolder;
654 		com::sun::star::uno::Sequence< com::sun::star::beans::Property >      m_sProperty;
655 		com::sun::star::uno::Sequence< com::sun::star::ucb::NumberedSortingInfo >  m_sSortingInfo;
656 
657 		osl::Mutex                          m_aMutex;
658 		osl::Mutex                          m_aEventListenerMutex;
659 		cppu::OInterfaceContainerHelper*    m_pDisposeEventListeners;
660 
661 		cppu::OInterfaceContainerHelper*    m_pRowCountListeners;
662 		cppu::OInterfaceContainerHelper*    m_pIsFinalListeners;
663 
664 		com::sun::star::uno::Reference< com::sun::star::ucb::XDynamicResultSetListener >       m_xListener;
665         sal_Bool                            m_bStatic;
666 
667 		sal_Int32                                          m_nErrorCode;
668 		sal_Int32                                          m_nMinorErrorCode;
669 
670 		// Methods
671 		sal_Bool SAL_CALL OneMore( void )
672 			throw( com::sun::star::sdbc::SQLException,
673 				   com::sun::star::uno::RuntimeException );
674 
675 		void rowCountChanged();
676 		void isFinalChanged();
677 	};
678 
679 
680 } // end namespace fileaccess
681 
682 
683 #endif
684