xref: /AOO41X/main/sc/inc/datauno.hxx (revision 38d50f7b14e1cf975d8c6468d9633894cd59b523)
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 #ifndef SC_DATAUNO_HXX
25 #define SC_DATAUNO_HXX
26 
27 #include "global.hxx"
28 #include "queryparam.hxx"
29 
30 #include <com/sun/star/sheet/TableFilterField.hpp>
31 #include <com/sun/star/sheet/GeneralFunction.hpp>
32 #include <com/sun/star/sheet/XCellRangeReferrer.hpp>
33 #include <com/sun/star/sheet/XSheetFilterDescriptor.hpp>
34 #include <com/sun/star/sheet/XConsolidationDescriptor.hpp>
35 #include <com/sun/star/sheet/XDatabaseRanges.hpp>
36 #include <com/sun/star/sheet/XDatabaseRange.hpp>
37 #include <com/sun/star/sheet/XSubTotalDescriptor.hpp>
38 #include <com/sun/star/sheet/XSubTotalField.hpp>
39 #include <com/sun/star/lang/XServiceInfo.hpp>
40 #include <com/sun/star/container/XEnumerationAccess.hpp>
41 #include <com/sun/star/container/XIndexAccess.hpp>
42 #include <com/sun/star/beans/XPropertySet.hpp>
43 #include <com/sun/star/lang/XUnoTunnel.hpp>
44 #include <com/sun/star/container/XNamed.hpp>
45 #include <com/sun/star/util/XRefreshable.hpp>
46 #include <com/sun/star/sheet/XSheetFilterDescriptor2.hpp>
47 #include <cppuhelper/implbase2.hxx>
48 #include <cppuhelper/implbase3.hxx>
49 #include <cppuhelper/implbase4.hxx>
50 #include <cppuhelper/implbase5.hxx>
51 #include <cppuhelper/implbase6.hxx>
52 #include "svl/itemprop.hxx"
53 #include "svl/lstner.hxx"
54 
55 class ScDBData;
56 class ScDocShell;
57 
58 class ScSubTotalFieldObj;
59 class ScDatabaseRangeObj;
60 class ScDataPilotDescriptorBase;
61 
62 struct ScSortParam;
63 
64 typedef ::com::sun::star::uno::Reference<
65             ::com::sun::star::util::XRefreshListener >* XDBRefreshListenerPtr;
66 SV_DECL_PTRARR_DEL( XDBRefreshListenerArr_Impl, XDBRefreshListenerPtr, 4, 4 )
67 
68 class ScDataUnoConversion
69 {
70 public:
71     static ScSubTotalFunc   GeneralToSubTotal( com::sun::star::sheet::GeneralFunction eSummary );
72     static com::sun::star::sheet::GeneralFunction SubTotalToGeneral( ScSubTotalFunc eSubTotal );
73 };
74 
75 
76 //  ImportDescriptor gibt's nicht mehr als Uno-Objekt, nur noch Property-Sequence
77 
78 class ScImportDescriptor
79 {
80 public:
81     static void FillImportParam(
82                     ScImportParam& rParam,
83                     const com::sun::star::uno::Sequence<com::sun::star::beans::PropertyValue>& rSeq );
84     static void FillProperties(
85                     com::sun::star::uno::Sequence<com::sun::star::beans::PropertyValue>& rSeq,
86                     const ScImportParam& rParam );
87     static long GetPropertyCount();
88 };
89 
90 //  SortDescriptor gibt's nicht mehr als Uno-Objekt, nur noch Property-Sequence
91 
92 class ScSortDescriptor
93 {
94 public:
95     static void FillSortParam(
96                     ScSortParam& rParam,
97                     const com::sun::star::uno::Sequence<com::sun::star::beans::PropertyValue>& rSeq );
98     static void FillProperties(
99                     com::sun::star::uno::Sequence<com::sun::star::beans::PropertyValue>& rSeq,
100                     const ScSortParam& rParam );
101     static long GetPropertyCount();
102 };
103 
104 
105 //  ScSubTotalDescriptorBase - Basisklasse fuer SubTotalDescriptor alleine und im DB-Bereich
106 
107 //  to uno, both look the same
108 
109 class ScSubTotalDescriptorBase : public cppu::WeakImplHelper6<
110                                         com::sun::star::sheet::XSubTotalDescriptor,
111                                         com::sun::star::container::XEnumerationAccess,
112                                         com::sun::star::container::XIndexAccess,
113                                         com::sun::star::beans::XPropertySet,
114                                         com::sun::star::lang::XUnoTunnel,
115                                         com::sun::star::lang::XServiceInfo >
116 {
117 private:
118     SfxItemPropertySet      aPropSet;
119 
120     ScSubTotalFieldObj*     GetObjectByIndex_Impl(sal_uInt16 nIndex);
121 
122 public:
123                             ScSubTotalDescriptorBase();
124     virtual                 ~ScSubTotalDescriptorBase();
125 
126                             // in derived classes:
127                             // (Fields are within the range)
128     virtual void            GetData( ScSubTotalParam& rParam ) const = 0;
129     virtual void            PutData( const ScSubTotalParam& rParam ) = 0;
130 
131                             // XSubTotalDescriptor
132     virtual void SAL_CALL   addNew( const ::com::sun::star::uno::Sequence<
133                                     ::com::sun::star::sheet::SubTotalColumn >& aSubTotalColumns,
134                                 sal_Int32 nGroupColumn )
135                                     throw(::com::sun::star::uno::RuntimeException);
136     virtual void SAL_CALL   clear() throw(::com::sun::star::uno::RuntimeException);
137 
138                             // XIndexAccess
139     virtual sal_Int32 SAL_CALL getCount() throw(::com::sun::star::uno::RuntimeException);
140     virtual ::com::sun::star::uno::Any SAL_CALL getByIndex( sal_Int32 Index )
141                                 throw(::com::sun::star::lang::IndexOutOfBoundsException,
142                                     ::com::sun::star::lang::WrappedTargetException,
143                                     ::com::sun::star::uno::RuntimeException);
144 
145                             // XEnumerationAccess
146     virtual ::com::sun::star::uno::Reference< ::com::sun::star::container::XEnumeration > SAL_CALL
147                             createEnumeration() throw(::com::sun::star::uno::RuntimeException);
148 
149                             // XElementAccess
150     virtual ::com::sun::star::uno::Type SAL_CALL getElementType()
151                                 throw(::com::sun::star::uno::RuntimeException);
152     virtual sal_Bool SAL_CALL hasElements() throw(::com::sun::star::uno::RuntimeException);
153 
154                             // XPropertySet
155     virtual ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySetInfo >
156                             SAL_CALL getPropertySetInfo()
157                                 throw(::com::sun::star::uno::RuntimeException);
158     virtual void SAL_CALL   setPropertyValue( const ::rtl::OUString& aPropertyName,
159                                     const ::com::sun::star::uno::Any& aValue )
160                                 throw(::com::sun::star::beans::UnknownPropertyException,
161                                     ::com::sun::star::beans::PropertyVetoException,
162                                     ::com::sun::star::lang::IllegalArgumentException,
163                                     ::com::sun::star::lang::WrappedTargetException,
164                                     ::com::sun::star::uno::RuntimeException);
165     virtual ::com::sun::star::uno::Any SAL_CALL getPropertyValue(
166                                     const ::rtl::OUString& PropertyName )
167                                 throw(::com::sun::star::beans::UnknownPropertyException,
168                                     ::com::sun::star::lang::WrappedTargetException,
169                                     ::com::sun::star::uno::RuntimeException);
170     virtual void SAL_CALL   addPropertyChangeListener( const ::rtl::OUString& aPropertyName,
171                                     const ::com::sun::star::uno::Reference<
172                                         ::com::sun::star::beans::XPropertyChangeListener >& xListener )
173                                 throw(::com::sun::star::beans::UnknownPropertyException,
174                                     ::com::sun::star::lang::WrappedTargetException,
175                                     ::com::sun::star::uno::RuntimeException);
176     virtual void SAL_CALL   removePropertyChangeListener( const ::rtl::OUString& aPropertyName,
177                                     const ::com::sun::star::uno::Reference<
178                                         ::com::sun::star::beans::XPropertyChangeListener >& aListener )
179                                 throw(::com::sun::star::beans::UnknownPropertyException,
180                                     ::com::sun::star::lang::WrappedTargetException,
181                                     ::com::sun::star::uno::RuntimeException);
182     virtual void SAL_CALL   addVetoableChangeListener( const ::rtl::OUString& PropertyName,
183                                     const ::com::sun::star::uno::Reference<
184                                         ::com::sun::star::beans::XVetoableChangeListener >& aListener )
185                                 throw(::com::sun::star::beans::UnknownPropertyException,
186                                     ::com::sun::star::lang::WrappedTargetException,
187                                     ::com::sun::star::uno::RuntimeException);
188     virtual void SAL_CALL   removeVetoableChangeListener( const ::rtl::OUString& PropertyName,
189                                     const ::com::sun::star::uno::Reference<
190                                         ::com::sun::star::beans::XVetoableChangeListener >& aListener )
191                                 throw(::com::sun::star::beans::UnknownPropertyException,
192                                     ::com::sun::star::lang::WrappedTargetException,
193                                     ::com::sun::star::uno::RuntimeException);
194 
195                             // XUnoTunnel
196     virtual sal_Int64 SAL_CALL getSomething( const ::com::sun::star::uno::Sequence<
197                                     sal_Int8 >& aIdentifier )
198                                 throw(::com::sun::star::uno::RuntimeException);
199 
200     static const com::sun::star::uno::Sequence<sal_Int8>& getUnoTunnelId();
201     static ScSubTotalDescriptorBase* getImplementation( const com::sun::star::uno::Reference<
202                                     com::sun::star::sheet::XSubTotalDescriptor> xObj );
203 
204                             // XServiceInfo
205     virtual ::rtl::OUString SAL_CALL getImplementationName()
206                                 throw(::com::sun::star::uno::RuntimeException);
207     virtual sal_Bool SAL_CALL supportsService( const ::rtl::OUString& ServiceName )
208                                 throw(::com::sun::star::uno::RuntimeException);
209     virtual ::com::sun::star::uno::Sequence< ::rtl::OUString > SAL_CALL getSupportedServiceNames()
210                                 throw(::com::sun::star::uno::RuntimeException);
211 };
212 
213 
214 //  ScSubTotalDescriptor - dummer Container zur Benutzung mit XImportTarget
215 
216 class ScSubTotalDescriptor : public ScSubTotalDescriptorBase
217 {
218 private:
219     ScSubTotalParam         aStoredParam;
220 
221 public:
222                             ScSubTotalDescriptor();
223     virtual                 ~ScSubTotalDescriptor();
224 
225                             // von ScSubTotalDescriptorBase:
226     virtual void            GetData( ScSubTotalParam& rParam ) const;
227     virtual void            PutData( const ScSubTotalParam& rParam );
228 
229                             // Zugriff von aussen:
230     void                    SetParam( const ScSubTotalParam& rNew );
231 //  const ScSubTotalParam&  GetParam() const    { return aStoredParam; }
232 };
233 
234 
235 //  ScRangeSubTotalDescriptor - SubTotalDescriptor eines Datenbank-Bereichs
236 
237 class ScRangeSubTotalDescriptor : public ScSubTotalDescriptorBase
238 {
239 private:
240     ScDatabaseRangeObj*     pParent;
241 
242 public:
243                             ScRangeSubTotalDescriptor(ScDatabaseRangeObj* pPar);
244     virtual                 ~ScRangeSubTotalDescriptor();
245 
246                             // von ScSubTotalDescriptorBase:
247     virtual void            GetData( ScSubTotalParam& rParam ) const;
248     virtual void            PutData( const ScSubTotalParam& rParam );
249 };
250 
251 
252 class ScSubTotalFieldObj : public cppu::WeakImplHelper2<
253                                 com::sun::star::sheet::XSubTotalField,
254                                 com::sun::star::lang::XServiceInfo >
255 {
256 private:
257     com::sun::star::uno::Reference<com::sun::star::sheet::XSubTotalDescriptor> xRef;
258     ScSubTotalDescriptorBase&   rParent;
259     sal_uInt16                      nPos;
260 
261 public:
262                             ScSubTotalFieldObj( ScSubTotalDescriptorBase* pDesc, sal_uInt16 nP );
263     virtual                 ~ScSubTotalFieldObj();
264 
265                             // XSubTotalField
266     virtual sal_Int32 SAL_CALL getGroupColumn() throw(::com::sun::star::uno::RuntimeException);
267     virtual void SAL_CALL   setGroupColumn( sal_Int32 nGroupColumn )
268                                 throw(::com::sun::star::uno::RuntimeException);
269     virtual ::com::sun::star::uno::Sequence< ::com::sun::star::sheet::SubTotalColumn > SAL_CALL
270                             getSubTotalColumns() throw(::com::sun::star::uno::RuntimeException);
271     virtual void SAL_CALL   setSubTotalColumns( const ::com::sun::star::uno::Sequence<
272                                 ::com::sun::star::sheet::SubTotalColumn >& aSubTotalColumns )
273                                     throw(::com::sun::star::uno::RuntimeException);
274 
275                             // XServiceInfo
276     virtual ::rtl::OUString SAL_CALL getImplementationName()
277                                 throw(::com::sun::star::uno::RuntimeException);
278     virtual sal_Bool SAL_CALL supportsService( const ::rtl::OUString& ServiceName )
279                                 throw(::com::sun::star::uno::RuntimeException);
280     virtual ::com::sun::star::uno::Sequence< ::rtl::OUString > SAL_CALL getSupportedServiceNames()
281                                 throw(::com::sun::star::uno::RuntimeException);
282 };
283 
284 
285 class ScConsolidationDescriptor : public cppu::WeakImplHelper2<
286                                         com::sun::star::sheet::XConsolidationDescriptor,
287                                         com::sun::star::lang::XServiceInfo >
288 {
289 private:
290     ScConsolidateParam      aParam;
291 
292 public:
293                             ScConsolidationDescriptor();
294     virtual                 ~ScConsolidationDescriptor();
295 
296     void                    SetParam( const ScConsolidateParam& rNew );
GetParam() const297     const ScConsolidateParam& GetParam() const  { return aParam; }
298 
299                             // XConsolidationDescriptor
300     virtual ::com::sun::star::sheet::GeneralFunction SAL_CALL getFunction()
301                                 throw(::com::sun::star::uno::RuntimeException);
302     virtual void SAL_CALL   setFunction( ::com::sun::star::sheet::GeneralFunction nFunction )
303                                 throw(::com::sun::star::uno::RuntimeException);
304     virtual ::com::sun::star::uno::Sequence< ::com::sun::star::table::CellRangeAddress > SAL_CALL
305                             getSources(  ) throw(::com::sun::star::uno::RuntimeException);
306     virtual void SAL_CALL   setSources( const ::com::sun::star::uno::Sequence<
307                                 ::com::sun::star::table::CellRangeAddress >& aSources )
308                                     throw(::com::sun::star::uno::RuntimeException);
309     virtual ::com::sun::star::table::CellAddress SAL_CALL getStartOutputPosition()
310                                 throw(::com::sun::star::uno::RuntimeException);
311     virtual void SAL_CALL   setStartOutputPosition(
312                                 const ::com::sun::star::table::CellAddress& aStartOutputPosition )
313                                     throw(::com::sun::star::uno::RuntimeException);
314     virtual sal_Bool SAL_CALL getUseColumnHeaders() throw(::com::sun::star::uno::RuntimeException);
315     virtual void SAL_CALL   setUseColumnHeaders( sal_Bool bUseColumnHeaders )
316                                 throw(::com::sun::star::uno::RuntimeException);
317     virtual sal_Bool SAL_CALL getUseRowHeaders() throw(::com::sun::star::uno::RuntimeException);
318     virtual void SAL_CALL   setUseRowHeaders( sal_Bool bUseRowHeaders )
319                                 throw(::com::sun::star::uno::RuntimeException);
320     virtual sal_Bool SAL_CALL getInsertLinks() throw(::com::sun::star::uno::RuntimeException);
321     virtual void SAL_CALL   setInsertLinks( sal_Bool bInsertLinks )
322                                 throw(::com::sun::star::uno::RuntimeException);
323 
324                             // XServiceInfo
325     virtual ::rtl::OUString SAL_CALL getImplementationName()
326                                 throw(::com::sun::star::uno::RuntimeException);
327     virtual sal_Bool SAL_CALL supportsService( const ::rtl::OUString& ServiceName )
328                                 throw(::com::sun::star::uno::RuntimeException);
329     virtual ::com::sun::star::uno::Sequence< ::rtl::OUString > SAL_CALL getSupportedServiceNames()
330                                 throw(::com::sun::star::uno::RuntimeException);
331 };
332 
333 
334 //  ScFilterDescriptorBase - Basisklasse fuer FilterDescriptor
335 //                           alleine, im DB-Bereich und im DataPilot
336 
337 //  to uno, all three look the same
338 
339 class ScFilterDescriptorBase : public cppu::WeakImplHelper4<
340                                     com::sun::star::sheet::XSheetFilterDescriptor,
341                                     com::sun::star::sheet::XSheetFilterDescriptor2,
342                                     com::sun::star::beans::XPropertySet,
343                                     com::sun::star::lang::XServiceInfo >,
344                                public SfxListener
345 {
346 private:
347     SfxItemPropertySet      aPropSet;
348     ScDocShell*             pDocSh;
349 
350 public:
351                             ScFilterDescriptorBase(ScDocShell* pDocShell);
352     virtual                 ~ScFilterDescriptorBase();
353 
354     virtual void            Notify( SfxBroadcaster& rBC, const SfxHint& rHint );
355 
356                             // in den Ableitungen:
357                             // (nField[] hier innerhalb des Bereichs)
358     virtual void            GetData( ScQueryParam& rParam ) const = 0;
359     virtual void            PutData( const ScQueryParam& rParam ) = 0;
360 
361                             // XSheetFilterDescriptor
362     virtual ::com::sun::star::uno::Sequence< ::com::sun::star::sheet::TableFilterField > SAL_CALL
363                             getFilterFields() throw(::com::sun::star::uno::RuntimeException);
364     virtual void SAL_CALL   setFilterFields( const ::com::sun::star::uno::Sequence<
365                                 ::com::sun::star::sheet::TableFilterField >& aFilterFields )
366                                     throw(::com::sun::star::uno::RuntimeException);
367 
368                             // XSheetFilterDescriptor2
369     virtual ::com::sun::star::uno::Sequence< ::com::sun::star::sheet::TableFilterField2 > SAL_CALL
370                             getFilterFields2() throw(::com::sun::star::uno::RuntimeException);
371     virtual void SAL_CALL   setFilterFields2( const ::com::sun::star::uno::Sequence<
372                                 ::com::sun::star::sheet::TableFilterField2 >& aFilterFields )
373                                     throw(::com::sun::star::uno::RuntimeException);
374 
375                             // XPropertySet
376     virtual ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySetInfo >
377                             SAL_CALL getPropertySetInfo()
378                                 throw(::com::sun::star::uno::RuntimeException);
379     virtual void SAL_CALL   setPropertyValue( const ::rtl::OUString& aPropertyName,
380                                     const ::com::sun::star::uno::Any& aValue )
381                                 throw(::com::sun::star::beans::UnknownPropertyException,
382                                     ::com::sun::star::beans::PropertyVetoException,
383                                     ::com::sun::star::lang::IllegalArgumentException,
384                                     ::com::sun::star::lang::WrappedTargetException,
385                                     ::com::sun::star::uno::RuntimeException);
386     virtual ::com::sun::star::uno::Any SAL_CALL getPropertyValue(
387                                     const ::rtl::OUString& PropertyName )
388                                 throw(::com::sun::star::beans::UnknownPropertyException,
389                                     ::com::sun::star::lang::WrappedTargetException,
390                                     ::com::sun::star::uno::RuntimeException);
391     virtual void SAL_CALL   addPropertyChangeListener( const ::rtl::OUString& aPropertyName,
392                                     const ::com::sun::star::uno::Reference<
393                                         ::com::sun::star::beans::XPropertyChangeListener >& xListener )
394                                 throw(::com::sun::star::beans::UnknownPropertyException,
395                                     ::com::sun::star::lang::WrappedTargetException,
396                                     ::com::sun::star::uno::RuntimeException);
397     virtual void SAL_CALL   removePropertyChangeListener( const ::rtl::OUString& aPropertyName,
398                                     const ::com::sun::star::uno::Reference<
399                                         ::com::sun::star::beans::XPropertyChangeListener >& aListener )
400                                 throw(::com::sun::star::beans::UnknownPropertyException,
401                                     ::com::sun::star::lang::WrappedTargetException,
402                                     ::com::sun::star::uno::RuntimeException);
403     virtual void SAL_CALL   addVetoableChangeListener( const ::rtl::OUString& PropertyName,
404                                     const ::com::sun::star::uno::Reference<
405                                         ::com::sun::star::beans::XVetoableChangeListener >& aListener )
406                                 throw(::com::sun::star::beans::UnknownPropertyException,
407                                     ::com::sun::star::lang::WrappedTargetException,
408                                     ::com::sun::star::uno::RuntimeException);
409     virtual void SAL_CALL   removeVetoableChangeListener( const ::rtl::OUString& PropertyName,
410                                     const ::com::sun::star::uno::Reference<
411                                         ::com::sun::star::beans::XVetoableChangeListener >& aListener )
412                                 throw(::com::sun::star::beans::UnknownPropertyException,
413                                     ::com::sun::star::lang::WrappedTargetException,
414                                     ::com::sun::star::uno::RuntimeException);
415 
416                             // XServiceInfo
417     virtual ::rtl::OUString SAL_CALL getImplementationName()
418                                 throw(::com::sun::star::uno::RuntimeException);
419     virtual sal_Bool SAL_CALL supportsService( const ::rtl::OUString& ServiceName )
420                                 throw(::com::sun::star::uno::RuntimeException);
421     virtual ::com::sun::star::uno::Sequence< ::rtl::OUString > SAL_CALL getSupportedServiceNames()
422                                 throw(::com::sun::star::uno::RuntimeException);
423 };
424 
425 
426 //  ScFilterDescriptor - dummer Container zur Benutzung mit XFilterable
427 
428 class ScFilterDescriptor : public ScFilterDescriptorBase
429 {
430 private:
431     ScQueryParam            aStoredParam;       // nField[] hier innerhalb des Bereichs
432 
433 public:
434                             ScFilterDescriptor(ScDocShell* pDocSh);
435     virtual                 ~ScFilterDescriptor();
436 
437                             // von ScFilterDescriptorBase:
438     virtual void            GetData( ScQueryParam& rParam ) const;
439     virtual void            PutData( const ScQueryParam& rParam );
440 
441                             // Zugriff von aussen:
442     void                    SetParam( const ScQueryParam& rNew );
GetParam() const443     const ScQueryParam&     GetParam() const    { return aStoredParam; }
444 };
445 
446 
447 //  ScRangeFilterDescriptor - FilterDescriptor eines Datenbank-Bereichs
448 
449 class ScRangeFilterDescriptor : public ScFilterDescriptorBase
450 {
451 private:
452     ScDatabaseRangeObj*     pParent;
453 
454 public:
455                             ScRangeFilterDescriptor(ScDocShell* pDocSh, ScDatabaseRangeObj* pPar);
456     virtual                 ~ScRangeFilterDescriptor();
457 
458                             // von ScFilterDescriptorBase:
459     virtual void            GetData( ScQueryParam& rParam ) const;
460     virtual void            PutData( const ScQueryParam& rParam );
461 };
462 
463 
464 //  ScDataPilotFilterDescriptor - FilterDescriptor eines DataPilotDescriptors
465 
466 class ScDataPilotFilterDescriptor : public ScFilterDescriptorBase
467 {
468 private:
469     ScDataPilotDescriptorBase*  pParent;
470 
471 public:
472                             ScDataPilotFilterDescriptor(ScDocShell* pDocSh, ScDataPilotDescriptorBase* pPar);
473     virtual                 ~ScDataPilotFilterDescriptor();
474 
475                             // von ScFilterDescriptorBase:
476     virtual void            GetData( ScQueryParam& rParam ) const;
477     virtual void            PutData( const ScQueryParam& rParam );
478 };
479 
480 
481 class ScDatabaseRangeObj : public cppu::WeakImplHelper6<
482                                 com::sun::star::sheet::XDatabaseRange,
483                                 com::sun::star::util::XRefreshable,
484                                 com::sun::star::container::XNamed,
485                                 com::sun::star::sheet::XCellRangeReferrer,
486                                 com::sun::star::beans::XPropertySet,
487                                 com::sun::star::lang::XServiceInfo >,
488                            public SfxListener
489 {
490 private:
491     ScDocShell*             pDocShell;
492     String                  aName;
493     SfxItemPropertySet      aPropSet;
494     XDBRefreshListenerArr_Impl aRefreshListeners;
495 
496 private:
497     ScDBData*               GetDBData_Impl() const;
498     void                    Refreshed_Impl();
499 
500 public:
501                             ScDatabaseRangeObj(ScDocShell* pDocSh, const String& rNm);
502     virtual                 ~ScDatabaseRangeObj();
503 
504     virtual void            Notify( SfxBroadcaster& rBC, const SfxHint& rHint );
505 
506                             // nField[] hier innerhalb des Bereichs:
507     void                    GetQueryParam(ScQueryParam& rQueryParam) const;
508     void                    SetQueryParam(const ScQueryParam& rQueryParam);
509     void                    GetSubTotalParam(ScSubTotalParam& rSubTotalParam) const;
510     void                    SetSubTotalParam(const ScSubTotalParam& rSubTotalParam);
511 
512                             // XNamed
513     virtual ::rtl::OUString SAL_CALL getName() throw(::com::sun::star::uno::RuntimeException);
514     virtual void SAL_CALL   setName( const ::rtl::OUString& aName )
515                                 throw(::com::sun::star::uno::RuntimeException);
516 
517                             // XDatabaseRange
518     virtual ::com::sun::star::table::CellRangeAddress SAL_CALL getDataArea()
519                                 throw(::com::sun::star::uno::RuntimeException);
520     virtual void SAL_CALL   setDataArea( const ::com::sun::star::table::CellRangeAddress& aDataArea )
521                                 throw(::com::sun::star::uno::RuntimeException);
522     virtual ::com::sun::star::uno::Sequence< ::com::sun::star::beans::PropertyValue > SAL_CALL
523                             getSortDescriptor() throw(::com::sun::star::uno::RuntimeException);
524     virtual ::com::sun::star::uno::Reference< ::com::sun::star::sheet::XSheetFilterDescriptor > SAL_CALL
525                             getFilterDescriptor() throw(::com::sun::star::uno::RuntimeException);
526     virtual ::com::sun::star::uno::Reference< ::com::sun::star::sheet::XSubTotalDescriptor > SAL_CALL
527                             getSubTotalDescriptor() throw(::com::sun::star::uno::RuntimeException);
528     virtual ::com::sun::star::uno::Sequence< ::com::sun::star::beans::PropertyValue > SAL_CALL
529                             getImportDescriptor() throw(::com::sun::star::uno::RuntimeException);
530 // implemented for the XRefreshable Interface
531 //    virtual void SAL_CALL refresh() throw(::com::sun::star::uno::RuntimeException);
532 
533                             // XRefreshable
534     virtual void SAL_CALL   refresh() throw(::com::sun::star::uno::RuntimeException);
535     virtual void SAL_CALL   addRefreshListener( const ::com::sun::star::uno::Reference<
536                                     ::com::sun::star::util::XRefreshListener >& l )
537                                 throw(::com::sun::star::uno::RuntimeException);
538     virtual void SAL_CALL   removeRefreshListener( const ::com::sun::star::uno::Reference<
539                                     ::com::sun::star::util::XRefreshListener >& l )
540                                 throw(::com::sun::star::uno::RuntimeException);
541 
542                             // XCellRangeReferrer
543     virtual ::com::sun::star::uno::Reference< ::com::sun::star::table::XCellRange > SAL_CALL
544                             getReferredCells() throw(::com::sun::star::uno::RuntimeException);
545 
546                             // XPropertySet
547     virtual ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySetInfo >
548                             SAL_CALL getPropertySetInfo()
549                                 throw(::com::sun::star::uno::RuntimeException);
550     virtual void SAL_CALL   setPropertyValue( const ::rtl::OUString& aPropertyName,
551                                     const ::com::sun::star::uno::Any& aValue )
552                                 throw(::com::sun::star::beans::UnknownPropertyException,
553                                     ::com::sun::star::beans::PropertyVetoException,
554                                     ::com::sun::star::lang::IllegalArgumentException,
555                                     ::com::sun::star::lang::WrappedTargetException,
556                                     ::com::sun::star::uno::RuntimeException);
557     virtual ::com::sun::star::uno::Any SAL_CALL getPropertyValue(
558                                     const ::rtl::OUString& PropertyName )
559                                 throw(::com::sun::star::beans::UnknownPropertyException,
560                                     ::com::sun::star::lang::WrappedTargetException,
561                                     ::com::sun::star::uno::RuntimeException);
562     virtual void SAL_CALL   addPropertyChangeListener( const ::rtl::OUString& aPropertyName,
563                                     const ::com::sun::star::uno::Reference<
564                                         ::com::sun::star::beans::XPropertyChangeListener >& xListener )
565                                 throw(::com::sun::star::beans::UnknownPropertyException,
566                                     ::com::sun::star::lang::WrappedTargetException,
567                                     ::com::sun::star::uno::RuntimeException);
568     virtual void SAL_CALL   removePropertyChangeListener( const ::rtl::OUString& aPropertyName,
569                                     const ::com::sun::star::uno::Reference<
570                                         ::com::sun::star::beans::XPropertyChangeListener >& aListener )
571                                 throw(::com::sun::star::beans::UnknownPropertyException,
572                                     ::com::sun::star::lang::WrappedTargetException,
573                                     ::com::sun::star::uno::RuntimeException);
574     virtual void SAL_CALL   addVetoableChangeListener( const ::rtl::OUString& PropertyName,
575                                     const ::com::sun::star::uno::Reference<
576                                         ::com::sun::star::beans::XVetoableChangeListener >& aListener )
577                                 throw(::com::sun::star::beans::UnknownPropertyException,
578                                     ::com::sun::star::lang::WrappedTargetException,
579                                     ::com::sun::star::uno::RuntimeException);
580     virtual void SAL_CALL   removeVetoableChangeListener( const ::rtl::OUString& PropertyName,
581                                     const ::com::sun::star::uno::Reference<
582                                         ::com::sun::star::beans::XVetoableChangeListener >& aListener )
583                                 throw(::com::sun::star::beans::UnknownPropertyException,
584                                     ::com::sun::star::lang::WrappedTargetException,
585                                     ::com::sun::star::uno::RuntimeException);
586 
587                             // XServiceInfo
588     virtual ::rtl::OUString SAL_CALL getImplementationName()
589                                 throw(::com::sun::star::uno::RuntimeException);
590     virtual sal_Bool SAL_CALL supportsService( const ::rtl::OUString& ServiceName )
591                                 throw(::com::sun::star::uno::RuntimeException);
592     virtual ::com::sun::star::uno::Sequence< ::rtl::OUString > SAL_CALL getSupportedServiceNames()
593                                 throw(::com::sun::star::uno::RuntimeException);
594 };
595 
596 
597 class ScDatabaseRangesObj : public cppu::WeakImplHelper4<
598                                 com::sun::star::sheet::XDatabaseRanges,
599                                 com::sun::star::container::XEnumerationAccess,
600                                 com::sun::star::container::XIndexAccess,
601                                 com::sun::star::lang::XServiceInfo >,
602                             public SfxListener
603 {
604 private:
605     ScDocShell*             pDocShell;
606 
607     ScDatabaseRangeObj*     GetObjectByIndex_Impl(sal_uInt16 nIndex);
608     ScDatabaseRangeObj*     GetObjectByName_Impl(const ::rtl::OUString& aName);
609 
610 public:
611                             ScDatabaseRangesObj(ScDocShell* pDocSh);
612     virtual                 ~ScDatabaseRangesObj();
613 
614     virtual void            Notify( SfxBroadcaster& rBC, const SfxHint& rHint );
615 
616                             // XDatabaseRanges
617     virtual void SAL_CALL   addNewByName( const ::rtl::OUString& aName,
618                                 const ::com::sun::star::table::CellRangeAddress& aRange )
619                                     throw(::com::sun::star::uno::RuntimeException);
620     virtual void SAL_CALL   removeByName( const ::rtl::OUString& aName )
621                                 throw(::com::sun::star::uno::RuntimeException);
622 
623                             // XEnumerationAccess
624     virtual ::com::sun::star::uno::Reference< ::com::sun::star::container::XEnumeration > SAL_CALL
625                             createEnumeration() throw(::com::sun::star::uno::RuntimeException);
626 
627                             // XIndexAccess
628     virtual sal_Int32 SAL_CALL getCount() throw(::com::sun::star::uno::RuntimeException);
629     virtual ::com::sun::star::uno::Any SAL_CALL getByIndex( sal_Int32 Index )
630                                 throw(::com::sun::star::lang::IndexOutOfBoundsException,
631                                     ::com::sun::star::lang::WrappedTargetException,
632                                     ::com::sun::star::uno::RuntimeException);
633 
634                             // XElementAccess
635     virtual ::com::sun::star::uno::Type SAL_CALL getElementType()
636                                 throw(::com::sun::star::uno::RuntimeException);
637     virtual sal_Bool SAL_CALL hasElements() throw(::com::sun::star::uno::RuntimeException);
638 
639                             // XNameAccess
640     virtual ::com::sun::star::uno::Any SAL_CALL getByName( const ::rtl::OUString& aName )
641                                 throw(::com::sun::star::container::NoSuchElementException,
642                                     ::com::sun::star::lang::WrappedTargetException,
643                                     ::com::sun::star::uno::RuntimeException);
644     virtual ::com::sun::star::uno::Sequence< ::rtl::OUString > SAL_CALL getElementNames()
645                                 throw(::com::sun::star::uno::RuntimeException);
646     virtual sal_Bool SAL_CALL hasByName( const ::rtl::OUString& aName )
647                                 throw(::com::sun::star::uno::RuntimeException);
648 
649                             // XServiceInfo
650     virtual ::rtl::OUString SAL_CALL getImplementationName()
651                                 throw(::com::sun::star::uno::RuntimeException);
652     virtual sal_Bool SAL_CALL supportsService( const ::rtl::OUString& ServiceName )
653                                 throw(::com::sun::star::uno::RuntimeException);
654     virtual ::com::sun::star::uno::Sequence< ::rtl::OUString > SAL_CALL getSupportedServiceNames()
655                                 throw(::com::sun::star::uno::RuntimeException);
656 };
657 
658 
659 
660 #endif
661 
662