xref: /aoo41x/main/dbaccess/source/core/api/RowSet.hxx (revision 2e2212a7)
1*2e2212a7SAndrew Rist /**************************************************************
2cdf0e10cSrcweir  *
3*2e2212a7SAndrew Rist  * Licensed to the Apache Software Foundation (ASF) under one
4*2e2212a7SAndrew Rist  * or more contributor license agreements.  See the NOTICE file
5*2e2212a7SAndrew Rist  * distributed with this work for additional information
6*2e2212a7SAndrew Rist  * regarding copyright ownership.  The ASF licenses this file
7*2e2212a7SAndrew Rist  * to you under the Apache License, Version 2.0 (the
8*2e2212a7SAndrew Rist  * "License"); you may not use this file except in compliance
9*2e2212a7SAndrew Rist  * with the License.  You may obtain a copy of the License at
10*2e2212a7SAndrew Rist  *
11*2e2212a7SAndrew Rist  *   http://www.apache.org/licenses/LICENSE-2.0
12*2e2212a7SAndrew Rist  *
13*2e2212a7SAndrew Rist  * Unless required by applicable law or agreed to in writing,
14*2e2212a7SAndrew Rist  * software distributed under the License is distributed on an
15*2e2212a7SAndrew Rist  * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
16*2e2212a7SAndrew Rist  * KIND, either express or implied.  See the License for the
17*2e2212a7SAndrew Rist  * specific language governing permissions and limitations
18*2e2212a7SAndrew Rist  * under the License.
19*2e2212a7SAndrew Rist  *
20*2e2212a7SAndrew Rist  *************************************************************/
21*2e2212a7SAndrew Rist 
22*2e2212a7SAndrew Rist 
23cdf0e10cSrcweir 
24cdf0e10cSrcweir #ifndef DBACCESS_CORE_API_ROWSET_HXX
25cdf0e10cSrcweir #define DBACCESS_CORE_API_ROWSET_HXX
26cdf0e10cSrcweir 
27cdf0e10cSrcweir #include "apitools.hxx"
28cdf0e10cSrcweir #include "RowSetBase.hxx"
29cdf0e10cSrcweir 
30cdf0e10cSrcweir /** === begin UNO includes === **/
31cdf0e10cSrcweir #include <com/sun/star/sdbc/XPreparedStatement.hpp>
32cdf0e10cSrcweir #include <com/sun/star/sdbc/XConnection.hpp>
33cdf0e10cSrcweir #include <com/sun/star/sdb/XSingleSelectQueryComposer.hpp>
34cdf0e10cSrcweir #include <com/sun/star/sdb/XResultSetAccess.hpp>
35cdf0e10cSrcweir #include <com/sun/star/sdbc/XRowSetListener.hpp>
36cdf0e10cSrcweir #include <com/sun/star/sdbc/XRowUpdate.hpp>
37cdf0e10cSrcweir #include <com/sun/star/sdbc/XResultSetUpdate.hpp>
38cdf0e10cSrcweir #include <com/sun/star/sdbc/XParameters.hpp>
39cdf0e10cSrcweir #include <com/sun/star/sdb/XRowSetApproveBroadcaster.hpp>
40cdf0e10cSrcweir #include <com/sun/star/sdbc/ResultSetType.hpp>
41cdf0e10cSrcweir #include <com/sun/star/util/XCancellable.hpp>
42cdf0e10cSrcweir #include <com/sun/star/sdbcx/XDeleteRows.hpp>
43cdf0e10cSrcweir #include <com/sun/star/sdb/XCompletedExecution.hpp>
44cdf0e10cSrcweir #include <com/sun/star/sdb/RowSetVetoException.hpp>
45cdf0e10cSrcweir #include <com/sun/star/sdb/XSingleSelectQueryAnalyzer.hpp>
46cdf0e10cSrcweir #include <com/sun/star/sdb/XSingleSelectQueryComposer.hpp>
47cdf0e10cSrcweir #include <com/sun/star/sdb/XParametersSupplier.hpp>
48cdf0e10cSrcweir #include <com/sun/star/sdb/XRowsChangeBroadcaster.hpp>
49cdf0e10cSrcweir /** === end UNO includes === **/
50cdf0e10cSrcweir 
51cdf0e10cSrcweir #include <cppuhelper/compbase12.hxx>
52cdf0e10cSrcweir #include <connectivity/paramwrapper.hxx>
53cdf0e10cSrcweir #include <connectivity/FValue.hxx>
54cdf0e10cSrcweir #include <connectivity/warningscontainer.hxx>
55cdf0e10cSrcweir 
56cdf0e10cSrcweir namespace dbaccess
57cdf0e10cSrcweir {
58cdf0e10cSrcweir 	typedef ::cppu::WeakAggComponentImplHelper12    <	::com::sun::star::sdb::XResultSetAccess
59cdf0e10cSrcweir 												    ,	::com::sun::star::sdb::XRowSetApproveBroadcaster
60cdf0e10cSrcweir                                                     ,	::com::sun::star::sdb::XRowsChangeBroadcaster
61cdf0e10cSrcweir 												    ,	::com::sun::star::sdbcx::XDeleteRows
62cdf0e10cSrcweir 												    ,	::com::sun::star::sdbc::XParameters
63cdf0e10cSrcweir 												    ,	::com::sun::star::lang::XEventListener
64cdf0e10cSrcweir 												    ,	::com::sun::star::sdbc::XResultSetUpdate
65cdf0e10cSrcweir 												    ,	::com::sun::star::sdbc::XRowUpdate
66cdf0e10cSrcweir 												    ,	::com::sun::star::util::XCancellable
67cdf0e10cSrcweir 												    ,	::com::sun::star::sdb::XCompletedExecution
68cdf0e10cSrcweir 												    ,	::com::sun::star::sdb::XParametersSupplier
69cdf0e10cSrcweir 												    ,	::com::sun::star::sdbc::XWarningsSupplier
70cdf0e10cSrcweir 												    >	ORowSet_BASE1;
71cdf0e10cSrcweir 
72cdf0e10cSrcweir 	class OTableContainer;
73cdf0e10cSrcweir 	class ORowSet :	public comphelper::OBaseMutex
74cdf0e10cSrcweir 					, public ORowSet_BASE1
75cdf0e10cSrcweir 					, public ORowSetBase
76cdf0e10cSrcweir 					, public ::comphelper::OPropertyArrayUsageHelper<ORowSet>
77cdf0e10cSrcweir 	{
78cdf0e10cSrcweir 		friend class ORowSetClone;
79cdf0e10cSrcweir 
80cdf0e10cSrcweir 		::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XConnection >			m_xOldConnection;
81cdf0e10cSrcweir 		::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XConnection >			m_xActiveConnection;
82cdf0e10cSrcweir 		::com::sun::star::uno::Any														m_aActiveConnection;
83cdf0e10cSrcweir 		::com::sun::star::uno::Reference< ::com::sun::star::container::XNameAccess >	m_xTypeMap;
84cdf0e10cSrcweir 		::com::sun::star::uno::Any														m_aTypeMap;
85cdf0e10cSrcweir 		::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XPreparedStatement >	m_xStatement;
86cdf0e10cSrcweir 		::com::sun::star::uno::Reference< ::com::sun::star::sdb::XSingleSelectQueryComposer > 	m_xComposer;
87cdf0e10cSrcweir 		::com::sun::star::uno::Reference< ::com::sun::star::container::XNameAccess > 	m_xColumns; // the columns from a table or query
88cdf0e10cSrcweir 
89cdf0e10cSrcweir 		connectivity::OWeakRefArray					m_aClones;
90cdf0e10cSrcweir         /** our parameters as XPropertySet instances and ORowSetValue instances
91cdf0e10cSrcweir         */
92cdf0e10cSrcweir         ::dbtools::param::ParametersContainerRef    m_pParameters;
93cdf0e10cSrcweir         /** our parameters values, used when we do not yet have a parameters container
94cdf0e10cSrcweir             (since we have not been executed, yet)
95cdf0e10cSrcweir         */
96cdf0e10cSrcweir         ORowSetValueVector                          m_aPrematureParamValues;
97cdf0e10cSrcweir         ORowSetValueVector                          m_aParameterValueForCache;
98cdf0e10cSrcweir         ::std::bit_vector                           m_aParametersSet;
99cdf0e10cSrcweir         ::std::bit_vector                           m_aReadOnlyDataColumns;
100cdf0e10cSrcweir 
101cdf0e10cSrcweir 		::cppu::OInterfaceContainerHelper			m_aRowsetListeners;
102cdf0e10cSrcweir 		::cppu::OInterfaceContainerHelper			m_aApproveListeners;
103cdf0e10cSrcweir         ::cppu::OInterfaceContainerHelper			m_aRowsChangeListener;
104cdf0e10cSrcweir 
105cdf0e10cSrcweir         ::dbtools::WarningsContainer                m_aWarnings;
106cdf0e10cSrcweir 
107cdf0e10cSrcweir 		OTableContainer*							m_pTables;
108cdf0e10cSrcweir 
109cdf0e10cSrcweir 		rtl::OUString								m_aCommand;
110cdf0e10cSrcweir 		rtl::OUString								m_aDataSourceName;
111cdf0e10cSrcweir 		rtl::OUString								m_aURL;
112cdf0e10cSrcweir 		rtl::OUString								m_aUser;
113cdf0e10cSrcweir 		rtl::OUString								m_aPassword;
114cdf0e10cSrcweir 		rtl::OUString								m_aFilter;
115cdf0e10cSrcweir 		rtl::OUString								m_aHavingClause;
116cdf0e10cSrcweir 		rtl::OUString								m_aGroupBy;
117cdf0e10cSrcweir 		rtl::OUString								m_aOrder;
118cdf0e10cSrcweir 		rtl::OUString								m_aActiveCommand;
119cdf0e10cSrcweir 		rtl::OUString								m_aCursorName;
120cdf0e10cSrcweir 		rtl::OUString								m_aUpdateCatalogName; // is set by a query
121cdf0e10cSrcweir 		rtl::OUString								m_aUpdateSchemaName; // is set by a query
122cdf0e10cSrcweir 		rtl::OUString								m_aUpdateTableName; // is set by a query
123cdf0e10cSrcweir 
124cdf0e10cSrcweir 		sal_Int32					m_nFetchDirection;
125cdf0e10cSrcweir 		sal_Int32					m_nFetchSize;
126cdf0e10cSrcweir 		sal_Int32					m_nMaxFieldSize;
127cdf0e10cSrcweir 		sal_Int32					m_nMaxRows;
128cdf0e10cSrcweir 		sal_Int32					m_nQueryTimeOut;
129cdf0e10cSrcweir 		sal_Int32					m_nCommandType;
130cdf0e10cSrcweir 		sal_Int32					m_nTransactionIsolation;
131cdf0e10cSrcweir 		sal_Int32					m_nPrivileges;
132cdf0e10cSrcweir         sal_Int32                   m_nLastKnownRowCount;
133cdf0e10cSrcweir         oslInterlockedCount         m_nInAppend;
134cdf0e10cSrcweir         sal_Bool                    m_bLastKnownRowCountFinal;
135cdf0e10cSrcweir 		sal_Bool					m_bUseEscapeProcessing ;
136cdf0e10cSrcweir 		sal_Bool					m_bApplyFilter ;
137cdf0e10cSrcweir 		sal_Bool					m_bCommandFacetsDirty;  // any of the facets which define the active command is dirty
138cdf0e10cSrcweir 		sal_Bool					m_bModified ;
139cdf0e10cSrcweir 		sal_Bool					m_bRebuildConnOnExecute ;
140cdf0e10cSrcweir 		sal_Bool					m_bIsBookmarable ;
141cdf0e10cSrcweir 		sal_Bool					m_bNew ;
142cdf0e10cSrcweir 		sal_Bool					m_bCanUpdateInsertedRows;
143cdf0e10cSrcweir 		sal_Bool					m_bOwnConnection;
144cdf0e10cSrcweir 
145cdf0e10cSrcweir 	private:
146cdf0e10cSrcweir         /** builds m_aActiveCommand from our settings
147cdf0e10cSrcweir 
148cdf0e10cSrcweir             @return
149cdf0e10cSrcweir                 whether we should use escape processing before executing the actual command. This is determined
150cdf0e10cSrcweir                 from our own EscapeProcessing property, and possibly overruled by the respective property
151cdf0e10cSrcweir                 of a query we're based on.
152cdf0e10cSrcweir         */
153cdf0e10cSrcweir         sal_Bool        impl_buildActiveCommand_throw();
154cdf0e10cSrcweir 
155cdf0e10cSrcweir         /** initializes our query composer, and everything which has to do with it
156cdf0e10cSrcweir 
157cdf0e10cSrcweir             If we don't use escape processing, then we don't have a composer, and everything
158cdf0e10cSrcweir             related to it. Nonetheless, _out_rCommandToExecute and the return value are properly
159cdf0e10cSrcweir             initialized.
160cdf0e10cSrcweir 
161cdf0e10cSrcweir             @param _out_rCommandToExecute
162cdf0e10cSrcweir                 The command which is to be executed, according to the current settings -
163cdf0e10cSrcweir                 it is built from our active command plus our current filter/order criterions.
164cdf0e10cSrcweir 
165cdf0e10cSrcweir             @return
166cdf0e10cSrcweir                 whether we should use escape processing before executing the actual command. This is determined
167cdf0e10cSrcweir                 from our own EscapeProcessing property, and possibly overruled by the respective property
168cdf0e10cSrcweir                 of a query we're based on.
169cdf0e10cSrcweir                 Effectively, this value determines whether or not we actually have an composer (m_xComposer)
170cdf0e10cSrcweir                 and dependent information (such as the parameters container).
171cdf0e10cSrcweir 
172cdf0e10cSrcweir             @precond
173cdf0e10cSrcweir                 m_xActiveConnection points to a valid SDB-level connection
174cdf0e10cSrcweir 
175cdf0e10cSrcweir             @throws com::sun::star::sdb::SQLException
176cdf0e10cSrcweir                 if an database-related error occured
177cdf0e10cSrcweir 
178cdf0e10cSrcweir             @throws com::sun::star::uno::RuntimeException
179cdf0e10cSrcweir                 if any of the components involved throws a com::sun::star::uno::RuntimeException
180cdf0e10cSrcweir         */
181cdf0e10cSrcweir         sal_Bool        impl_initComposer_throw( ::rtl::OUString& _out_rCommandToExecute );
182cdf0e10cSrcweir 
183cdf0e10cSrcweir         /** returns the table container of our active connection
184cdf0e10cSrcweir 
185cdf0e10cSrcweir             If our connection is able to provide a tables container, this one is returned.
186cdf0e10cSrcweir             Else, if m_pTables is not <NULL/>, this one will returned.
187cdf0e10cSrcweir             Else, m_pTables will be constructed and returned.
188cdf0e10cSrcweir 
189cdf0e10cSrcweir             @precond m_xActiveConnection is not <NULL/>
190cdf0e10cSrcweir             @throws ::com::sun::star::sdbc::SQLException
191cdf0e10cSrcweir                 if retrieving or constructing the tables container goes wrong
192cdf0e10cSrcweir 
193cdf0e10cSrcweir             @see impl_resetTables_nothrow
194cdf0e10cSrcweir         */
195cdf0e10cSrcweir         ::com::sun::star::uno::Reference< ::com::sun::star::container::XNameAccess >
196cdf0e10cSrcweir                     impl_getTables_throw();
197cdf0e10cSrcweir 
198cdf0e10cSrcweir         /** cleans up m_pTables, and resets it to <NULL/>
199cdf0e10cSrcweir         */
200cdf0e10cSrcweir         void        impl_resetTables_nothrow();
201cdf0e10cSrcweir 
202cdf0e10cSrcweir         /** prepares and executes our command
203cdf0e10cSrcweir         */
204cdf0e10cSrcweir         ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XResultSet >
205cdf0e10cSrcweir                         impl_prepareAndExecute_throw();
206cdf0e10cSrcweir 
207cdf0e10cSrcweir         ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XConnection >  calcConnection(const ::com::sun::star::uno::Reference< ::com::sun::star::task::XInteractionHandler >& _rxHandler) throw( ::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException );
208cdf0e10cSrcweir 		// free clones and ParseTree. Plus, if _bComplete is <TRUE/>, *all* other associated resources
209cdf0e10cSrcweir 		void freeResources( bool _bComplete );
210cdf0e10cSrcweir 
211cdf0e10cSrcweir         /// informs the clones (and ourself) that we are going to delete a record with a given bookmark
212cdf0e10cSrcweir 		void notifyRowSetAndClonesRowDelete( const ::com::sun::star::uno::Any& _rBookmark );
213cdf0e10cSrcweir 
214cdf0e10cSrcweir         /// inform the clones (and ourself) that we have deleted a record with a given bookmark
215cdf0e10cSrcweir 		void notifyRowSetAndClonesRowDeleted( const ::com::sun::star::uno::Any& _rBookmark, sal_Int32 _nPos );
216cdf0e10cSrcweir 
217cdf0e10cSrcweir         void checkUpdateIterator();
218cdf0e10cSrcweir 		const connectivity::ORowSetValue& getInsertValue(sal_Int32 columnIndex);
219cdf0e10cSrcweir 		void setParameter(sal_Int32 parameterIndex, const connectivity::ORowSetValue& x);
220cdf0e10cSrcweir 		// resizes the parameter vector if nescessary
221cdf0e10cSrcweir         ::connectivity::ORowSetValue& getParameterStorage( sal_Int32 parameterIndex );
222cdf0e10cSrcweir 
223cdf0e10cSrcweir         void updateValue(sal_Int32 columnIndex,const connectivity::ORowSetValue& x);
224cdf0e10cSrcweir 		void checkUpdateConditions(sal_Int32 columnIndex);
225cdf0e10cSrcweir         void impl_rebuild_throw(::osl::ResettableMutexGuard& _rGuard);
226cdf0e10cSrcweir         // set all data columns to writeable
227cdf0e10cSrcweir         void impl_setDataColumnsWriteable_throw();
228cdf0e10cSrcweir         // restore the old state of the data column read-only state
229cdf0e10cSrcweir         void impl_restoreDataColumnsWriteable_throw();
230cdf0e10cSrcweir 
231cdf0e10cSrcweir 	protected:
232cdf0e10cSrcweir 		virtual void SAL_CALL setFastPropertyValue_NoBroadcast(sal_Int32 nHandle,const ::com::sun::star::uno::Any& rValue) throw (::com::sun::star::uno::Exception);
233cdf0e10cSrcweir 		virtual void SAL_CALL getFastPropertyValue(::com::sun::star::uno::Any& rValue,sal_Int32 nHandle) const;
234cdf0e10cSrcweir 		virtual void getPropertyDefaultByHandle( sal_Int32 _nHandle, ::com::sun::star::uno::Any& _rDefault ) const;
235cdf0e10cSrcweir 
236cdf0e10cSrcweir 		virtual void fireRowcount();
237cdf0e10cSrcweir 		        void notifyAllListenersRowBeforeChange(::osl::ResettableMutexGuard& _rGuard,const ::com::sun::star::sdb::RowChangeEvent &rEvt);
238cdf0e10cSrcweir                 void notifyAllListenersRowChanged(::osl::ResettableMutexGuard& _rGuard,const ::com::sun::star::sdb::RowsChangeEvent& rEvt);
239cdf0e10cSrcweir 		virtual sal_Bool notifyAllListenersCursorBeforeMove(::osl::ResettableMutexGuard& _rGuard);
240cdf0e10cSrcweir 		virtual void notifyAllListenersCursorMoved(::osl::ResettableMutexGuard& _rGuard);
241cdf0e10cSrcweir 		virtual void notifyAllListeners(::osl::ResettableMutexGuard& _rGuard);
242cdf0e10cSrcweir 
243cdf0e10cSrcweir 		virtual void		doCancelModification( );
244cdf0e10cSrcweir 		virtual sal_Bool	isModification( );
245cdf0e10cSrcweir 		virtual sal_Bool	isModified( );
246cdf0e10cSrcweir 		virtual sal_Bool	isNew( );
247cdf0e10cSrcweir 
248cdf0e10cSrcweir 		virtual ~ORowSet();
249cdf0e10cSrcweir 
250cdf0e10cSrcweir 	public:
251cdf0e10cSrcweir 		ORowSet(const ::com::sun::star::uno::Reference< ::com::sun::star::lang::XMultiServiceFactory >&);
252cdf0e10cSrcweir 
253cdf0e10cSrcweir 		// com::sun::star::lang::XTypeProvider
254cdf0e10cSrcweir 		virtual ::com::sun::star::uno::Sequence< ::com::sun::star::uno::Type > SAL_CALL getTypes() throw (::com::sun::star::uno::RuntimeException);
255cdf0e10cSrcweir 		virtual ::com::sun::star::uno::Sequence< sal_Int8 > SAL_CALL getImplementationId() throw (::com::sun::star::uno::RuntimeException);
256cdf0e10cSrcweir 
257cdf0e10cSrcweir 	// com::sun::star::uno::XInterface
258cdf0e10cSrcweir 		virtual ::com::sun::star::uno::Any SAL_CALL queryInterface( const ::com::sun::star::uno::Type & rType ) throw (::com::sun::star::uno::RuntimeException);
259cdf0e10cSrcweir 		virtual void SAL_CALL acquire() throw();
260cdf0e10cSrcweir 		virtual void SAL_CALL release() throw();
261cdf0e10cSrcweir 
262cdf0e10cSrcweir 	// com::sun::star::lang::XUnoTunnel
263cdf0e10cSrcweir 		virtual sal_Int64 SAL_CALL getSomething( const ::com::sun::star::uno::Sequence< sal_Int8 >& aIdentifier ) throw(::com::sun::star::uno::RuntimeException);
264cdf0e10cSrcweir 
265cdf0e10cSrcweir 	// com::sun::star::uno::XAggregation
266cdf0e10cSrcweir 		virtual ::com::sun::star::uno::Any SAL_CALL queryAggregation( const ::com::sun::star::uno::Type& aType ) throw(::com::sun::star::uno::RuntimeException);
267cdf0e10cSrcweir 
268cdf0e10cSrcweir 	// ::com::sun::star::lang::XServiceInfo
269cdf0e10cSrcweir 		virtual ::rtl::OUString SAL_CALL getImplementationName(  ) throw(::com::sun::star::uno::RuntimeException);
270cdf0e10cSrcweir 		virtual sal_Bool SAL_CALL supportsService( const ::rtl::OUString& ServiceName ) throw(::com::sun::star::uno::RuntimeException);
271cdf0e10cSrcweir 		virtual ::com::sun::star::uno::Sequence< ::rtl::OUString > SAL_CALL getSupportedServiceNames(  ) throw(::com::sun::star::uno::RuntimeException);
272cdf0e10cSrcweir 
273cdf0e10cSrcweir 	// ::com::sun::star::lang::XServiceInfo - static methods
274cdf0e10cSrcweir 		static ::com::sun::star::uno::Sequence< ::rtl::OUString > getSupportedServiceNames_static(void) throw( ::com::sun::star::uno::RuntimeException );
275cdf0e10cSrcweir 		static ::rtl::OUString getImplementationName_static(void) throw( ::com::sun::star::uno::RuntimeException );
276cdf0e10cSrcweir 		static ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface >
277cdf0e10cSrcweir 				SAL_CALL Create(const ::com::sun::star::uno::Reference< ::com::sun::star::uno::XComponentContext >&);
278cdf0e10cSrcweir 
279cdf0e10cSrcweir 	// OComponentHelper
280cdf0e10cSrcweir 		virtual void SAL_CALL disposing(void);
281cdf0e10cSrcweir 
282cdf0e10cSrcweir 	// ::com::sun::star::lang::XEventListener
283cdf0e10cSrcweir 		virtual void SAL_CALL disposing( const ::com::sun::star::lang::EventObject& Source ) throw(::com::sun::star::uno::RuntimeException);
284cdf0e10cSrcweir 
285cdf0e10cSrcweir 	// ::com::sun::star::sdbc::XCloseable
286cdf0e10cSrcweir 		virtual void SAL_CALL close(  ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
287cdf0e10cSrcweir 
288cdf0e10cSrcweir 	// comphelper::OPropertyArrayUsageHelper
289cdf0e10cSrcweir 		virtual ::cppu::IPropertyArrayHelper* createArrayHelper( ) const;
290cdf0e10cSrcweir 
291cdf0e10cSrcweir 	// cppu::OPropertySetHelper
292cdf0e10cSrcweir 		virtual ::cppu::IPropertyArrayHelper& SAL_CALL getInfoHelper();
293cdf0e10cSrcweir 
294cdf0e10cSrcweir 	// ::com::sun::star::sdbc::XResultSet
295cdf0e10cSrcweir 		virtual sal_Int32 SAL_CALL getRow(  ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
296cdf0e10cSrcweir 		virtual void SAL_CALL refreshRow(  ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
297cdf0e10cSrcweir 
298cdf0e10cSrcweir 	// XCompletedExecution
299cdf0e10cSrcweir 	    virtual void SAL_CALL executeWithCompletion( const ::com::sun::star::uno::Reference< ::com::sun::star::task::XInteractionHandler >& handler ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
300cdf0e10cSrcweir 
301cdf0e10cSrcweir     // XParametersSupplier
302cdf0e10cSrcweir         virtual ::com::sun::star::uno::Reference< ::com::sun::star::container::XIndexAccess > SAL_CALL getParameters(  ) throw (::com::sun::star::uno::RuntimeException);
303cdf0e10cSrcweir 
304cdf0e10cSrcweir 	// ::com::sun::star::sdbc::XRow
305cdf0e10cSrcweir 		virtual sal_Bool SAL_CALL wasNull(  ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
306cdf0e10cSrcweir 		virtual ::rtl::OUString SAL_CALL getString( sal_Int32 columnIndex ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
307cdf0e10cSrcweir 		virtual sal_Bool SAL_CALL getBoolean( sal_Int32 columnIndex ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
308cdf0e10cSrcweir 		virtual sal_Int8 SAL_CALL getByte( sal_Int32 columnIndex ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
309cdf0e10cSrcweir 		virtual sal_Int16 SAL_CALL getShort( sal_Int32 columnIndex ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
310cdf0e10cSrcweir 		virtual sal_Int32 SAL_CALL getInt( sal_Int32 columnIndex ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
311cdf0e10cSrcweir 		virtual sal_Int64 SAL_CALL getLong( sal_Int32 columnIndex ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
312cdf0e10cSrcweir 		virtual float SAL_CALL getFloat( sal_Int32 columnIndex ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
313cdf0e10cSrcweir 		virtual double SAL_CALL getDouble( sal_Int32 columnIndex ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
314cdf0e10cSrcweir 		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);
315cdf0e10cSrcweir 		virtual ::com::sun::star::util::Date SAL_CALL getDate( sal_Int32 columnIndex ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
316cdf0e10cSrcweir 		virtual ::com::sun::star::util::Time SAL_CALL getTime( sal_Int32 columnIndex ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
317cdf0e10cSrcweir 		virtual ::com::sun::star::util::DateTime SAL_CALL getTimestamp( sal_Int32 columnIndex ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
318cdf0e10cSrcweir 		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);
319cdf0e10cSrcweir 		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);
320cdf0e10cSrcweir 		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);
321cdf0e10cSrcweir 		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);
322cdf0e10cSrcweir 		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);
323cdf0e10cSrcweir 		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);
324cdf0e10cSrcweir 		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);
325cdf0e10cSrcweir 
326cdf0e10cSrcweir 	// ::com::sun::star::sdbc::XRowUpdate
327cdf0e10cSrcweir 		virtual void SAL_CALL updateNull( sal_Int32 columnIndex ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
328cdf0e10cSrcweir 		virtual void SAL_CALL updateBoolean( sal_Int32 columnIndex, sal_Bool x ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
329cdf0e10cSrcweir 		virtual void SAL_CALL updateByte( sal_Int32 columnIndex, sal_Int8 x ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
330cdf0e10cSrcweir 		virtual void SAL_CALL updateShort( sal_Int32 columnIndex, sal_Int16 x ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
331cdf0e10cSrcweir 		virtual void SAL_CALL updateInt( sal_Int32 columnIndex, sal_Int32 x ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
332cdf0e10cSrcweir 		virtual void SAL_CALL updateLong( sal_Int32 columnIndex, sal_Int64 x ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
333cdf0e10cSrcweir 		virtual void SAL_CALL updateFloat( sal_Int32 columnIndex, float x ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
334cdf0e10cSrcweir 		virtual void SAL_CALL updateDouble( sal_Int32 columnIndex, double x ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
335cdf0e10cSrcweir 		virtual void SAL_CALL updateString( sal_Int32 columnIndex, const ::rtl::OUString& x ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
336cdf0e10cSrcweir 		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);
337cdf0e10cSrcweir 		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);
338cdf0e10cSrcweir 		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);
339cdf0e10cSrcweir 		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);
340cdf0e10cSrcweir 		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);
341cdf0e10cSrcweir 		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);
342cdf0e10cSrcweir 		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);
343cdf0e10cSrcweir 		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);
344cdf0e10cSrcweir 
345cdf0e10cSrcweir 	// ::com::sun::star::sdbc::XResultSetUpdate
346cdf0e10cSrcweir 		virtual void SAL_CALL insertRow(  ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
347cdf0e10cSrcweir 		virtual void SAL_CALL updateRow(  ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
348cdf0e10cSrcweir 		virtual void SAL_CALL deleteRow(  ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
349cdf0e10cSrcweir 		virtual void SAL_CALL cancelRowUpdates(  ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
350cdf0e10cSrcweir 		virtual void SAL_CALL moveToInsertRow(  ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
351cdf0e10cSrcweir 		virtual void SAL_CALL moveToCurrentRow(  ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
352cdf0e10cSrcweir 
353cdf0e10cSrcweir 	// ::com::sun::star::sdbc::XRowSet
354cdf0e10cSrcweir 		virtual void SAL_CALL execute(  ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
355cdf0e10cSrcweir 		virtual void SAL_CALL addRowSetListener( const ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XRowSetListener >& listener ) throw(::com::sun::star::uno::RuntimeException);
356cdf0e10cSrcweir 		virtual void SAL_CALL removeRowSetListener( const ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XRowSetListener >& listener ) throw(::com::sun::star::uno::RuntimeException);
357cdf0e10cSrcweir 
358cdf0e10cSrcweir 	// ::com::sun::star::sdb::XRowSetApproveBroadcaster
359cdf0e10cSrcweir 		virtual void SAL_CALL addRowSetApproveListener( const ::com::sun::star::uno::Reference< ::com::sun::star::sdb::XRowSetApproveListener >& listener ) throw(::com::sun::star::uno::RuntimeException);
360cdf0e10cSrcweir 		virtual void SAL_CALL removeRowSetApproveListener( const ::com::sun::star::uno::Reference< ::com::sun::star::sdb::XRowSetApproveListener >& listener ) throw(::com::sun::star::uno::RuntimeException);
361cdf0e10cSrcweir 
362cdf0e10cSrcweir     // ::com::sun::star::sdb::XRowsChangeBroadcaster
363cdf0e10cSrcweir 		virtual void SAL_CALL addRowsChangeListener( const ::com::sun::star::uno::Reference< ::com::sun::star::sdb::XRowsChangeListener >& listener ) throw(::com::sun::star::uno::RuntimeException);
364cdf0e10cSrcweir 		virtual void SAL_CALL removeRowsChangeListener( const ::com::sun::star::uno::Reference< ::com::sun::star::sdb::XRowsChangeListener >& listener ) throw(::com::sun::star::uno::RuntimeException);
365cdf0e10cSrcweir 
366cdf0e10cSrcweir 	// ::com::sun::star::sdb::XResultSetAccess
367cdf0e10cSrcweir 		virtual ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XResultSet > SAL_CALL createResultSet(  ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
368cdf0e10cSrcweir 
369cdf0e10cSrcweir 	// ::com::sun::star::util::XCancellable
370cdf0e10cSrcweir 		virtual void SAL_CALL cancel(  ) throw(::com::sun::star::uno::RuntimeException);
371cdf0e10cSrcweir 
372cdf0e10cSrcweir 	// ::com::sun::star::sdbcx::XDeleteRows
373cdf0e10cSrcweir 		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);
374cdf0e10cSrcweir 
375cdf0e10cSrcweir 	// XParameters
376cdf0e10cSrcweir 		virtual void SAL_CALL setNull( sal_Int32 parameterIndex, sal_Int32 sqlType ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
377cdf0e10cSrcweir 		virtual void SAL_CALL setObjectNull( sal_Int32 parameterIndex, sal_Int32 sqlType, const ::rtl::OUString& typeName ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
378cdf0e10cSrcweir 		virtual void SAL_CALL setBoolean( sal_Int32 parameterIndex, sal_Bool x ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
379cdf0e10cSrcweir 		virtual void SAL_CALL setByte( sal_Int32 parameterIndex, sal_Int8 x ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
380cdf0e10cSrcweir 		virtual void SAL_CALL setShort( sal_Int32 parameterIndex, sal_Int16 x ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
381cdf0e10cSrcweir 		virtual void SAL_CALL setInt( sal_Int32 parameterIndex, sal_Int32 x ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
382cdf0e10cSrcweir 		virtual void SAL_CALL setLong( sal_Int32 parameterIndex, sal_Int64 x ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
383cdf0e10cSrcweir 		virtual void SAL_CALL setFloat( sal_Int32 parameterIndex, float x ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
384cdf0e10cSrcweir 		virtual void SAL_CALL setDouble( sal_Int32 parameterIndex, double x ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
385cdf0e10cSrcweir 		virtual void SAL_CALL setString( sal_Int32 parameterIndex, const ::rtl::OUString& x ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
386cdf0e10cSrcweir 		virtual void SAL_CALL setBytes( sal_Int32 parameterIndex, const ::com::sun::star::uno::Sequence< sal_Int8 >& x ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
387cdf0e10cSrcweir 		virtual void SAL_CALL setDate( sal_Int32 parameterIndex, const ::com::sun::star::util::Date& x ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
388cdf0e10cSrcweir 		virtual void SAL_CALL setTime( sal_Int32 parameterIndex, const ::com::sun::star::util::Time& x ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
389cdf0e10cSrcweir 		virtual void SAL_CALL setTimestamp( sal_Int32 parameterIndex, const ::com::sun::star::util::DateTime& x ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
390cdf0e10cSrcweir 		virtual void SAL_CALL setBinaryStream( sal_Int32 parameterIndex, 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);
391cdf0e10cSrcweir 		virtual void SAL_CALL setCharacterStream( sal_Int32 parameterIndex, 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);
392cdf0e10cSrcweir 		virtual void SAL_CALL setObject( sal_Int32 parameterIndex, const ::com::sun::star::uno::Any& x ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
393cdf0e10cSrcweir 		virtual void SAL_CALL setObjectWithInfo( sal_Int32 parameterIndex, const ::com::sun::star::uno::Any& x, sal_Int32 targetSqlType, sal_Int32 scale ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
394cdf0e10cSrcweir 		virtual void SAL_CALL setRef( sal_Int32 parameterIndex, const ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XRef >& x ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
395cdf0e10cSrcweir 		virtual void SAL_CALL setBlob( sal_Int32 parameterIndex, const ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XBlob >& x ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
396cdf0e10cSrcweir 		virtual void SAL_CALL setClob( sal_Int32 parameterIndex, const ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XClob >& x ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
397cdf0e10cSrcweir 		virtual void SAL_CALL setArray( sal_Int32 parameterIndex, const ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XArray >& x ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
398cdf0e10cSrcweir 		virtual void SAL_CALL clearParameters(  ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
399cdf0e10cSrcweir 
400cdf0e10cSrcweir         // XWarningsSupplier
401cdf0e10cSrcweir         virtual ::com::sun::star::uno::Any SAL_CALL getWarnings(  ) throw (::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
402cdf0e10cSrcweir         virtual void SAL_CALL clearWarnings(  ) throw (::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
403cdf0e10cSrcweir 
404cdf0e10cSrcweir 	protected:
405cdf0e10cSrcweir 		/** implement the <method>execute</method>, without calling the approve listeners and without building a new
406cdf0e10cSrcweir 			connection
407cdf0e10cSrcweir 			@param		_rClearForNotification		mutex to clear before doing the final notifications
408cdf0e10cSrcweir 		*/
409cdf0e10cSrcweir 		void	execute_NoApprove_NoNewConn(::osl::ResettableMutexGuard& _rClearForNotification);
410cdf0e10cSrcweir 
411cdf0e10cSrcweir 		/** call the RowSetApproveListeners<p/>
412cdf0e10cSrcweir 			throws an RowSetVetoException if one of the listeners vetoed
413cdf0e10cSrcweir 		*/
414cdf0e10cSrcweir 		void	approveExecution() throw (::com::sun::star::sdb::RowSetVetoException, ::com::sun::star::uno::RuntimeException);
415cdf0e10cSrcweir 
416cdf0e10cSrcweir 		/// set m_xActiveConnection, fire a PropertyChangeEvent if necessary, do the event listener handling etc
417cdf0e10cSrcweir 		void setActiveConnection( ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XConnection >& _rxNewConn, sal_Bool _bFireEvent = sal_True );
418cdf0e10cSrcweir 
419cdf0e10cSrcweir 		void implCancelRowUpdates( sal_Bool _bNotifyModified ) SAL_THROW( ( ::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException ) );
420cdf0e10cSrcweir 
421cdf0e10cSrcweir         /** sets the given result set type/concurrency at the given statement, while respecting
422cdf0e10cSrcweir             possibly related data source settings
423cdf0e10cSrcweir         */
424cdf0e10cSrcweir         void        setStatementResultSetType(
425cdf0e10cSrcweir             const ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySet >& _rxStatement,
426cdf0e10cSrcweir             sal_Int32 _nDesiredResultSetType,
427cdf0e10cSrcweir             sal_Int32 _nDesiredResultSetConcurrency
428cdf0e10cSrcweir         );
429cdf0e10cSrcweir 
430cdf0e10cSrcweir         /** initializes a given RowSet column with the ColumnSettings (width, format, hidden, etc.) from a
431cdf0e10cSrcweir             template column.
432cdf0e10cSrcweir 
433cdf0e10cSrcweir             If the template column supports any of the known column settings, they're plain copied. If not,
434cdf0e10cSrcweir             the template column is examined for a TableName and Name property, and the table column described
435cdf0e10cSrcweir             by those is used to find and copy the column settings.
436cdf0e10cSrcweir         */
437cdf0e10cSrcweir         void    impl_initializeColumnSettings_nothrow(
438cdf0e10cSrcweir             const ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySet >& _rxTemplateColumn,
439cdf0e10cSrcweir             const ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySet >& _rxRowSetColumn
440cdf0e10cSrcweir         );
441cdf0e10cSrcweir 
442cdf0e10cSrcweir         /** initializes our parameters container (m_pParameters) according to the parameter columns as
443cdf0e10cSrcweir             obtained from our composer
444cdf0e10cSrcweir         */
445cdf0e10cSrcweir         void    impl_initParametersContainer_nothrow();
446cdf0e10cSrcweir         /** disposes our parameters container
447cdf0e10cSrcweir         */
448cdf0e10cSrcweir         void    impl_disposeParametersContainer_nothrow();
449cdf0e10cSrcweir 
450cdf0e10cSrcweir     protected:
451cdf0e10cSrcweir         using ORowSetBase::getFastPropertyValue;
452cdf0e10cSrcweir         using ORowSetBase::firePropertyChange;
453cdf0e10cSrcweir         using ORowSetBase::doCancelModification;
454cdf0e10cSrcweir         using ORowSetBase::isModification;
455cdf0e10cSrcweir         using ORowSetBase::isModified;
456cdf0e10cSrcweir         using ORowSetBase::isNew;
457cdf0e10cSrcweir 	};
458cdf0e10cSrcweir 
459cdf0e10cSrcweir 
460cdf0e10cSrcweir 	//************************************************************
461cdf0e10cSrcweir 	//  ORowSetClone
462cdf0e10cSrcweir 	//************************************************************
463cdf0e10cSrcweir 	class ORowSetClone : public comphelper::OBaseMutex
464cdf0e10cSrcweir 						 ,public OSubComponent
465cdf0e10cSrcweir 						 ,public ORowSetBase
466cdf0e10cSrcweir 						 ,public ::comphelper::OPropertyArrayUsageHelper < ORowSetClone >
467cdf0e10cSrcweir 	{
468cdf0e10cSrcweir 	protected:
469cdf0e10cSrcweir 		ORowSet*					m_pParent;
470cdf0e10cSrcweir 		sal_Int32					m_nFetchDirection;
471cdf0e10cSrcweir 		sal_Int32					m_nFetchSize;
472cdf0e10cSrcweir 		sal_Bool					m_bIsBookmarable;
473cdf0e10cSrcweir 
474cdf0e10cSrcweir 	protected:
475cdf0e10cSrcweir 		// the clone can not insert anything
476cdf0e10cSrcweir 		virtual void		doCancelModification( );
477cdf0e10cSrcweir 		virtual sal_Bool	isModification( );
478cdf0e10cSrcweir 		virtual sal_Bool	isModified( );
479cdf0e10cSrcweir 		virtual sal_Bool	isNew( );
480cdf0e10cSrcweir 
481cdf0e10cSrcweir 		virtual void SAL_CALL setFastPropertyValue_NoBroadcast(sal_Int32 nHandle,const ::com::sun::star::uno::Any& rValue) throw (::com::sun::star::uno::Exception);
482cdf0e10cSrcweir 	public:
483cdf0e10cSrcweir 		ORowSetClone( const ::comphelper::ComponentContext& _rContext, ORowSet& rParent, ::osl::Mutex* _pMutex );
484cdf0e10cSrcweir 		virtual ~ORowSetClone();
485cdf0e10cSrcweir 
486cdf0e10cSrcweir 	// com::sun::star::lang::XTypeProvider
487cdf0e10cSrcweir 		virtual ::com::sun::star::uno::Sequence< ::com::sun::star::uno::Type > SAL_CALL getTypes() throw (::com::sun::star::uno::RuntimeException);
getImplementationId()488cdf0e10cSrcweir 		virtual ::com::sun::star::uno::Sequence< sal_Int8 > SAL_CALL getImplementationId() throw (::com::sun::star::uno::RuntimeException)
489cdf0e10cSrcweir 		{
490cdf0e10cSrcweir 			return getUnoTunnelImplementationId();
491cdf0e10cSrcweir 		}
492cdf0e10cSrcweir 
493cdf0e10cSrcweir 	// com::sun::star::uno::XInterface
494cdf0e10cSrcweir 		virtual ::com::sun::star::uno::Any SAL_CALL queryInterface( const ::com::sun::star::uno::Type & rType ) throw (::com::sun::star::uno::RuntimeException);
495cdf0e10cSrcweir 		virtual void SAL_CALL acquire() throw();
496cdf0e10cSrcweir 		virtual void SAL_CALL release() throw();
497cdf0e10cSrcweir 
498cdf0e10cSrcweir 	// ::com::sun::star::lang::XServiceInfo
499cdf0e10cSrcweir 		virtual ::rtl::OUString SAL_CALL getImplementationName(  ) throw(::com::sun::star::uno::RuntimeException);
500cdf0e10cSrcweir 		virtual sal_Bool SAL_CALL supportsService( const ::rtl::OUString& ServiceName ) throw(::com::sun::star::uno::RuntimeException);
501cdf0e10cSrcweir 		virtual ::com::sun::star::uno::Sequence< ::rtl::OUString > SAL_CALL getSupportedServiceNames(  ) throw(::com::sun::star::uno::RuntimeException);
502cdf0e10cSrcweir 
503cdf0e10cSrcweir 	// com::sun::star::lang::XUnoTunnel
504cdf0e10cSrcweir 		virtual sal_Int64 SAL_CALL getSomething( const ::com::sun::star::uno::Sequence< sal_Int8 >& aIdentifier ) throw(::com::sun::star::uno::RuntimeException);
505cdf0e10cSrcweir 		static ::com::sun::star::uno::Sequence< sal_Int8 > getUnoTunnelImplementationId();
506cdf0e10cSrcweir 
507cdf0e10cSrcweir 	// OComponentHelper
508cdf0e10cSrcweir 		virtual void SAL_CALL disposing(void);
509cdf0e10cSrcweir 
510cdf0e10cSrcweir 	// ::com::sun::star::sdbc::XCloseable
511cdf0e10cSrcweir 		virtual void SAL_CALL close(  ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
512cdf0e10cSrcweir 
513cdf0e10cSrcweir 	// com::sun::star::beans::XPropertySet
getPropertySetInfo()514cdf0e10cSrcweir 		virtual ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySetInfo > SAL_CALL getPropertySetInfo(  ) throw(::com::sun::star::uno::RuntimeException)
515cdf0e10cSrcweir 		{
516cdf0e10cSrcweir 			return ::cppu::OPropertySetHelper::createPropertySetInfo(getInfoHelper());
517cdf0e10cSrcweir 		}
518cdf0e10cSrcweir 
519cdf0e10cSrcweir 	// ::com::sun::star::sdbc::XRowSet
520cdf0e10cSrcweir 		virtual void SAL_CALL execute(  ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
521cdf0e10cSrcweir 		virtual void SAL_CALL addRowSetListener( const ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XRowSetListener >& listener ) throw(::com::sun::star::uno::RuntimeException);
522cdf0e10cSrcweir 		virtual void SAL_CALL removeRowSetListener( const ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XRowSetListener >& listener ) throw(::com::sun::star::uno::RuntimeException);
523cdf0e10cSrcweir 
524cdf0e10cSrcweir 	// comphelper::OPropertyArrayUsageHelper
525cdf0e10cSrcweir 		virtual ::cppu::IPropertyArrayHelper* createArrayHelper( ) const;
526cdf0e10cSrcweir 
527cdf0e10cSrcweir 	// cppu::OPropertySetHelper
528cdf0e10cSrcweir 		virtual ::cppu::IPropertyArrayHelper& SAL_CALL getInfoHelper();
529cdf0e10cSrcweir 
530cdf0e10cSrcweir     protected:
531cdf0e10cSrcweir         using ORowSetBase::doCancelModification;
532cdf0e10cSrcweir         using ORowSetBase::isModification;
533cdf0e10cSrcweir         using ORowSetBase::isModified;
534cdf0e10cSrcweir         using ORowSetBase::isNew;
535cdf0e10cSrcweir         using ORowSetBase::rowDeleted;
536cdf0e10cSrcweir 	};
537cdf0e10cSrcweir 
538cdf0e10cSrcweir }
539cdf0e10cSrcweir #endif // DBACCESS_CORE_API_ROWSET_HXX
540cdf0e10cSrcweir 
541