1 /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
3 * This file is part of the LibreOffice project.
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/.
9 * This file incorporates work covered by the following license notice:
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 .
19 #ifndef CONNECTIVITY_SRESULTSET_HXX
20 #define CONNECTIVITY_SRESULTSET_HXX
22 #include <com/sun/star/sdbc/XResultSet.hpp>
23 #include <com/sun/star/sdbc/XRow.hpp>
24 #include <com/sun/star/sdbc/XResultSetMetaDataSupplier.hpp>
25 #include <com/sun/star/sdbc/XCloseable.hpp>
26 #include <com/sun/star/sdbc/XColumnLocate.hpp>
27 #include <com/sun/star/util/XCancellable.hpp>
28 #include <com/sun/star/sdbc/XWarningsSupplier.hpp>
29 #include <com/sun/star/sdbc/XResultSetUpdate.hpp>
30 #include <com/sun/star/sdbcx/XRowLocate.hpp>
31 #include <com/sun/star/sdbcx/XDeleteRows.hpp>
32 #include <com/sun/star/sdbc/XRowUpdate.hpp>
33 #include <cppuhelper/compbase12.hxx>
34 #include <comphelper/proparrhlp.hxx>
35 #include "MStatement.hxx"
36 #include "MQueryHelper.hxx"
37 #include "connectivity/CommonTools.hxx"
38 #include "connectivity/FValue.hxx"
39 #include "connectivity/sqliterator.hxx"
40 #include "TSortIndex.hxx"
42 namespace connectivity
50 typedef ::cppu::WeakComponentImplHelper12
< ::com::sun::star::sdbc::XResultSet
,
51 ::com::sun::star::sdbc::XRow
,
52 ::com::sun::star::sdbc::XResultSetMetaDataSupplier
,
53 ::com::sun::star::util::XCancellable
,
54 ::com::sun::star::sdbc::XWarningsSupplier
,
55 ::com::sun::star::sdbc::XCloseable
,
56 ::com::sun::star::sdbc::XColumnLocate
,
57 ::com::sun::star::sdbc::XResultSetUpdate
,
58 ::com::sun::star::sdbc::XRowUpdate
,
59 ::com::sun::star::sdbcx::XRowLocate
,
60 ::com::sun::star::sdbcx::XDeleteRows
,
61 ::com::sun::star::lang::XServiceInfo
> OResultSet_BASE
;
64 typedef sal_Int64 TVoidPtr
;
65 typedef ::std::allocator
< TVoidPtr
> TVoidAlloc
;
66 typedef ::std::vector
<TVoidPtr
> TVoidVector
;
68 class OResultSet
: public comphelper::OBaseMutex
,
69 public OResultSet_BASE
,
70 public ::cppu::OPropertySetHelper
,
71 public ::comphelper::OPropertyArrayUsageHelper
<OResultSet
>
74 OCommonStatement
* m_pStatement
;
75 ::com::sun::star::uno::Reference
< ::com::sun::star::uno::XInterface
> m_xStatement
;
76 ::com::sun::star::uno::Reference
< ::com::sun::star::sdbc::XResultSetMetaData
> m_xMetaData
;
78 sal_uInt32 m_nOldRowPos
;
80 sal_Int32 m_nFetchSize
;
81 sal_Int32 m_nResultSetType
;
82 sal_Int32 m_nFetchDirection
;
83 sal_Int32 m_nResultSetConcurrency
;
87 ::boost::shared_ptr
< ::connectivity::OSQLParseTreeIterator
>
89 const connectivity::OSQLParseNode
* m_pParseTree
;
91 // OPropertyArrayUsageHelper
92 virtual ::cppu::IPropertyArrayHelper
* createArrayHelper( ) const;
94 virtual ::cppu::IPropertyArrayHelper
& SAL_CALL
getInfoHelper();
96 virtual sal_Bool SAL_CALL
convertFastPropertyValue(
97 ::com::sun::star::uno::Any
& rConvertedValue
,
98 ::com::sun::star::uno::Any
& rOldValue
,
100 const ::com::sun::star::uno::Any
& rValue
)
101 throw (::com::sun::star::lang::IllegalArgumentException
);
102 virtual void SAL_CALL
setFastPropertyValue_NoBroadcast(
104 const ::com::sun::star::uno::Any
& rValue
106 throw (::com::sun::star::uno::Exception
);
107 virtual void SAL_CALL
getFastPropertyValue(
108 ::com::sun::star::uno::Any
& rValue
,
112 // you can't delete objects of this type
113 virtual ~OResultSet();
115 DECLARE_SERVICE_INFO();
117 OResultSet(OCommonStatement
* pStmt
, const ::boost::shared_ptr
< ::connectivity::OSQLParseTreeIterator
>& _pSQLIterator
);
120 ::com::sun::star::uno::Reference
< ::com::sun::star::uno::XInterface
> operator *()
122 return ::com::sun::star::uno::Reference
< ::com::sun::star::uno::XInterface
>(*(OResultSet_BASE
*)this);
125 // ::cppu::OComponentHelper
126 virtual void SAL_CALL
disposing(void);
128 virtual ::com::sun::star::uno::Any SAL_CALL
queryInterface( const ::com::sun::star::uno::Type
& rType
) throw(::com::sun::star::uno::RuntimeException
);
129 virtual void SAL_CALL
acquire() throw();
130 virtual void SAL_CALL
release() throw();
132 virtual ::com::sun::star::uno::Sequence
< ::com::sun::star::uno::Type
> SAL_CALL
getTypes( ) throw(::com::sun::star::uno::RuntimeException
);
134 virtual ::com::sun::star::uno::Reference
< ::com::sun::star::beans::XPropertySetInfo
> SAL_CALL
getPropertySetInfo( ) throw(::com::sun::star::uno::RuntimeException
);
136 virtual sal_Bool SAL_CALL
next( ) throw(::com::sun::star::sdbc::SQLException
, ::com::sun::star::uno::RuntimeException
);
137 virtual sal_Bool SAL_CALL
isBeforeFirst( ) throw(::com::sun::star::sdbc::SQLException
, ::com::sun::star::uno::RuntimeException
);
138 virtual sal_Bool SAL_CALL
isAfterLast( ) throw(::com::sun::star::sdbc::SQLException
, ::com::sun::star::uno::RuntimeException
);
139 virtual sal_Bool SAL_CALL
isFirst( ) throw(::com::sun::star::sdbc::SQLException
, ::com::sun::star::uno::RuntimeException
);
140 virtual sal_Bool SAL_CALL
isLast( ) throw(::com::sun::star::sdbc::SQLException
, ::com::sun::star::uno::RuntimeException
);
141 virtual void SAL_CALL
beforeFirst( ) throw(::com::sun::star::sdbc::SQLException
, ::com::sun::star::uno::RuntimeException
);
142 virtual void SAL_CALL
afterLast( ) throw(::com::sun::star::sdbc::SQLException
, ::com::sun::star::uno::RuntimeException
);
143 virtual sal_Bool SAL_CALL
first( ) throw(::com::sun::star::sdbc::SQLException
, ::com::sun::star::uno::RuntimeException
);
144 virtual sal_Bool SAL_CALL
last( ) throw(::com::sun::star::sdbc::SQLException
, ::com::sun::star::uno::RuntimeException
);
145 virtual sal_Int32 SAL_CALL
getRow( ) throw(::com::sun::star::sdbc::SQLException
, ::com::sun::star::uno::RuntimeException
);
146 virtual sal_Bool SAL_CALL
absolute( sal_Int32 row
) throw(::com::sun::star::sdbc::SQLException
, ::com::sun::star::uno::RuntimeException
);
147 virtual sal_Bool SAL_CALL
relative( sal_Int32 rows
) throw(::com::sun::star::sdbc::SQLException
, ::com::sun::star::uno::RuntimeException
);
148 virtual sal_Bool SAL_CALL
previous( ) throw(::com::sun::star::sdbc::SQLException
, ::com::sun::star::uno::RuntimeException
);
149 virtual void SAL_CALL
refreshRow( ) throw(::com::sun::star::sdbc::SQLException
, ::com::sun::star::uno::RuntimeException
);
150 virtual sal_Bool SAL_CALL
rowUpdated( ) throw(::com::sun::star::sdbc::SQLException
, ::com::sun::star::uno::RuntimeException
);
151 virtual sal_Bool SAL_CALL
rowInserted( ) throw(::com::sun::star::sdbc::SQLException
, ::com::sun::star::uno::RuntimeException
);
152 virtual sal_Bool SAL_CALL
rowDeleted( ) throw(::com::sun::star::sdbc::SQLException
, ::com::sun::star::uno::RuntimeException
);
153 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
);
155 virtual sal_Bool SAL_CALL
wasNull( ) throw(::com::sun::star::sdbc::SQLException
, ::com::sun::star::uno::RuntimeException
);
156 virtual OUString SAL_CALL
getString( sal_Int32 columnIndex
) throw(::com::sun::star::sdbc::SQLException
, ::com::sun::star::uno::RuntimeException
);
157 virtual sal_Bool SAL_CALL
getBoolean( sal_Int32 columnIndex
) throw(::com::sun::star::sdbc::SQLException
, ::com::sun::star::uno::RuntimeException
);
158 virtual sal_Int8 SAL_CALL
getByte( sal_Int32 columnIndex
) throw(::com::sun::star::sdbc::SQLException
, ::com::sun::star::uno::RuntimeException
);
159 virtual sal_Int16 SAL_CALL
getShort( sal_Int32 columnIndex
) throw(::com::sun::star::sdbc::SQLException
, ::com::sun::star::uno::RuntimeException
);
160 virtual sal_Int32 SAL_CALL
getInt( sal_Int32 columnIndex
) throw(::com::sun::star::sdbc::SQLException
, ::com::sun::star::uno::RuntimeException
);
161 virtual sal_Int64 SAL_CALL
getLong( sal_Int32 columnIndex
) throw(::com::sun::star::sdbc::SQLException
, ::com::sun::star::uno::RuntimeException
);
162 virtual float SAL_CALL
getFloat( sal_Int32 columnIndex
) throw(::com::sun::star::sdbc::SQLException
, ::com::sun::star::uno::RuntimeException
);
163 virtual double SAL_CALL
getDouble( sal_Int32 columnIndex
) throw(::com::sun::star::sdbc::SQLException
, ::com::sun::star::uno::RuntimeException
);
164 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
);
165 virtual ::com::sun::star::util::Date SAL_CALL
getDate( sal_Int32 columnIndex
) throw(::com::sun::star::sdbc::SQLException
, ::com::sun::star::uno::RuntimeException
);
166 virtual ::com::sun::star::util::Time SAL_CALL
getTime( sal_Int32 columnIndex
) throw(::com::sun::star::sdbc::SQLException
, ::com::sun::star::uno::RuntimeException
);
167 virtual ::com::sun::star::util::DateTime SAL_CALL
getTimestamp( sal_Int32 columnIndex
) throw(::com::sun::star::sdbc::SQLException
, ::com::sun::star::uno::RuntimeException
);
168 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
);
169 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
);
170 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
);
171 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
);
172 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
);
173 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
);
174 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
);
175 // XResultSetMetaDataSupplier
176 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
);
178 virtual void SAL_CALL
cancel( ) throw(::com::sun::star::uno::RuntimeException
);
180 virtual void SAL_CALL
close( ) throw(::com::sun::star::sdbc::SQLException
, ::com::sun::star::uno::RuntimeException
);
182 virtual ::com::sun::star::uno::Any SAL_CALL
getWarnings( ) throw(::com::sun::star::sdbc::SQLException
, ::com::sun::star::uno::RuntimeException
);
183 virtual void SAL_CALL
clearWarnings( ) throw(::com::sun::star::sdbc::SQLException
, ::com::sun::star::uno::RuntimeException
);
185 virtual sal_Int32 SAL_CALL
findColumn( const OUString
& columnName
) throw(::com::sun::star::sdbc::SQLException
, ::com::sun::star::uno::RuntimeException
);
188 virtual void SAL_CALL
insertRow( ) throw(::com::sun::star::sdbc::SQLException
, ::com::sun::star::uno::RuntimeException
);
189 virtual void SAL_CALL
updateRow( ) throw(::com::sun::star::sdbc::SQLException
, ::com::sun::star::uno::RuntimeException
);
190 virtual void SAL_CALL
deleteRow( ) throw(::com::sun::star::sdbc::SQLException
, ::com::sun::star::uno::RuntimeException
);
191 virtual void SAL_CALL
cancelRowUpdates( ) throw(::com::sun::star::sdbc::SQLException
, ::com::sun::star::uno::RuntimeException
);
192 virtual void SAL_CALL
moveToInsertRow( ) throw(::com::sun::star::sdbc::SQLException
, ::com::sun::star::uno::RuntimeException
);
193 virtual void SAL_CALL
moveToCurrentRow( ) throw(::com::sun::star::sdbc::SQLException
, ::com::sun::star::uno::RuntimeException
);
195 virtual void SAL_CALL
updateNull( sal_Int32 columnIndex
) throw(::com::sun::star::sdbc::SQLException
, ::com::sun::star::uno::RuntimeException
);
196 virtual void SAL_CALL
updateBoolean( sal_Int32 columnIndex
, sal_Bool x
) throw(::com::sun::star::sdbc::SQLException
, ::com::sun::star::uno::RuntimeException
);
197 virtual void SAL_CALL
updateByte( sal_Int32 columnIndex
, sal_Int8 x
) throw(::com::sun::star::sdbc::SQLException
, ::com::sun::star::uno::RuntimeException
);
198 virtual void SAL_CALL
updateShort( sal_Int32 columnIndex
, sal_Int16 x
) throw(::com::sun::star::sdbc::SQLException
, ::com::sun::star::uno::RuntimeException
);
199 virtual void SAL_CALL
updateInt( sal_Int32 columnIndex
, sal_Int32 x
) throw(::com::sun::star::sdbc::SQLException
, ::com::sun::star::uno::RuntimeException
);
200 virtual void SAL_CALL
updateLong( sal_Int32 columnIndex
, sal_Int64 x
) throw(::com::sun::star::sdbc::SQLException
, ::com::sun::star::uno::RuntimeException
);
201 virtual void SAL_CALL
updateFloat( sal_Int32 columnIndex
, float x
) throw(::com::sun::star::sdbc::SQLException
, ::com::sun::star::uno::RuntimeException
);
202 virtual void SAL_CALL
updateDouble( sal_Int32 columnIndex
, double x
) throw(::com::sun::star::sdbc::SQLException
, ::com::sun::star::uno::RuntimeException
);
203 virtual void SAL_CALL
updateString( sal_Int32 columnIndex
, const OUString
& x
) throw(::com::sun::star::sdbc::SQLException
, ::com::sun::star::uno::RuntimeException
);
204 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
);
205 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
);
206 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
);
207 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
);
208 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
);
209 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
);
210 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
);
211 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
);
213 virtual ::com::sun::star::uno::Any SAL_CALL
getBookmark( ) throw(::com::sun::star::sdbc::SQLException
, ::com::sun::star::uno::RuntimeException
);
214 virtual sal_Bool SAL_CALL
moveToBookmark( const ::com::sun::star::uno::Any
& bookmark
) throw(::com::sun::star::sdbc::SQLException
, ::com::sun::star::uno::RuntimeException
);
215 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
);
216 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
);
217 virtual sal_Bool SAL_CALL
hasOrderedBookmarks( ) throw(::com::sun::star::sdbc::SQLException
, ::com::sun::star::uno::RuntimeException
);
218 virtual sal_Int32 SAL_CALL
hashBookmark( const ::com::sun::star::uno::Any
& bookmark
) throw(::com::sun::star::sdbc::SQLException
, ::com::sun::star::uno::RuntimeException
);
220 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
);
224 MQueryHelper m_aQueryHelper
;
226 sal_Int32 m_CurrentRowCount
;
227 ::com::sun::star::uno::Reference
< ::com::sun::star::container::XNameAccess
>
230 ::std::vector
<sal_Int32
> m_aColMapping
; // pos 0 is unused so we don't have to decrement 1 everytime
231 ::std::vector
<sal_Int32
> m_aOrderbyColumnNumber
;
232 ::std::vector
<TAscendingOrder
> m_aOrderbyAscending
;
233 ::com::sun::star::uno::Sequence
< OUString
> m_aColumnNames
;
235 OValueRow m_aParameterRow
;
236 ::std::vector
< OUString
> m_aAttributeStrings
;
237 sal_Int32 m_nParamIndex
;
238 sal_Bool m_bIsAlwaysFalseQuery
;
239 ::rtl::Reference
<OKeySet
> m_pKeySet
;
240 OSortIndex
* m_pSortIndex
;
241 sal_Int32 m_nNewRow
; //inserted row
242 sal_Int32 m_nUpdatedRow
; //updated row
243 sal_Int32 m_RowStates
;
244 sal_Int32 m_bIsReadOnly
;
245 inline void resetParameters() { m_nParamIndex
= 0; }
247 ::rtl::Reference
<connectivity::OSQLColumns
> m_xColumns
; // this are the select columns
248 ::rtl::Reference
<connectivity::OSQLColumns
> m_xParamColumns
;
250 void parseParameter( const OSQLParseNode
* pNode
, OUString
& rMatchString
);
251 void fillRowData() throw( ::com::sun::star::sdbc::SQLException
);
252 void analyseWhereClause( const OSQLParseNode
* parseTree
,
253 MQueryExpression
&queryExpression
);
255 sal_Bool
isCount() const;
257 // XXX sal_Bool IsSorted() const { return !m_aOrderbyColumnNumber.empty() && m_aOrderbyColumnNumber[0] != STRING_NOTFOUND ;}
258 sal_Bool
IsSorted() const { return !m_aOrderbyColumnNumber
.empty(); }
261 NEXT_POS
, PRIOR_POS
, FIRST_POS
, LAST_POS
, ABSOLUTE_POS
, RELATIVE_POS
264 sal_uInt32
currentRowCount();
266 sal_Bool
fetchRow(sal_Int32 rowIndex
,sal_Bool bForceReload
=sal_False
) throw( ::com::sun::star::sdbc::SQLException
,
267 ::com::sun::star::uno::RuntimeException
);
268 sal_Bool
fetchCurrentRow() throw( ::com::sun::star::sdbc::SQLException
,
269 ::com::sun::star::uno::RuntimeException
);
270 sal_Bool
pushCard(sal_uInt32 rowIndex
) throw( ::com::sun::star::sdbc::SQLException
,
271 ::com::sun::star::uno::RuntimeException
);
272 sal_Bool
validRow( sal_uInt32 nRow
);
273 sal_Bool
seekRow( eRowPosition pos
, sal_Int32 nOffset
= 0 );
274 sal_Int32
deletedCount();
275 sal_Bool
fillKeySet(sal_Int32 nMaxCardNumber
); //When we get new rows, fill the m_pKeySet items for them
276 sal_Int32
getRowForCardNumber(sal_Int32 nCardNum
);
277 const ORowSetValue
& getValue(sal_Int32 rowIndex
, sal_Int32 columnIndex
)
278 throw(::com::sun::star::sdbc::SQLException
, ::com::sun::star::uno::RuntimeException
);
280 void updateValue(sal_Int32 columnIndex
,const ORowSetValue
& x
) throw(::com::sun::star::sdbc::SQLException
, ::com::sun::star::uno::RuntimeException
);
281 void checkPendingUpdate() throw(::com::sun::star::sdbc::SQLException
, ::com::sun::star::uno::RuntimeException
);
282 sal_Int32
getCurrentCardNumber();
285 sal_Bool
determineReadOnly();
286 // MozAddressbook Specific methods
287 void SAL_CALL
executeQuery() throw( ::com::sun::star::sdbc::SQLException
,
288 ::com::sun::star::uno::RuntimeException
);
290 void setTable(OTable
* _rTable
);
292 void setParameterRow(const OValueRow
& _rParaRow
)
293 { m_aParameterRow
= _rParaRow
; }
295 void setParameterColumns(const ::rtl::Reference
<connectivity::OSQLColumns
>& _xParamColumns
)
296 { m_xParamColumns
= _xParamColumns
; }
298 void setBindingRow(const OValueRow
& _aRow
)
301 void setColumnMapping(const ::std::vector
<sal_Int32
>& _aColumnMapping
);
303 void setOrderByColumns(const ::std::vector
<sal_Int32
>& _aColumnOrderBy
);
305 void setOrderByAscending(const ::std::vector
<TAscendingOrder
>& _aOrderbyAsc
);
307 inline sal_Int32
mapColumn(sal_Int32 column
);
309 void checkIndex(sal_Int32 columnIndex
) throw(::com::sun::star::sdbc::SQLException
);
311 static void setBoundedColumns(
312 const OValueRow
& _rRow
,
313 const ::rtl::Reference
<connectivity::OSQLColumns
>& _rxColumns
,
314 const ::com::sun::star::uno::Reference
< ::com::sun::star::container::XIndexAccess
>& _xNames
,
315 sal_Bool _bSetColumnMapping
,
316 const ::com::sun::star::uno::Reference
< ::com::sun::star::sdbc::XDatabaseMetaData
>& _xMetaData
,
317 ::std::vector
<sal_Int32
>& _rColMapping
);
319 ::osl::Mutex
& getMutex() { return m_aMutex
; }
323 inline void impl_ensureKeySet()
325 if ( !m_pKeySet
.is() )
326 m_pKeySet
= new OKeySet();
330 using OPropertySetHelper::getFastPropertyValue
;
333 inline sal_Int32
OResultSet::mapColumn(sal_Int32 column
)
335 sal_Int32 map
= column
;
337 OSL_ENSURE(column
> 0, "OResultSet::mapColumn: invalid column index!");
338 // the first column (index 0) is for convenience only. The
339 // first real select column is no 1.
340 if ((column
> 0) && (column
< (sal_Int32
)m_aColMapping
.size()))
341 map
= m_aColMapping
[column
];
346 class ResultSetEntryGuard
: public ::osl::MutexGuard
349 ResultSetEntryGuard( OResultSet
& _rRS
) : ::osl::MutexGuard( _rRS
.getMutex() )
357 #endif // CONNECTIVITY_SRESULTSET_HXX
359 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */