1 /*************************************************************************
3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
5 * Copyright 2008 by Sun Microsystems, Inc.
7 * OpenOffice.org - a multi-platform office productivity suite
9 * $RCSfile: MResultSet.hxx,v $
12 * This file is part of OpenOffice.org.
14 * OpenOffice.org is free software: you can redistribute it and/or modify
15 * it under the terms of the GNU Lesser General Public License version 3
16 * only, as published by the Free Software Foundation.
18 * OpenOffice.org is distributed in the hope that it will be useful,
19 * but WITHOUT ANY WARRANTY; without even the implied warranty of
20 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
21 * GNU Lesser General Public License version 3 for more details
22 * (a copy is included in the LICENSE file that accompanied this code).
24 * You should have received a copy of the GNU Lesser General Public License
25 * version 3 along with OpenOffice.org. If not, see
26 * <http://www.openoffice.org/license.html>
27 * for a copy of the LGPLv3 License.
29 ************************************************************************/
30 #ifndef CONNECTIVITY_SRESULTSET_HXX
31 #define CONNECTIVITY_SRESULTSET_HXX
33 #include <com/sun/star/sdbc/XResultSet.hpp>
34 #include <com/sun/star/sdbc/XRow.hpp>
35 #include <com/sun/star/sdbc/XResultSetMetaDataSupplier.hpp>
36 #include <com/sun/star/sdbc/XCloseable.hpp>
37 #include <com/sun/star/sdbc/XColumnLocate.hpp>
38 #include <com/sun/star/util/XCancellable.hpp>
39 #include <com/sun/star/sdbc/XWarningsSupplier.hpp>
40 #include <com/sun/star/sdbc/XResultSetUpdate.hpp>
41 #include <com/sun/star/sdbcx/XRowLocate.hpp>
42 #include <com/sun/star/sdbcx/XDeleteRows.hpp>
43 #include <com/sun/star/sdbc/XRowUpdate.hpp>
44 #include <cppuhelper/compbase12.hxx>
45 #include <comphelper/proparrhlp.hxx>
46 #include "MStatement.hxx"
47 #include "connectivity/CommonTools.hxx"
48 #include "connectivity/FValue.hxx"
49 #include "connectivity/sqliterator.hxx"
50 #include "TSortIndex.hxx"
51 #include "mozillasrc/MQuery.hxx"
54 namespace connectivity
62 typedef ::cppu::WeakComponentImplHelper12
< ::com::sun::star::sdbc::XResultSet
,
63 ::com::sun::star::sdbc::XRow
,
64 ::com::sun::star::sdbc::XResultSetMetaDataSupplier
,
65 ::com::sun::star::util::XCancellable
,
66 ::com::sun::star::sdbc::XWarningsSupplier
,
67 ::com::sun::star::sdbc::XCloseable
,
68 ::com::sun::star::sdbc::XColumnLocate
,
69 ::com::sun::star::sdbc::XResultSetUpdate
,
70 ::com::sun::star::sdbc::XRowUpdate
,
71 ::com::sun::star::sdbcx::XRowLocate
,
72 ::com::sun::star::sdbcx::XDeleteRows
,
73 ::com::sun::star::lang::XServiceInfo
> OResultSet_BASE
;
76 typedef sal_Int64 TVoidPtr
;
77 typedef ::std::allocator
< TVoidPtr
> TVoidAlloc
;
78 typedef ::std::vector
<TVoidPtr
> TVoidVector
;
80 class OResultSet
: public comphelper::OBaseMutex
,
81 public OResultSet_BASE
,
82 public ::cppu::OPropertySetHelper
,
83 public ::comphelper::OPropertyArrayUsageHelper
<OResultSet
>
86 OCommonStatement
* m_pStatement
;
87 ::com::sun::star::uno::Reference
< ::com::sun::star::uno::XInterface
> m_xStatement
;
88 ::com::sun::star::uno::Reference
< ::com::sun::star::sdbc::XResultSetMetaData
> m_xMetaData
;
90 sal_uInt32 m_nOldRowPos
;
92 sal_Int32 m_nFetchSize
;
93 sal_Int32 m_nResultSetType
;
94 sal_Int32 m_nFetchDirection
;
95 sal_Int32 m_nResultSetConcurrency
;
99 ::boost::shared_ptr
< ::connectivity::OSQLParseTreeIterator
>
101 const connectivity::OSQLParseNode
* m_pParseTree
;
103 // OPropertyArrayUsageHelper
104 virtual ::cppu::IPropertyArrayHelper
* createArrayHelper( ) const;
105 // OPropertySetHelper
106 virtual ::cppu::IPropertyArrayHelper
& SAL_CALL
getInfoHelper();
108 virtual sal_Bool SAL_CALL
convertFastPropertyValue(
109 ::com::sun::star::uno::Any
& rConvertedValue
,
110 ::com::sun::star::uno::Any
& rOldValue
,
112 const ::com::sun::star::uno::Any
& rValue
)
113 throw (::com::sun::star::lang::IllegalArgumentException
);
114 virtual void SAL_CALL
setFastPropertyValue_NoBroadcast(
116 const ::com::sun::star::uno::Any
& rValue
118 throw (::com::sun::star::uno::Exception
);
119 virtual void SAL_CALL
getFastPropertyValue(
120 ::com::sun::star::uno::Any
& rValue
,
124 // you can't delete objects of this type
125 virtual ~OResultSet();
127 DECLARE_SERVICE_INFO();
129 OResultSet(OCommonStatement
* pStmt
, const ::boost::shared_ptr
< ::connectivity::OSQLParseTreeIterator
>& _pSQLIterator
);
132 ::com::sun::star::uno::Reference
< ::com::sun::star::uno::XInterface
> operator *()
134 return ::com::sun::star::uno::Reference
< ::com::sun::star::uno::XInterface
>(*(OResultSet_BASE
*)this);
137 // ::cppu::OComponentHelper
138 virtual void SAL_CALL
disposing(void);
140 virtual ::com::sun::star::uno::Any SAL_CALL
queryInterface( const ::com::sun::star::uno::Type
& rType
) throw(::com::sun::star::uno::RuntimeException
);
141 virtual void SAL_CALL
acquire() throw();
142 virtual void SAL_CALL
release() throw();
144 virtual ::com::sun::star::uno::Sequence
< ::com::sun::star::uno::Type
> SAL_CALL
getTypes( ) throw(::com::sun::star::uno::RuntimeException
);
146 virtual ::com::sun::star::uno::Reference
< ::com::sun::star::beans::XPropertySetInfo
> SAL_CALL
getPropertySetInfo( ) throw(::com::sun::star::uno::RuntimeException
);
148 virtual sal_Bool SAL_CALL
next( ) throw(::com::sun::star::sdbc::SQLException
, ::com::sun::star::uno::RuntimeException
);
149 virtual sal_Bool SAL_CALL
isBeforeFirst( ) throw(::com::sun::star::sdbc::SQLException
, ::com::sun::star::uno::RuntimeException
);
150 virtual sal_Bool SAL_CALL
isAfterLast( ) throw(::com::sun::star::sdbc::SQLException
, ::com::sun::star::uno::RuntimeException
);
151 virtual sal_Bool SAL_CALL
isFirst( ) throw(::com::sun::star::sdbc::SQLException
, ::com::sun::star::uno::RuntimeException
);
152 virtual sal_Bool SAL_CALL
isLast( ) throw(::com::sun::star::sdbc::SQLException
, ::com::sun::star::uno::RuntimeException
);
153 virtual void SAL_CALL
beforeFirst( ) throw(::com::sun::star::sdbc::SQLException
, ::com::sun::star::uno::RuntimeException
);
154 virtual void SAL_CALL
afterLast( ) throw(::com::sun::star::sdbc::SQLException
, ::com::sun::star::uno::RuntimeException
);
155 virtual sal_Bool SAL_CALL
first( ) throw(::com::sun::star::sdbc::SQLException
, ::com::sun::star::uno::RuntimeException
);
156 virtual sal_Bool SAL_CALL
last( ) throw(::com::sun::star::sdbc::SQLException
, ::com::sun::star::uno::RuntimeException
);
157 virtual sal_Int32 SAL_CALL
getRow( ) throw(::com::sun::star::sdbc::SQLException
, ::com::sun::star::uno::RuntimeException
);
158 virtual sal_Bool SAL_CALL
absolute( sal_Int32 row
) throw(::com::sun::star::sdbc::SQLException
, ::com::sun::star::uno::RuntimeException
);
159 virtual sal_Bool SAL_CALL
relative( sal_Int32 rows
) throw(::com::sun::star::sdbc::SQLException
, ::com::sun::star::uno::RuntimeException
);
160 virtual sal_Bool SAL_CALL
previous( ) throw(::com::sun::star::sdbc::SQLException
, ::com::sun::star::uno::RuntimeException
);
161 virtual void SAL_CALL
refreshRow( ) throw(::com::sun::star::sdbc::SQLException
, ::com::sun::star::uno::RuntimeException
);
162 virtual sal_Bool SAL_CALL
rowUpdated( ) throw(::com::sun::star::sdbc::SQLException
, ::com::sun::star::uno::RuntimeException
);
163 virtual sal_Bool SAL_CALL
rowInserted( ) throw(::com::sun::star::sdbc::SQLException
, ::com::sun::star::uno::RuntimeException
);
164 virtual sal_Bool SAL_CALL
rowDeleted( ) throw(::com::sun::star::sdbc::SQLException
, ::com::sun::star::uno::RuntimeException
);
165 virtual ::com::sun::star::uno::Reference
< ::com::sun::star::uno::XInterface
> SAL_CALL
getStatement( ) throw(::com::sun::star::sdbc::SQLException
, ::com::sun::star::uno::RuntimeException
);
167 virtual sal_Bool SAL_CALL
wasNull( ) throw(::com::sun::star::sdbc::SQLException
, ::com::sun::star::uno::RuntimeException
);
168 virtual ::rtl::OUString SAL_CALL
getString( sal_Int32 columnIndex
) throw(::com::sun::star::sdbc::SQLException
, ::com::sun::star::uno::RuntimeException
);
169 virtual sal_Bool SAL_CALL
getBoolean( sal_Int32 columnIndex
) throw(::com::sun::star::sdbc::SQLException
, ::com::sun::star::uno::RuntimeException
);
170 virtual sal_Int8 SAL_CALL
getByte( sal_Int32 columnIndex
) throw(::com::sun::star::sdbc::SQLException
, ::com::sun::star::uno::RuntimeException
);
171 virtual sal_Int16 SAL_CALL
getShort( sal_Int32 columnIndex
) throw(::com::sun::star::sdbc::SQLException
, ::com::sun::star::uno::RuntimeException
);
172 virtual sal_Int32 SAL_CALL
getInt( sal_Int32 columnIndex
) throw(::com::sun::star::sdbc::SQLException
, ::com::sun::star::uno::RuntimeException
);
173 virtual sal_Int64 SAL_CALL
getLong( sal_Int32 columnIndex
) throw(::com::sun::star::sdbc::SQLException
, ::com::sun::star::uno::RuntimeException
);
174 virtual float SAL_CALL
getFloat( sal_Int32 columnIndex
) throw(::com::sun::star::sdbc::SQLException
, ::com::sun::star::uno::RuntimeException
);
175 virtual double SAL_CALL
getDouble( sal_Int32 columnIndex
) throw(::com::sun::star::sdbc::SQLException
, ::com::sun::star::uno::RuntimeException
);
176 virtual ::com::sun::star::uno::Sequence
< sal_Int8
> SAL_CALL
getBytes( sal_Int32 columnIndex
) throw(::com::sun::star::sdbc::SQLException
, ::com::sun::star::uno::RuntimeException
);
177 virtual ::com::sun::star::util::Date SAL_CALL
getDate( sal_Int32 columnIndex
) throw(::com::sun::star::sdbc::SQLException
, ::com::sun::star::uno::RuntimeException
);
178 virtual ::com::sun::star::util::Time SAL_CALL
getTime( sal_Int32 columnIndex
) throw(::com::sun::star::sdbc::SQLException
, ::com::sun::star::uno::RuntimeException
);
179 virtual ::com::sun::star::util::DateTime SAL_CALL
getTimestamp( sal_Int32 columnIndex
) throw(::com::sun::star::sdbc::SQLException
, ::com::sun::star::uno::RuntimeException
);
180 virtual ::com::sun::star::uno::Reference
< ::com::sun::star::io::XInputStream
> SAL_CALL
getBinaryStream( sal_Int32 columnIndex
) throw(::com::sun::star::sdbc::SQLException
, ::com::sun::star::uno::RuntimeException
);
181 virtual ::com::sun::star::uno::Reference
< ::com::sun::star::io::XInputStream
> SAL_CALL
getCharacterStream( sal_Int32 columnIndex
) throw(::com::sun::star::sdbc::SQLException
, ::com::sun::star::uno::RuntimeException
);
182 virtual ::com::sun::star::uno::Any SAL_CALL
getObject( sal_Int32 columnIndex
, const ::com::sun::star::uno::Reference
< ::com::sun::star::container::XNameAccess
>& typeMap
) throw(::com::sun::star::sdbc::SQLException
, ::com::sun::star::uno::RuntimeException
);
183 virtual ::com::sun::star::uno::Reference
< ::com::sun::star::sdbc::XRef
> SAL_CALL
getRef( sal_Int32 columnIndex
) throw(::com::sun::star::sdbc::SQLException
, ::com::sun::star::uno::RuntimeException
);
184 virtual ::com::sun::star::uno::Reference
< ::com::sun::star::sdbc::XBlob
> SAL_CALL
getBlob( sal_Int32 columnIndex
) throw(::com::sun::star::sdbc::SQLException
, ::com::sun::star::uno::RuntimeException
);
185 virtual ::com::sun::star::uno::Reference
< ::com::sun::star::sdbc::XClob
> SAL_CALL
getClob( sal_Int32 columnIndex
) throw(::com::sun::star::sdbc::SQLException
, ::com::sun::star::uno::RuntimeException
);
186 virtual ::com::sun::star::uno::Reference
< ::com::sun::star::sdbc::XArray
> SAL_CALL
getArray( sal_Int32 columnIndex
) throw(::com::sun::star::sdbc::SQLException
, ::com::sun::star::uno::RuntimeException
);
187 // XResultSetMetaDataSupplier
188 virtual ::com::sun::star::uno::Reference
< ::com::sun::star::sdbc::XResultSetMetaData
> SAL_CALL
getMetaData( ) throw(::com::sun::star::sdbc::SQLException
, ::com::sun::star::uno::RuntimeException
);
190 virtual void SAL_CALL
cancel( ) throw(::com::sun::star::uno::RuntimeException
);
192 virtual void SAL_CALL
close( ) throw(::com::sun::star::sdbc::SQLException
, ::com::sun::star::uno::RuntimeException
);
194 virtual ::com::sun::star::uno::Any SAL_CALL
getWarnings( ) throw(::com::sun::star::sdbc::SQLException
, ::com::sun::star::uno::RuntimeException
);
195 virtual void SAL_CALL
clearWarnings( ) throw(::com::sun::star::sdbc::SQLException
, ::com::sun::star::uno::RuntimeException
);
197 virtual sal_Int32 SAL_CALL
findColumn( const ::rtl::OUString
& columnName
) throw(::com::sun::star::sdbc::SQLException
, ::com::sun::star::uno::RuntimeException
);
200 virtual void SAL_CALL
insertRow( ) throw(::com::sun::star::sdbc::SQLException
, ::com::sun::star::uno::RuntimeException
);
201 virtual void SAL_CALL
updateRow( ) throw(::com::sun::star::sdbc::SQLException
, ::com::sun::star::uno::RuntimeException
);
202 virtual void SAL_CALL
deleteRow( ) throw(::com::sun::star::sdbc::SQLException
, ::com::sun::star::uno::RuntimeException
);
203 virtual void SAL_CALL
cancelRowUpdates( ) throw(::com::sun::star::sdbc::SQLException
, ::com::sun::star::uno::RuntimeException
);
204 virtual void SAL_CALL
moveToInsertRow( ) throw(::com::sun::star::sdbc::SQLException
, ::com::sun::star::uno::RuntimeException
);
205 virtual void SAL_CALL
moveToCurrentRow( ) throw(::com::sun::star::sdbc::SQLException
, ::com::sun::star::uno::RuntimeException
);
207 virtual void SAL_CALL
updateNull( sal_Int32 columnIndex
) throw(::com::sun::star::sdbc::SQLException
, ::com::sun::star::uno::RuntimeException
);
208 virtual void SAL_CALL
updateBoolean( sal_Int32 columnIndex
, sal_Bool x
) throw(::com::sun::star::sdbc::SQLException
, ::com::sun::star::uno::RuntimeException
);
209 virtual void SAL_CALL
updateByte( sal_Int32 columnIndex
, sal_Int8 x
) throw(::com::sun::star::sdbc::SQLException
, ::com::sun::star::uno::RuntimeException
);
210 virtual void SAL_CALL
updateShort( sal_Int32 columnIndex
, sal_Int16 x
) throw(::com::sun::star::sdbc::SQLException
, ::com::sun::star::uno::RuntimeException
);
211 virtual void SAL_CALL
updateInt( sal_Int32 columnIndex
, sal_Int32 x
) throw(::com::sun::star::sdbc::SQLException
, ::com::sun::star::uno::RuntimeException
);
212 virtual void SAL_CALL
updateLong( sal_Int32 columnIndex
, sal_Int64 x
) throw(::com::sun::star::sdbc::SQLException
, ::com::sun::star::uno::RuntimeException
);
213 virtual void SAL_CALL
updateFloat( sal_Int32 columnIndex
, float x
) throw(::com::sun::star::sdbc::SQLException
, ::com::sun::star::uno::RuntimeException
);
214 virtual void SAL_CALL
updateDouble( sal_Int32 columnIndex
, double x
) throw(::com::sun::star::sdbc::SQLException
, ::com::sun::star::uno::RuntimeException
);
215 virtual void SAL_CALL
updateString( sal_Int32 columnIndex
, const ::rtl::OUString
& x
) throw(::com::sun::star::sdbc::SQLException
, ::com::sun::star::uno::RuntimeException
);
216 virtual void SAL_CALL
updateBytes( sal_Int32 columnIndex
, const ::com::sun::star::uno::Sequence
< sal_Int8
>& x
) throw(::com::sun::star::sdbc::SQLException
, ::com::sun::star::uno::RuntimeException
);
217 virtual void SAL_CALL
updateDate( sal_Int32 columnIndex
, const ::com::sun::star::util::Date
& x
) throw(::com::sun::star::sdbc::SQLException
, ::com::sun::star::uno::RuntimeException
);
218 virtual void SAL_CALL
updateTime( sal_Int32 columnIndex
, const ::com::sun::star::util::Time
& x
) throw(::com::sun::star::sdbc::SQLException
, ::com::sun::star::uno::RuntimeException
);
219 virtual void SAL_CALL
updateTimestamp( sal_Int32 columnIndex
, const ::com::sun::star::util::DateTime
& x
) throw(::com::sun::star::sdbc::SQLException
, ::com::sun::star::uno::RuntimeException
);
220 virtual void SAL_CALL
updateBinaryStream( sal_Int32 columnIndex
, const ::com::sun::star::uno::Reference
< ::com::sun::star::io::XInputStream
>& x
, sal_Int32 length
) throw(::com::sun::star::sdbc::SQLException
, ::com::sun::star::uno::RuntimeException
);
221 virtual void SAL_CALL
updateCharacterStream( sal_Int32 columnIndex
, const ::com::sun::star::uno::Reference
< ::com::sun::star::io::XInputStream
>& x
, sal_Int32 length
) throw(::com::sun::star::sdbc::SQLException
, ::com::sun::star::uno::RuntimeException
);
222 virtual void SAL_CALL
updateObject( sal_Int32 columnIndex
, const ::com::sun::star::uno::Any
& x
) throw(::com::sun::star::sdbc::SQLException
, ::com::sun::star::uno::RuntimeException
);
223 virtual void SAL_CALL
updateNumericObject( sal_Int32 columnIndex
, const ::com::sun::star::uno::Any
& x
, sal_Int32 scale
) throw(::com::sun::star::sdbc::SQLException
, ::com::sun::star::uno::RuntimeException
);
225 virtual ::com::sun::star::uno::Any SAL_CALL
getBookmark( ) throw(::com::sun::star::sdbc::SQLException
, ::com::sun::star::uno::RuntimeException
);
226 virtual sal_Bool SAL_CALL
moveToBookmark( const ::com::sun::star::uno::Any
& bookmark
) throw(::com::sun::star::sdbc::SQLException
, ::com::sun::star::uno::RuntimeException
);
227 virtual sal_Bool SAL_CALL
moveRelativeToBookmark( const ::com::sun::star::uno::Any
& bookmark
, sal_Int32 rows
) throw(::com::sun::star::sdbc::SQLException
, ::com::sun::star::uno::RuntimeException
);
228 virtual sal_Int32 SAL_CALL
compareBookmarks( const ::com::sun::star::uno::Any
& first
, const ::com::sun::star::uno::Any
& second
) throw(::com::sun::star::sdbc::SQLException
, ::com::sun::star::uno::RuntimeException
);
229 virtual sal_Bool SAL_CALL
hasOrderedBookmarks( ) throw(::com::sun::star::sdbc::SQLException
, ::com::sun::star::uno::RuntimeException
);
230 virtual sal_Int32 SAL_CALL
hashBookmark( const ::com::sun::star::uno::Any
& bookmark
) throw(::com::sun::star::sdbc::SQLException
, ::com::sun::star::uno::RuntimeException
);
232 virtual ::com::sun::star::uno::Sequence
< sal_Int32
> SAL_CALL
deleteRows( const ::com::sun::star::uno::Sequence
< ::com::sun::star::uno::Any
>& rows
) throw(::com::sun::star::sdbc::SQLException
, ::com::sun::star::uno::RuntimeException
);
237 sal_Int32 m_CurrentRowCount
;
238 ::com::sun::star::uno::Reference
< ::com::sun::star::container::XNameAccess
>
241 ::std::vector
<sal_Int32
> m_aColMapping
; // pos 0 is unused so we don't have to decrement 1 everytime
242 ::std::vector
<sal_Int32
> m_aOrderbyColumnNumber
;
243 ::std::vector
<TAscendingOrder
> m_aOrderbyAscending
;
244 ::com::sun::star::uno::Sequence
< ::rtl::OUString
> m_aColumnNames
;
246 OValueRow m_aParameterRow
;
247 ::std::vector
< ::rtl::OUString
> m_aAttributeStrings
;
248 sal_Int32 m_nParamIndex
;
249 sal_Bool m_bIsAlwaysFalseQuery
;
250 ::vos::ORef
<OKeySet
> m_pKeySet
;
251 OSortIndex
* m_pSortIndex
;
252 sal_Int32 m_nNewRow
; //inserted row
253 sal_Int32 m_nUpdatedRow
; //updated row
254 sal_Int32 m_RowStates
;
255 sal_Int32 m_bIsReadOnly
;
256 inline void resetParameters() { m_nParamIndex
= 0; }
258 ::vos::ORef
<connectivity::OSQLColumns
> m_xColumns
; // this are the select columns
259 ::vos::ORef
<connectivity::OSQLColumns
> m_xParamColumns
;
261 void parseParameter( const OSQLParseNode
* pNode
, rtl::OUString
& rMatchString
);
262 void fillRowData() throw( ::com::sun::star::sdbc::SQLException
);
263 void initializeRow(OValueRow
& _rRow
,sal_Int32 _nColumnCount
);
264 void analyseWhereClause( const OSQLParseNode
* parseTree
,
265 MQueryExpression
&queryExpression
);
267 sal_Bool
isCount() const;
269 // XXX sal_Bool IsSorted() const { return !m_aOrderbyColumnNumber.empty() && m_aOrderbyColumnNumber[0] != STRING_NOTFOUND ;}
270 sal_Bool
IsSorted() const { return !m_aOrderbyColumnNumber
.empty(); }
273 NEXT_POS
, PRIOR_POS
, FIRST_POS
, LAST_POS
, ABSOLUTE_POS
, RELATIVE_POS
276 sal_uInt32
currentRowCount();
278 sal_Bool
fetchRow(sal_Int32 rowIndex
,sal_Bool bForceReload
=sal_False
) throw( ::com::sun::star::sdbc::SQLException
,
279 ::com::sun::star::uno::RuntimeException
);
280 sal_Bool
fetchCurrentRow() throw( ::com::sun::star::sdbc::SQLException
,
281 ::com::sun::star::uno::RuntimeException
);
282 sal_Bool
pushCard(sal_uInt32 rowIndex
) throw( ::com::sun::star::sdbc::SQLException
,
283 ::com::sun::star::uno::RuntimeException
);
284 sal_Bool
validRow( sal_uInt32 nRow
);
285 sal_Bool
seekRow( eRowPosition pos
, sal_Int32 nOffset
= 0 );
286 sal_Int32
deletedCount();
287 sal_Bool
fillKeySet(sal_Int32 nMaxCardNumber
); //When we get new rows, fill the m_pKeySet items for them
288 sal_Int32
getRowForCardNumber(sal_Int32 nCardNum
);
289 const ORowSetValue
& getValue(sal_Int32 rowIndex
, sal_Int32 columnIndex
)
290 throw(::com::sun::star::sdbc::SQLException
, ::com::sun::star::uno::RuntimeException
);
292 void updateValue(sal_Int32 columnIndex
,const ORowSetValue
& x
) throw(::com::sun::star::sdbc::SQLException
, ::com::sun::star::uno::RuntimeException
);
293 void checkPendingUpdate() throw(::com::sun::star::sdbc::SQLException
, ::com::sun::star::uno::RuntimeException
);
294 sal_Int32
getCurrentCardNumber();
297 sal_Bool
determineReadOnly();
298 // MozAddressbook Specific methods
299 void SAL_CALL
executeQuery() throw( ::com::sun::star::sdbc::SQLException
,
300 ::com::sun::star::uno::RuntimeException
);
302 void setTable(OTable
* _rTable
);
304 void setParameterRow(const OValueRow
& _rParaRow
)
305 { m_aParameterRow
= _rParaRow
; }
307 void setParameterColumns(const ::vos::ORef
<connectivity::OSQLColumns
>& _xParamColumns
)
308 { m_xParamColumns
= _xParamColumns
; }
310 void setBindingRow(const OValueRow
& _aRow
)
313 void setColumnMapping(const ::std::vector
<sal_Int32
>& _aColumnMapping
);
315 void setOrderByColumns(const ::std::vector
<sal_Int32
>& _aColumnOrderBy
);
317 void setOrderByAscending(const ::std::vector
<TAscendingOrder
>& _aOrderbyAsc
);
319 inline sal_Int32
mapColumn(sal_Int32 column
);
321 void checkIndex(sal_Int32 columnIndex
) throw(::com::sun::star::sdbc::SQLException
);
323 static void setBoundedColumns(
324 const OValueRow
& _rRow
,
325 const ::vos::ORef
<connectivity::OSQLColumns
>& _rxColumns
,
326 const ::com::sun::star::uno::Reference
< ::com::sun::star::container::XIndexAccess
>& _xNames
,
327 sal_Bool _bSetColumnMapping
,
328 const ::com::sun::star::uno::Reference
< ::com::sun::star::sdbc::XDatabaseMetaData
>& _xMetaData
,
329 ::std::vector
<sal_Int32
>& _rColMapping
);
331 ::osl::Mutex
& getMutex() { return m_aMutex
; }
335 inline void impl_ensureKeySet()
337 if ( !m_pKeySet
.isValid() )
338 m_pKeySet
= new OKeySet();
342 using OPropertySetHelper::getFastPropertyValue
;
345 inline sal_Int32
OResultSet::mapColumn(sal_Int32 column
)
347 sal_Int32 map
= column
;
349 OSL_ENSURE(column
> 0, "OResultSet::mapColumn: invalid column index!");
350 // the first column (index 0) is for convenience only. The
351 // first real select column is no 1.
352 if ((column
> 0) && (column
< (sal_Int32
)m_aColMapping
.size()))
353 map
= m_aColMapping
[column
];
358 class ResultSetEntryGuard
: public ::osl::MutexGuard
361 ResultSetEntryGuard( OResultSet
& _rRS
) : ::osl::MutexGuard( _rRS
.getMutex() )
369 #endif // CONNECTIVITY_SRESULTSET_HXX