LibreOffice Module ucb (master)  1
sortresult.hxx
Go to the documentation of this file.
1 /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
2 /*
3  * This file is part of the LibreOffice project.
4  *
5  * This Source Code Form is subject to the terms of the Mozilla Public
6  * License, v. 2.0. If a copy of the MPL was not distributed with this
7  * file, You can obtain one at http://mozilla.org/MPL/2.0/.
8  *
9  * This file incorporates work covered by the following license notice:
10  *
11  * Licensed to the Apache Software Foundation (ASF) under one or more
12  * contributor license agreements. See the NOTICE file distributed
13  * with this work for additional information regarding copyright
14  * ownership. The ASF licenses this file to you under the Apache
15  * License, Version 2.0 (the "License"); you may not use this file
16  * except in compliance with the License. You may obtain a copy of
17  * the License at http://www.apache.org/licenses/LICENSE-2.0 .
18  */
19 
20 #ifndef INCLUDED_UCB_SOURCE_SORTER_SORTRESULT_HXX
21 #define INCLUDED_UCB_SOURCE_SORTER_SORTRESULT_HXX
22 
23 #include <com/sun/star/beans/XPropertySet.hpp>
24 #include <com/sun/star/lang/XComponent.hpp>
25 #include <com/sun/star/lang/XMultiServiceFactory.hpp>
26 #include <com/sun/star/lang/XServiceInfo.hpp>
27 #include <com/sun/star/lang/XTypeProvider.hpp>
28 #include <com/sun/star/sdbc/XCloseable.hpp>
29 #include <com/sun/star/sdbc/XResultSet.hpp>
30 #include <com/sun/star/sdbc/XResultSetMetaData.hpp>
31 #include <com/sun/star/sdbc/XResultSetMetaDataSupplier.hpp>
32 #include <com/sun/star/sdbc/XRow.hpp>
33 #include <com/sun/star/ucb/XContentAccess.hpp>
34 #include <com/sun/star/ucb/NumberedSortingInfo.hpp>
35 #include <com/sun/star/ucb/XAnyCompareFactory.hpp>
36 #include <com/sun/star/ucb/ListAction.hpp>
37 #include <cppuhelper/implbase.hxx>
38 #include <rtl/ref.hxx>
39 #include <deque>
40 #include <memory>
41 
42 namespace comphelper {
43  class OInterfaceContainerHelper2;
44 }
45 
46 
47 struct SortInfo;
48 struct SortListData;
49 class SRSPropertySetInfo;
51 
52 
54 {
55  std::deque < std::unique_ptr<SortListData> > maData;
56 
57 public:
60 
61  sal_uInt32 Count() const { return static_cast<sal_uInt32>(maData.size()); }
62 
63  void Clear();
64  void Insert( std::unique_ptr<SortListData> pEntry, sal_IntPtr nPos );
65  std::unique_ptr<SortListData> Remove( sal_IntPtr nPos );
66  SortListData* GetData( sal_IntPtr nPos );
67  void Move( sal_IntPtr nOldPos, sal_IntPtr nNewPos );
68 
69  sal_IntPtr operator [] ( sal_IntPtr nPos ) const;
70 };
71 
72 
73 class EventList
74 {
75  std::deque < std::unique_ptr<css::ucb::ListAction> > maData;
76 
77 public:
79 
80  sal_uInt32 Count() { return static_cast<sal_uInt32>(maData.size()); }
81 
82  void AddEvent( sal_IntPtr nType, sal_IntPtr nPos );
83  void Insert( std::unique_ptr<css::ucb::ListAction> pAction ) { maData.push_back( std::move(pAction) ); }
84  void Clear();
85  css::ucb::ListAction* GetAction( sal_IntPtr nIndex ) { return maData[ nIndex ].get(); }
86 };
87 
88 
89 #define RESULTSET_SERVICE_NAME "com.sun.star.ucb.SortedResultSet"
90 
91 
92 class SortedResultSet: public cppu::WeakImplHelper <
93  css::lang::XServiceInfo,
94  css::lang::XComponent,
95  css::ucb::XContentAccess,
96  css::sdbc::XResultSet,
97  css::sdbc::XRow,
98  css::sdbc::XCloseable,
99  css::sdbc::XResultSetMetaDataSupplier,
100  css::beans::XPropertySet >
101 {
103  std::unique_ptr<PropertyChangeListeners_Impl> mpPropChangeListeners;
104  std::unique_ptr<PropertyChangeListeners_Impl> mpVetoChangeListeners;
105 
106  css::uno::Reference < css::sdbc::XResultSet > mxOriginal;
107  css::uno::Reference < css::sdbc::XResultSet > mxOther;
108 
111  osl::Mutex maMutex;
112  SortedEntryList maS2O; // maps the sorted entries to the original ones
113  std::deque<sal_IntPtr> m_O2S;
114  std::deque<SortListData*> m_ModList;
115  sal_IntPtr mnLastSort; // index of the last sorted entry;
116  sal_IntPtr mnCurEntry; // index of the current entry
117  sal_IntPtr mnCount; // total count of the elements
118  bool mbIsCopy;
119 
120 
121 private:
124  sal_IntPtr FindPos( SortListData const *pEntry, sal_IntPtr nStart, sal_IntPtr nEnd );
127  sal_IntPtr Compare( SortListData const *pOne,
128  SortListData const *pTwo );
129  void BuildSortInfo( const css::uno::Reference< css::sdbc::XResultSet >& aResult,
130  const css::uno::Sequence < css::ucb::NumberedSortingInfo > &xSortInfo,
131  const css::uno::Reference< css::ucb::XAnyCompareFactory > &xCompFac );
134  static sal_IntPtr CompareImpl( const css::uno::Reference < css::sdbc::XResultSet >& xResultOne,
135  const css::uno::Reference < css::sdbc::XResultSet >& xResultTwo,
136  sal_IntPtr nIndexOne, sal_IntPtr nIndexTwo,
137  SortInfo const * pSortInfo );
140  sal_IntPtr CompareImpl( const css::uno::Reference < css::sdbc::XResultSet >& xResultOne,
141  const css::uno::Reference < css::sdbc::XResultSet >& xResultTwo,
142  sal_IntPtr nIndexOne, sal_IntPtr nIndexTwo );
143  void PropertyChanged( const css::beans::PropertyChangeEvent& rEvt );
144 
145 public:
146  SortedResultSet( css::uno::Reference< css::sdbc::XResultSet > const & aResult );
147  virtual ~SortedResultSet() override;
148 
149  sal_IntPtr GetCount() const { return mnCount; }
150 
151  void CopyData( SortedResultSet* pSource );
152  void Initialize( const css::uno::Sequence < css::ucb::NumberedSortingInfo > &xSortInfo,
153  const css::uno::Reference< css::ucb::XAnyCompareFactory > &xCompFac );
154  void CheckProperties( sal_IntPtr nOldCount, bool bWasFinal );
155 
156  void InsertNew( sal_IntPtr nPos, sal_IntPtr nCount );
157  void SetChanged( sal_IntPtr nPos, sal_IntPtr nCount );
158  void Remove( sal_IntPtr nPos, sal_IntPtr nCount, EventList *pList );
159  void Move( sal_IntPtr nPos, sal_IntPtr nCount, sal_IntPtr nOffset );
160 
161  void ResortModified( EventList* pList );
162  void ResortNew( EventList* pList );
163 
164  // XServiceInfo
165  virtual OUString SAL_CALL getImplementationName() override;
166  virtual sal_Bool SAL_CALL supportsService( const OUString& ServiceName ) override;
167  virtual css::uno::Sequence< OUString > SAL_CALL getSupportedServiceNames() override;
168 
169  // XComponent
170  virtual void SAL_CALL
171  dispose() override;
172 
173  virtual void SAL_CALL
174  addEventListener( const css::uno::Reference< css::lang::XEventListener >& Listener ) override;
175 
176  virtual void SAL_CALL
177  removeEventListener( const css::uno::Reference< css::lang::XEventListener >& Listener ) override;
178 
179  // XContentAccess
180  virtual OUString SAL_CALL
181  queryContentIdentifierString() override;
182  virtual css::uno::Reference<
183  css::ucb::XContentIdentifier > SAL_CALL
184  queryContentIdentifier() override;
185  virtual css::uno::Reference<
186  css::ucb::XContent > SAL_CALL
187  queryContent() override;
188 
189  // XResultSet
190  virtual sal_Bool SAL_CALL
191  next() override;
192  virtual sal_Bool SAL_CALL
193  isBeforeFirst() override;
194  virtual sal_Bool SAL_CALL
195  isAfterLast() override;
196  virtual sal_Bool SAL_CALL
197  isFirst() override;
198  virtual sal_Bool SAL_CALL
199  isLast() override;
200  virtual void SAL_CALL
201  beforeFirst() override;
202  virtual void SAL_CALL
203  afterLast() override;
204  virtual sal_Bool SAL_CALL
205  first() override;
206  virtual sal_Bool SAL_CALL
207  last() override;
208  virtual sal_Int32 SAL_CALL
209  getRow() override;
210  virtual sal_Bool SAL_CALL
211  absolute( sal_Int32 row ) override;
212  virtual sal_Bool SAL_CALL
213  relative( sal_Int32 rows ) override;
214  virtual sal_Bool SAL_CALL
215  previous() override;
216  virtual void SAL_CALL
217  refreshRow() override;
218  virtual sal_Bool SAL_CALL
219  rowUpdated() override;
220  virtual sal_Bool SAL_CALL
221  rowInserted() override;
222  virtual sal_Bool SAL_CALL
223  rowDeleted() override;
224  virtual css::uno::Reference<
225  css::uno::XInterface > SAL_CALL
226  getStatement() override;
227 
228  // XRow
229  virtual sal_Bool SAL_CALL
230  wasNull() override;
231 
232  virtual OUString SAL_CALL
233  getString( sal_Int32 columnIndex ) override;
234 
235  virtual sal_Bool SAL_CALL
236  getBoolean( sal_Int32 columnIndex ) override;
237 
238  virtual sal_Int8 SAL_CALL
239  getByte( sal_Int32 columnIndex ) override;
240 
241  virtual sal_Int16 SAL_CALL
242  getShort( sal_Int32 columnIndex ) override;
243 
244  virtual sal_Int32 SAL_CALL
245  getInt( sal_Int32 columnIndex ) override;
246 
247  virtual sal_Int64 SAL_CALL
248  getLong( sal_Int32 columnIndex ) override;
249 
250  virtual float SAL_CALL
251  getFloat( sal_Int32 columnIndex ) override;
252 
253  virtual double SAL_CALL
254  getDouble( sal_Int32 columnIndex ) override;
255 
256  virtual css::uno::Sequence< sal_Int8 > SAL_CALL
257  getBytes( sal_Int32 columnIndex ) override;
258 
259  virtual css::util::Date SAL_CALL
260  getDate( sal_Int32 columnIndex ) override;
261 
262  virtual css::util::Time SAL_CALL
263  getTime( sal_Int32 columnIndex ) override;
264 
265  virtual css::util::DateTime SAL_CALL
266  getTimestamp( sal_Int32 columnIndex ) override;
267 
268  virtual css::uno::Reference<
269  css::io::XInputStream > SAL_CALL
270  getBinaryStream( sal_Int32 columnIndex ) override;
271 
272  virtual css::uno::Reference<
273  css::io::XInputStream > SAL_CALL
274  getCharacterStream( sal_Int32 columnIndex ) override;
275 
276  virtual css::uno::Any SAL_CALL
277  getObject( sal_Int32 columnIndex,
278  const css::uno::Reference<
279  css::container::XNameAccess >& typeMap ) override;
280  virtual css::uno::Reference<
281  css::sdbc::XRef > SAL_CALL
282  getRef( sal_Int32 columnIndex ) override;
283  virtual css::uno::Reference<
284  css::sdbc::XBlob > SAL_CALL
285  getBlob( sal_Int32 columnIndex ) override;
286  virtual css::uno::Reference<
287  css::sdbc::XClob > SAL_CALL
288  getClob( sal_Int32 columnIndex ) override;
289  virtual css::uno::Reference<
290  css::sdbc::XArray > SAL_CALL
291  getArray( sal_Int32 columnIndex ) override;
292 
293  // XCloseable
294  virtual void SAL_CALL
295  close() override;
296 
297  // XResultSetMetaDataSupplier
298  virtual css::uno::Reference< css::sdbc::XResultSetMetaData > SAL_CALL
299  getMetaData() override;
300 
301 
302  // XPropertySet
303  virtual css::uno::Reference<
304  css::beans::XPropertySetInfo > SAL_CALL
305  getPropertySetInfo() override;
306 
307  virtual void SAL_CALL
308  setPropertyValue( const OUString& PropertyName,
309  const css::uno::Any& Value ) override;
310 
311  virtual css::uno::Any SAL_CALL
312  getPropertyValue( const OUString& PropertyName ) override;
313 
314  virtual void SAL_CALL
315  addPropertyChangeListener( const OUString& PropertyName,
316  const css::uno::Reference<
317  css::beans::XPropertyChangeListener >& Listener ) override;
318 
319  virtual void SAL_CALL
320  removePropertyChangeListener( const OUString& PropertyName,
321  const css::uno::Reference<
322  css::beans::XPropertyChangeListener >& Listener ) override;
323 
324  virtual void SAL_CALL
325  addVetoableChangeListener( const OUString& PropertyName,
326  const css::uno::Reference<
327  css::beans::XVetoableChangeListener >& Listener ) override;
328 
329  virtual void SAL_CALL
330  removeVetoableChangeListener( const OUString& PropertyName,
331  const css::uno::Reference<
332  css::beans::XVetoableChangeListener >& aListener ) override;
333 };
334 
335 #endif
336 
337 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */
virtual sal_Bool SAL_CALL rowDeleted() override
Definition: sortresult.cxx:556
sal_IntPtr mnCount
Definition: sortresult.hxx:117
virtual sal_Int64 SAL_CALL getLong(sal_Int32 columnIndex) override
Definition: sortresult.cxx:626
void ResortModified(EventList *pList)
virtual sal_Bool SAL_CALL previous() override
moves the cursor to the previous row in the result set.
Definition: sortresult.cxx:496
virtual css::uno::Reference< css::sdbc::XArray > SAL_CALL getArray(sal_Int32 columnIndex) override
Definition: sortresult.cxx:721
sal_IntPtr FindPos(SortListData const *pEntry, sal_IntPtr nStart, sal_IntPtr nEnd)
virtual void SAL_CALL dispose() override
Definition: sortresult.cxx:167
void Insert(std::unique_ptr< css::ucb::ListAction > pAction)
Definition: sortresult.hxx:83
signed char sal_Int8
sal_IntPtr Compare(SortListData const *pOne, SortListData const *pTwo)
virtual css::uno::Any SAL_CALL getObject(sal_Int32 columnIndex, const css::uno::Reference< css::container::XNameAccess > &typeMap) override
Definition: sortresult.cxx:691
SortListData * GetData(sal_IntPtr nPos)
std::unique_ptr< SortListData > Remove(sal_IntPtr nPos)
void Remove(sal_IntPtr nPos, sal_IntPtr nCount, EventList *pList)
virtual sal_Int8 SAL_CALL getByte(sal_Int32 columnIndex) override
Definition: sortresult.cxx:606
virtual OUString SAL_CALL getImplementationName() override
Definition: sortresult.cxx:149
SortInfo * mpSortInfo
Definition: sortresult.hxx:110
virtual void SAL_CALL addEventListener(const css::uno::Reference< css::lang::XEventListener > &Listener) override
Definition: sortresult.cxx:197
sal_IntPtr mnLastSort
keeps track of modified entries
Definition: sortresult.hxx:115
virtual void SAL_CALL afterLast() override
Definition: sortresult.cxx:315
virtual sal_Bool SAL_CALL isAfterLast() override
Definition: sortresult.cxx:280
virtual OUString SAL_CALL getString(sal_Int32 columnIndex) override
Definition: sortresult.cxx:592
virtual void SAL_CALL beforeFirst() override
Definition: sortresult.cxx:307
SortedEntryList maS2O
Definition: sortresult.hxx:112
virtual sal_Int32 SAL_CALL getRow() override
Definition: sortresult.cxx:359
virtual css::uno::Sequence< OUString > SAL_CALL getSupportedServiceNames() override
Definition: sortresult.cxx:159
virtual css::util::DateTime SAL_CALL getTimestamp(sal_Int32 columnIndex) override
Definition: sortresult.cxx:668
virtual float SAL_CALL getFloat(sal_Int32 columnIndex) override
Definition: sortresult.cxx:633
static sal_IntPtr CompareImpl(const css::uno::Reference< css::sdbc::XResultSet > &xResultOne, const css::uno::Reference< css::sdbc::XResultSet > &xResultTwo, sal_IntPtr nIndexOne, sal_IntPtr nIndexTwo, SortInfo const *pSortInfo)
virtual void SAL_CALL refreshRow() override
Definition: sortresult.cxx:517
virtual void SAL_CALL addPropertyChangeListener(const OUString &PropertyName, const css::uno::Reference< css::beans::XPropertyChangeListener > &Listener) override
Definition: sortresult.cxx:816
virtual css::uno::Reference< css::beans::XPropertySetInfo > SAL_CALL getPropertySetInfo() override
Definition: sortresult.cxx:752
virtual css::uno::Reference< css::uno::XInterface > SAL_CALL getStatement() override
Definition: sortresult.cxx:569
virtual sal_Bool SAL_CALL next() override
Definition: sortresult.cxx:249
std::deque< std::unique_ptr< SortListData > > maData
Definition: sortresult.hxx:55
void Insert(std::unique_ptr< SortListData > pEntry, sal_IntPtr nPos)
comphelper::OInterfaceContainerHelper2 * mpDisposeEventListeners
Definition: sortresult.hxx:102
virtual OUString SAL_CALL queryContentIdentifierString() override
Definition: sortresult.cxx:224
void CopyData(SortedResultSet *pSource)
virtual css::uno::Reference< css::ucb::XContentIdentifier > SAL_CALL queryContentIdentifier() override
Definition: sortresult.cxx:232
osl::Mutex maMutex
Definition: sortresult.hxx:111
virtual sal_Bool SAL_CALL isBeforeFirst() override
Definition: sortresult.cxx:271
css::uno::Reference< css::sdbc::XResultSet > mxOther
Definition: sortresult.hxx:107
void AddEvent(sal_IntPtr nType, sal_IntPtr nPos)
Definition: sortdynres.cxx:486
virtual css::uno::Sequence< sal_Int8 > SAL_CALL getBytes(sal_Int32 columnIndex) override
Definition: sortresult.cxx:647
virtual css::util::Time SAL_CALL getTime(sal_Int32 columnIndex) override
Definition: sortresult.cxx:661
virtual void SAL_CALL removeVetoableChangeListener(const OUString &PropertyName, const css::uno::Reference< css::beans::XVetoableChangeListener > &aListener) override
Definition: sortresult.cxx:855
void PropertyChanged(const css::beans::PropertyChangeEvent &rEvt)
void Clear()
Definition: sortdynres.cxx:481
virtual sal_Bool SAL_CALL wasNull() override
Definition: sortresult.cxx:585
virtual sal_Int16 SAL_CALL getShort(sal_Int32 columnIndex) override
Definition: sortresult.cxx:613
virtual sal_Bool SAL_CALL relative(sal_Int32 rows) override
moves the cursor a relative number of rows, either positive or negative.
Definition: sortresult.cxx:452
virtual css::uno::Reference< css::sdbc::XRef > SAL_CALL getRef(sal_Int32 columnIndex) override
Definition: sortresult.cxx:700
rtl::Reference< SRSPropertySetInfo > mpPropSetInfo
Definition: sortresult.hxx:109
virtual sal_Bool SAL_CALL rowUpdated() override
Definition: sortresult.cxx:530
virtual sal_Bool SAL_CALL isLast() override
Definition: sortresult.cxx:298
virtual sal_Bool SAL_CALL getBoolean(sal_Int32 columnIndex) override
Definition: sortresult.cxx:599
sal_IntPtr operator[](sal_IntPtr nPos) const
virtual sal_Bool SAL_CALL isFirst() override
Definition: sortresult.cxx:289
sal_IntPtr mnCurEntry
Definition: sortresult.hxx:116
virtual void SAL_CALL removeEventListener(const css::uno::Reference< css::lang::XEventListener > &Listener) override
Definition: sortresult.cxx:210
unsigned char sal_Bool
virtual sal_Bool SAL_CALL first() override
Definition: sortresult.cxx:323
std::deque< sal_IntPtr > m_O2S
Definition: sortresult.hxx:113
SortedResultSet(css::uno::Reference< css::sdbc::XResultSet > const &aResult)
Definition: sortresult.cxx:110
std::unique_ptr< PropertyChangeListeners_Impl > mpVetoChangeListeners
Definition: sortresult.hxx:104
void CheckProperties(sal_IntPtr nOldCount, bool bWasFinal)
virtual css::uno::Reference< css::sdbc::XResultSetMetaData > SAL_CALL getMetaData() override
Definition: sortresult.cxx:741
void ResortNew(EventList *pList)
void Initialize(const css::uno::Sequence< css::ucb::NumberedSortingInfo > &xSortInfo, const css::uno::Reference< css::ucb::XAnyCompareFactory > &xCompFac)
virtual css::uno::Reference< css::sdbc::XClob > SAL_CALL getClob(sal_Int32 columnIndex) override
Definition: sortresult.cxx:714
virtual sal_Bool SAL_CALL supportsService(const OUString &ServiceName) override
Definition: sortresult.cxx:154
void SetChanged(sal_IntPtr nPos, sal_IntPtr nCount)
virtual sal_Bool SAL_CALL absolute(sal_Int32 row) override
moves the cursor to the given row number in the result set.
Definition: sortresult.cxx:390
virtual ~SortedResultSet() override
Definition: sortresult.cxx:125
virtual void SAL_CALL removePropertyChangeListener(const OUString &PropertyName, const css::uno::Reference< css::beans::XPropertyChangeListener > &Listener) override
Definition: sortresult.cxx:830
void Move(sal_IntPtr nOldPos, sal_IntPtr nNewPos)
virtual double SAL_CALL getDouble(sal_Int32 columnIndex) override
Definition: sortresult.cxx:640
std::deque< SortListData * > m_ModList
maps the original Entries to the sorted ones
Definition: sortresult.hxx:114
virtual sal_Int32 SAL_CALL getInt(sal_Int32 columnIndex) override
Definition: sortresult.cxx:620
virtual sal_Bool SAL_CALL last() override
Definition: sortresult.cxx:341
virtual sal_Bool SAL_CALL rowInserted() override
Definition: sortresult.cxx:543
virtual css::uno::Any SAL_CALL getPropertyValue(const OUString &PropertyName) override
Definition: sortresult.cxx:778
void BuildSortInfo(const css::uno::Reference< css::sdbc::XResultSet > &aResult, const css::uno::Sequence< css::ucb::NumberedSortingInfo > &xSortInfo, const css::uno::Reference< css::ucb::XAnyCompareFactory > &xCompFac)
virtual css::uno::Reference< css::ucb::XContent > SAL_CALL queryContent() override
Definition: sortresult.cxx:240
virtual css::uno::Reference< css::io::XInputStream > SAL_CALL getBinaryStream(sal_Int32 columnIndex) override
Definition: sortresult.cxx:676
virtual css::uno::Reference< css::sdbc::XBlob > SAL_CALL getBlob(sal_Int32 columnIndex) override
Definition: sortresult.cxx:707
void Move(sal_IntPtr nPos, sal_IntPtr nCount, sal_IntPtr nOffset)
void InsertNew(sal_IntPtr nPos, sal_IntPtr nCount)
sal_uInt32 Count() const
Definition: sortresult.hxx:61
virtual void SAL_CALL close() override
Definition: sortresult.cxx:731
virtual void SAL_CALL setPropertyValue(const OUString &PropertyName, const css::uno::Any &Value) override
Definition: sortresult.cxx:765
virtual void SAL_CALL addVetoableChangeListener(const OUString &PropertyName, const css::uno::Reference< css::beans::XVetoableChangeListener > &Listener) override
Definition: sortresult.cxx:841
virtual css::uno::Reference< css::io::XInputStream > SAL_CALL getCharacterStream(sal_Int32 columnIndex) override
Definition: sortresult.cxx:684
std::unique_ptr< PropertyChangeListeners_Impl > mpPropChangeListeners
Definition: sortresult.hxx:103
sal_IntPtr GetCount() const
Definition: sortresult.hxx:149
std::deque< std::unique_ptr< css::ucb::ListAction > > maData
Definition: sortresult.hxx:75
css::ucb::ListAction * GetAction(sal_IntPtr nIndex)
Definition: sortresult.hxx:85
virtual css::util::Date SAL_CALL getDate(sal_Int32 columnIndex) override
Definition: sortresult.cxx:654
sal_uInt32 Count()
Definition: sortresult.hxx:80
css::uno::Reference< css::sdbc::XResultSet > mxOriginal
Definition: sortresult.hxx:106