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