12e2212a7SAndrew Rist /************************************************************** 2cdf0e10cSrcweir * 32e2212a7SAndrew Rist * Licensed to the Apache Software Foundation (ASF) under one 42e2212a7SAndrew Rist * or more contributor license agreements. See the NOTICE file 52e2212a7SAndrew Rist * distributed with this work for additional information 62e2212a7SAndrew Rist * regarding copyright ownership. The ASF licenses this file 72e2212a7SAndrew Rist * to you under the Apache License, Version 2.0 (the 82e2212a7SAndrew Rist * "License"); you may not use this file except in compliance 92e2212a7SAndrew Rist * with the License. You may obtain a copy of the License at 102e2212a7SAndrew Rist * 112e2212a7SAndrew Rist * http://www.apache.org/licenses/LICENSE-2.0 122e2212a7SAndrew Rist * 132e2212a7SAndrew Rist * Unless required by applicable law or agreed to in writing, 142e2212a7SAndrew Rist * software distributed under the License is distributed on an 152e2212a7SAndrew Rist * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 162e2212a7SAndrew Rist * KIND, either express or implied. See the License for the 172e2212a7SAndrew Rist * specific language governing permissions and limitations 182e2212a7SAndrew Rist * under the License. 192e2212a7SAndrew Rist * 202e2212a7SAndrew Rist *************************************************************/ 212e2212a7SAndrew Rist 222e2212a7SAndrew 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 176*07a3d7f1SPedro Giffuni if a database-related error occurred 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); 220*07a3d7f1SPedro Giffuni // resizes the parameter vector if necessary 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