summaryrefslogtreecommitdiff
path: root/dbaccess/source/core/api/RowSetBase.cxx
diff options
context:
space:
mode:
Diffstat (limited to 'dbaccess/source/core/api/RowSetBase.cxx')
-rw-r--r--dbaccess/source/core/api/RowSetBase.cxx1584
1 files changed, 0 insertions, 1584 deletions
diff --git a/dbaccess/source/core/api/RowSetBase.cxx b/dbaccess/source/core/api/RowSetBase.cxx
deleted file mode 100644
index 81fbd93ea..000000000
--- a/dbaccess/source/core/api/RowSetBase.cxx
+++ /dev/null
@@ -1,1584 +0,0 @@
-/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2000, 2010 Oracle and/or its affiliates.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-
-// MARKER(update_precomp.py): autogen include statement, do not remove
-#include "precompiled_dbaccess.hxx"
-
-#include "RowSetBase.hxx"
-#include "CRowSetDataColumn.hxx"
-#include <connectivity/sdbcx/VCollection.hxx>
-#include "RowSetCache.hxx"
-#include "dbastrings.hrc"
-#include "core_resource.hrc"
-#include <com/sun/star/lang/DisposedException.hpp>
-#include <com/sun/star/beans/PropertyAttribute.hpp>
-#include <com/sun/star/sdbcx/CompareBookmark.hpp>
-#include <com/sun/star/sdbc/ResultSetConcurrency.hpp>
-#include <com/sun/star/lang/Locale.hpp>
-#include <com/sun/star/util/NumberFormat.hpp>
-#include <comphelper/sequence.hxx>
-#include <comphelper/extract.hxx>
-#include <comphelper/seqstream.hxx>
-#include <connectivity/dbexception.hxx>
-#include <osl/thread.h>
-#include <tools/debug.hxx>
-#include <rtl/logfile.hxx>
-
-using namespace dbaccess;
-using namespace connectivity;
-using namespace connectivity::sdbcx;
-using namespace comphelper;
-using namespace dbtools;
-using namespace ::com::sun::star::uno;
-using namespace ::com::sun::star::beans;
-using namespace ::com::sun::star::sdbc;
-using namespace ::com::sun::star::sdb;
-using namespace ::com::sun::star::sdbcx;
-using namespace ::com::sun::star::container;
-using namespace ::com::sun::star::lang;
-using namespace ::com::sun::star::util;
-using namespace ::cppu;
-using namespace ::osl;
-
-namespace dbaccess
-{
-
-// =========================================================================
-// = OEmptyCollection
-// =========================================================================
-class OEmptyCollection : public sdbcx::OCollection
-{
-protected:
- virtual void impl_refresh() throw(RuntimeException);
- virtual connectivity::sdbcx::ObjectType createObject(const ::rtl::OUString& _rName);
-public:
- OEmptyCollection(::cppu::OWeakObject& _rParent,::osl::Mutex& _rMutex) : OCollection(_rParent,sal_True,_rMutex,::std::vector< ::rtl::OUString>()){}
-};
-
-void OEmptyCollection::impl_refresh() throw(RuntimeException)
-{
-}
-
-connectivity::sdbcx::ObjectType OEmptyCollection::createObject(const ::rtl::OUString& /*_rName*/)
-{
- return connectivity::sdbcx::ObjectType();
-}
-
-// =========================================================================
-// = ORowSetBase
-// =========================================================================
-DBG_NAME(ORowSetBase)
-
-ORowSetBase::ORowSetBase( const ::comphelper::ComponentContext& _rContext, ::cppu::OBroadcastHelper& _rBHelper, ::osl::Mutex* _pMutex )
- :OPropertyStateContainer(_rBHelper)
- ,m_pMutex(_pMutex)
- ,m_pCache(NULL)
- ,m_pColumns(NULL)
- ,m_rBHelper(_rBHelper)
- ,m_pEmptyCollection( NULL )
- ,m_aContext( _rContext )
- ,m_aErrors( _rContext )
- ,m_nLastColumnIndex(-1)
- ,m_nDeletedPosition(-1)
- ,m_nResultSetType( ResultSetType::FORWARD_ONLY )
- ,m_nResultSetConcurrency( ResultSetConcurrency::READ_ONLY )
- ,m_bClone(sal_False)
- ,m_bIgnoreResult(sal_False)
- ,m_bBeforeFirst(sal_True) // changed from sal_False
- ,m_bAfterLast(sal_False)
- ,m_bIsInsertRow(sal_False)
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "ORowSetBase::ORowSetBase" );
- DBG_CTOR(ORowSetBase,NULL);
-
- sal_Int32 nRBT = PropertyAttribute::READONLY | PropertyAttribute::BOUND | PropertyAttribute::TRANSIENT;
-
- sal_Int32 nInitialRowCountValue = 0;
- sal_Bool bInitialRowCountFinalValue( sal_False );
- registerPropertyNoMember( PROPERTY_ROWCOUNT, PROPERTY_ID_ROWCOUNT, nRBT, ::getCppuType( &nInitialRowCountValue ), &nInitialRowCountValue );
- registerPropertyNoMember( PROPERTY_ISROWCOUNTFINAL, PROPERTY_ID_ISROWCOUNTFINAL, nRBT, ::getBooleanCppuType(), &bInitialRowCountFinalValue );
-}
-
-ORowSetBase::~ORowSetBase()
-{
- if(m_pColumns)
- {
- TDataColumns().swap(m_aDataColumns);
- m_pColumns->acquire();
- m_pColumns->disposing();
- delete m_pColumns;
- m_pColumns = NULL;
- }
-
- if ( m_pEmptyCollection )
- delete m_pEmptyCollection;
-
- DBG_DTOR(ORowSetBase,NULL);
-}
-
-// com::sun::star::lang::XTypeProvider
-Sequence< Type > ORowSetBase::getTypes() throw (RuntimeException)
-{
- //RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "ORowSetBase::getTypes" );
- return ::comphelper::concatSequences(ORowSetBase_BASE::getTypes(),OPropertyStateContainer::getTypes());
-}
-
-// com::sun::star::uno::XInterface
-Any ORowSetBase::queryInterface( const Type & rType ) throw (RuntimeException)
-{
- //RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "ORowSetBase::queryInterface" );
- Any aRet = ORowSetBase_BASE::queryInterface(rType);
- if(!aRet.hasValue())
- aRet = OPropertyStateContainer::queryInterface(rType);
- return aRet;
-}
-
-void SAL_CALL ORowSetBase::getFastPropertyValue(Any& rValue,sal_Int32 nHandle) const
-{
- //RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "ORowSetBase::getFastPropertyValue" );
- if(m_pCache)
- {
- switch(nHandle)
- {
- case PROPERTY_ID_ROWCOUNT:
- rValue <<= impl_getRowCount();
- break;
- case PROPERTY_ID_ISROWCOUNTFINAL:
- rValue.setValue(&m_pCache->m_bRowCountFinal,::getCppuBooleanType());
- break;
- default:
- OPropertyStateContainer::getFastPropertyValue(rValue,nHandle);
- };
- }
- else
- OPropertyStateContainer::getFastPropertyValue(rValue,nHandle);
-}
-
-// OComponentHelper
-void SAL_CALL ORowSetBase::disposing(void)
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "ORowSetBase::disposing" );
- MutexGuard aGuard(*m_pMutex);
-
- if ( m_pColumns )
- {
- TDataColumns().swap(m_aDataColumns);
- m_pColumns->disposing();
- }
- if ( m_pCache )
- {
- m_pCache->deregisterOldRow(m_aOldRow);
- m_pCache->deleteIterator(this);
- }
- m_pCache = NULL;
-}
-
-// comphelper::OPropertyArrayUsageHelper
-::cppu::IPropertyArrayHelper* ORowSetBase::createArrayHelper( ) const
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "ORowSetBase::createArrayHelper" );
- Sequence< Property > aProps;
- describeProperties(aProps);
- return new ::cppu::OPropertyArrayHelper(aProps);
-}
-
-// cppu::OPropertySetHelper
-::cppu::IPropertyArrayHelper& SAL_CALL ORowSetBase::getInfoHelper()
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "ORowSetBase::getInfoHelper" );
- return *const_cast<ORowSetBase*>(this)->getArrayHelper();
-}
-
-// XRow
-sal_Bool SAL_CALL ORowSetBase::wasNull( ) throw(SQLException, RuntimeException)
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "ORowSetBase::wasNull" );
- ::osl::MutexGuard aGuard( *m_pMutex );
- checkCache();
- return impl_wasNull();
-}
-
-sal_Bool ORowSetBase::impl_wasNull()
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "ORowSetBase::impl_wasNull" );
- return ((m_nLastColumnIndex != -1) && !m_aCurrentRow.isNull() && m_aCurrentRow != m_pCache->getEnd() && m_aCurrentRow->is()) ? ((*m_aCurrentRow)->get())[m_nLastColumnIndex].isNull() : sal_True;
-}
-
-const ORowSetValue& ORowSetBase::getValue(sal_Int32 columnIndex)
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "ORowSetBase::getValue" );
- checkCache();
- return impl_getValue(columnIndex);
-}
-
-const ORowSetValue& ORowSetBase::impl_getValue(sal_Int32 columnIndex)
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "ORowSetBase::impl_getValue" );
- if ( m_bBeforeFirst || m_bAfterLast )
- {
- OSL_FAIL("ORowSetBase::getValue: Illegal call here (we're before first or after last)!");
- ::dbtools::throwSQLException( DBACORE_RESSTRING( RID_STR_CURSOR_BEFORE_OR_AFTER ), SQL_INVALID_CURSOR_POSITION, *m_pMySelf );
- }
-
- if ( impl_rowDeleted() )
- {
- return m_aEmptyValue;
- }
-
- bool bValidCurrentRow = ( !m_aCurrentRow.isNull() && m_aCurrentRow != m_pCache->getEnd() && m_aCurrentRow->is() );
- if ( !bValidCurrentRow )
- {
- // currentrow is null when the clone moves the window
- positionCache( MOVE_NONE_REFRESH_ONLY );
- m_aCurrentRow = m_pCache->m_aMatrixIter;
- m_bIsInsertRow = sal_False;
- OSL_ENSURE(!m_aCurrentRow.isNull(),"ORowSetBase::getValue: we don't stand on a valid row! Row is null.");
-
- bValidCurrentRow = ( !m_aCurrentRow.isNull() && m_aCurrentRow != m_pCache->getEnd() && m_aCurrentRow->is() );
- }
-
- if ( bValidCurrentRow )
- {
-#if OSL_DEBUG_LEVEL > 0
- ORowSetMatrix::iterator aCacheEnd;
- ORowSetMatrix::iterator aCurrentRow;
- aCacheEnd = m_pCache->getEnd();
- aCurrentRow = m_aCurrentRow;
- ORowSetCacheMap::iterator aCacheIter = m_aCurrentRow.getIter();
- sal_Int32 n = aCacheIter->first;
- n = n;
- ORowSetCacheIterator_Helper aHelper = aCacheIter->second;
- ORowSetMatrix::iterator k = aHelper.aIterator;
- for (; k != m_pCache->getEnd(); ++k)
- {
- ORowSetValueVector* pTemp = k->get();
- OSL_ENSURE( pTemp != (void*)0xfeeefeee,"HALT!" );
- }
-#endif
- OSL_ENSURE(!m_aCurrentRow.isNull() && m_aCurrentRow < m_pCache->getEnd() && aCacheIter != m_pCache->m_aCacheIterators.end(),"Invalid iterator set for currentrow!");
-#if OSL_DEBUG_LEVEL > 0
- ORowSetRow rRow = (*m_aCurrentRow);
- OSL_ENSURE(rRow.is() && static_cast<sal_uInt16>(columnIndex) < (rRow->get()).size(),"Invalid size of vector!");
-#endif
- return ((*m_aCurrentRow)->get())[m_nLastColumnIndex = columnIndex];
- }
-
- // we should normally never reach this
- return m_aEmptyValue;
-}
-
-::rtl::OUString SAL_CALL ORowSetBase::getString( sal_Int32 columnIndex ) throw(SQLException, RuntimeException)
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "ORowSetBase::getString" );
- ::osl::MutexGuard aGuard( *m_pMutex );
- return getValue(columnIndex);
-}
-
-sal_Bool SAL_CALL ORowSetBase::getBoolean( sal_Int32 columnIndex ) throw(SQLException, RuntimeException)
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "ORowSetBase::getBoolean" );
- ::osl::MutexGuard aGuard( *m_pMutex );
- return getValue(columnIndex);
-}
-
-sal_Int8 SAL_CALL ORowSetBase::getByte( sal_Int32 columnIndex ) throw(SQLException, RuntimeException)
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "ORowSetBase::getByte" );
- ::osl::MutexGuard aGuard( *m_pMutex );
- return getValue(columnIndex);
-}
-
-sal_Int16 SAL_CALL ORowSetBase::getShort( sal_Int32 columnIndex ) throw(SQLException, RuntimeException)
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "ORowSetBase::getShort" );
- ::osl::MutexGuard aGuard( *m_pMutex );
- return getValue(columnIndex);
-}
-
-sal_Int32 SAL_CALL ORowSetBase::getInt( sal_Int32 columnIndex ) throw(SQLException, RuntimeException)
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "ORowSetBase::getInt" );
- ::osl::MutexGuard aGuard( *m_pMutex );
- return getValue(columnIndex);
-}
-
-sal_Int64 SAL_CALL ORowSetBase::getLong( sal_Int32 columnIndex ) throw(SQLException, RuntimeException)
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "ORowSetBase::getLong" );
- ::osl::MutexGuard aGuard( *m_pMutex );
- return getValue(columnIndex);
-}
-
-float SAL_CALL ORowSetBase::getFloat( sal_Int32 columnIndex ) throw(SQLException, RuntimeException)
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "ORowSetBase::getFloat" );
- ::osl::MutexGuard aGuard( *m_pMutex );
- return getValue(columnIndex);
-}
-
-double SAL_CALL ORowSetBase::getDouble( sal_Int32 columnIndex ) throw(SQLException, RuntimeException)
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "ORowSetBase::getDouble" );
- ::osl::MutexGuard aGuard( *m_pMutex );
- return getValue(columnIndex);
-}
-
-Sequence< sal_Int8 > SAL_CALL ORowSetBase::getBytes( sal_Int32 columnIndex ) throw(SQLException, RuntimeException)
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "ORowSetBase::getBytes" );
- ::osl::MutexGuard aGuard( *m_pMutex );
- return getValue(columnIndex);
-}
-
-::com::sun::star::util::Date SAL_CALL ORowSetBase::getDate( sal_Int32 columnIndex ) throw(SQLException, RuntimeException)
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "ORowSetBase::getDate" );
- ::osl::MutexGuard aGuard( *m_pMutex );
- return getValue(columnIndex);
-}
-
-::com::sun::star::util::Time SAL_CALL ORowSetBase::getTime( sal_Int32 columnIndex ) throw(SQLException, RuntimeException)
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "ORowSetBase::getTime" );
- ::osl::MutexGuard aGuard( *m_pMutex );
- return getValue(columnIndex);
-}
-
-::com::sun::star::util::DateTime SAL_CALL ORowSetBase::getTimestamp( sal_Int32 columnIndex ) throw(SQLException, RuntimeException)
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "ORowSetBase::getTimestamp" );
- ::osl::MutexGuard aGuard( *m_pMutex );
- return getValue(columnIndex);
-}
-
-Reference< ::com::sun::star::io::XInputStream > SAL_CALL ORowSetBase::getBinaryStream( sal_Int32 columnIndex ) throw(SQLException, RuntimeException)
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "ORowSetBase::getBinaryStream" );
- ::osl::MutexGuard aGuard( *m_pMutex );
- checkCache();
-
- if ( m_bBeforeFirst || m_bAfterLast )
- {
- OSL_FAIL("ORowSetBase::getBinaryStream: Illegal call here (we're before first or after last)!");
- ::dbtools::throwSQLException( DBACORE_RESSTRING( RID_STR_CURSOR_BEFORE_OR_AFTER ), SQL_INVALID_CURSOR_POSITION, *m_pMySelf );
- }
-
- if ( impl_rowDeleted() )
- {
- return NULL;
- }
-
- bool bValidCurrentRow = ( !m_aCurrentRow.isNull() && m_aCurrentRow != m_pCache->getEnd() && m_aCurrentRow->is() );
- if ( !bValidCurrentRow )
- {
- positionCache( MOVE_NONE_REFRESH_ONLY );
- m_aCurrentRow = m_pCache->m_aMatrixIter;
- m_bIsInsertRow = sal_False;
- OSL_ENSURE(!m_aCurrentRow.isNull(),"ORowSetBase::getBinaryStream: we don't stand on a valid row! Row is null.");
-
- bValidCurrentRow = ( !m_aCurrentRow.isNull() && m_aCurrentRow != m_pCache->getEnd() && m_aCurrentRow->is() );
- }
-
- if ( bValidCurrentRow )
- return new ::comphelper::SequenceInputStream(((*m_aCurrentRow)->get())[m_nLastColumnIndex = columnIndex].getSequence());
-
- // we should normally never reach this
- return Reference< ::com::sun::star::io::XInputStream >();
-}
-
-Reference< ::com::sun::star::io::XInputStream > SAL_CALL ORowSetBase::getCharacterStream( sal_Int32 columnIndex ) throw(SQLException, RuntimeException)
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "ORowSetBase::getCharacterStream" );
- return getBinaryStream(columnIndex);
-}
-
-Any SAL_CALL ORowSetBase::getObject( sal_Int32 columnIndex, const Reference< XNameAccess >& /*typeMap*/ ) throw(SQLException, RuntimeException)
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "ORowSetBase::getObject" );
- ::osl::MutexGuard aGuard( *m_pMutex );
- checkCache();
-
- return getValue(columnIndex).makeAny();
-}
-
-Reference< XRef > SAL_CALL ORowSetBase::getRef( sal_Int32 /*columnIndex*/ ) throw(SQLException, RuntimeException)
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "ORowSetBase::getRef" );
- ::dbtools::throwFeatureNotImplementedException( "XRow::getRef", *m_pMySelf );
- return NULL;
-}
-
-Reference< XBlob > SAL_CALL ORowSetBase::getBlob( sal_Int32 columnIndex ) throw(SQLException, RuntimeException)
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "ORowSetBase::getBlob" );
- return Reference< XBlob >(getValue(columnIndex).makeAny(),UNO_QUERY);
-}
-
-Reference< XClob > SAL_CALL ORowSetBase::getClob( sal_Int32 columnIndex ) throw(SQLException, RuntimeException)
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "ORowSetBase::getClob" );
- return Reference< XClob >(getValue(columnIndex).makeAny(),UNO_QUERY);
-}
-
-Reference< XArray > SAL_CALL ORowSetBase::getArray( sal_Int32 /*columnIndex*/ ) throw(SQLException, RuntimeException)
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "ORowSetBase::getArray" );
- ::dbtools::throwFeatureNotImplementedException( "XRow::getArray", *m_pMySelf );
- return NULL;
-}
-
-// ::com::sun::star::sdbcx::XRowLocate
-Any SAL_CALL ORowSetBase::getBookmark( ) throw(SQLException, RuntimeException)
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "ORowSetBase::getBookmark" );
- OSL_TRACE("DBACCESS ORowSetBase::getBookmark() Clone = %i ID = %i\n",m_bClone,osl_getThreadIdentifier(NULL));
- ::connectivity::checkDisposed(m_rBHelper.bDisposed);
- ::osl::MutexGuard aGuard( *m_pMutex );
- checkCache();
-
- if ( m_bBeforeFirst || m_bAfterLast )
- ::dbtools::throwSQLException( DBACORE_RESSTRING( RID_STR_NO_BOOKMARK_BEFORE_OR_AFTER ), SQL_INVALID_CURSOR_POSITION, *m_pMySelf );
-
- if ( impl_rowDeleted() )
- ::dbtools::throwSQLException( DBACORE_RESSTRING( RID_STR_NO_BOOKMARK_DELETED ), SQL_INVALID_CURSOR_POSITION, *m_pMySelf );
-
- OSL_ENSURE( m_aBookmark.hasValue(), "ORowSetBase::getBookmark: bookmark has no value!" );
- return m_aBookmark;
-}
-
-sal_Bool SAL_CALL ORowSetBase::moveToBookmark( const Any& bookmark ) throw(SQLException, RuntimeException)
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "ORowSetBase::moveToBookmark" );
- OSL_TRACE("DBACCESS ORowSetBase::moveToBookmark(Any) Clone = %i ID = %i\n",m_bClone,osl_getThreadIdentifier(NULL));
- OSL_ENSURE(bookmark.hasValue(),"ORowSetBase::moveToBookmark bookmark has no value!");
- ::osl::ResettableMutexGuard aGuard( *m_pMutex );
-
- if(!bookmark.hasValue() || m_nResultSetType == ResultSetType::FORWARD_ONLY)
- {
- if(bookmark.hasValue())
- OSL_FAIL("MoveToBookmark is not possible when we are only forward");
- else
- OSL_FAIL("Bookmark is not valid");
- throwFunctionSequenceException(*m_pMySelf);
- }
-
-
- checkCache();
-
- sal_Bool bRet( notifyAllListenersCursorBeforeMove( aGuard ) );
- if ( bRet )
- {
- // check if we are inserting a row
- sal_Bool bWasNew = m_pCache->m_bNew || impl_rowDeleted();
-
- ORowSetNotifier aNotifier( this );
- // this will call cancelRowModification on the cache if necessary
-
- ORowSetRow aOldValues = getOldRow(bWasNew);
-
- bRet = m_pCache->moveToBookmark(bookmark);
- doCancelModification( );
- if(bRet)
- {
- // notification order
- // - column values
- // - cursorMoved
- setCurrentRow( sal_True, sal_True, aOldValues, aGuard );
- }
- else
- {
- movementFailed();
- }
-
- // - IsModified
- // - IsNew
- aNotifier.fire( );
- }
- OSL_TRACE("DBACCESS ORowSetBase::moveToBookmark(Any) = %i Clone = %i\n",bRet,m_bClone);
- return bRet;
-}
-
-sal_Bool SAL_CALL ORowSetBase::moveRelativeToBookmark( const Any& bookmark, sal_Int32 rows ) throw(SQLException, RuntimeException)
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "ORowSetBase::moveRelativeToBookmark" );
- OSL_TRACE("DBACCESS ORowSetBase::moveRelativeToBookmark(Any,%i) Clone = %i\n",rows,m_bClone);
- ::connectivity::checkDisposed(m_rBHelper.bDisposed);
-
- ::osl::ResettableMutexGuard aGuard( *m_pMutex );
-
- checkPositioningAllowed();
-
- sal_Bool bRet( notifyAllListenersCursorBeforeMove( aGuard ) );
- if ( bRet )
- {
- // check if we are inserting a row
- sal_Bool bWasNew = m_pCache->m_bNew || rowDeleted();
-
- ORowSetNotifier aNotifier( this );
- // this will call cancelRowModification on the cache if necessary
-
- ORowSetRow aOldValues = getOldRow(bWasNew);
-
- bRet = m_pCache->moveRelativeToBookmark(bookmark,rows);
- doCancelModification( );
- if(bRet)
- {
- // notification order
- // - column values
- // - cursorMoved
- setCurrentRow( sal_True, sal_True, aOldValues, aGuard );
- }
- else
- movementFailed();
-
- // - IsModified
- // - IsNew
- aNotifier.fire( );
-
- // RowCount/IsRowCountFinal
- fireRowcount();
- }
- OSL_TRACE("DBACCESS ORowSetBase::moveRelativeToBookmark(Any,%i) = %i Clone = %i\n",rows,bRet,m_bClone);
- return bRet;
-}
-
-sal_Int32 SAL_CALL ORowSetBase::compareBookmarks( const Any& _first, const Any& _second ) throw(SQLException, RuntimeException)
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "ORowSetBase::compareBookmarks" );
- ::osl::MutexGuard aGuard( *m_pMutex );
- checkCache();
- return m_pCache->compareBookmarks(_first,_second);
-}
-
-sal_Bool SAL_CALL ORowSetBase::hasOrderedBookmarks( ) throw(SQLException, RuntimeException)
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "ORowSetBase::hasOrderedBookmarks" );
- ::osl::MutexGuard aGuard( *m_pMutex );
- checkCache();
- return m_pCache->hasOrderedBookmarks();
-}
-
-sal_Int32 SAL_CALL ORowSetBase::hashBookmark( const Any& bookmark ) throw(SQLException, RuntimeException)
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "ORowSetBase::hashBookmark" );
- ::osl::MutexGuard aGuard( *m_pMutex );
- checkCache();
- return m_pCache->hashBookmark(bookmark);
-}
-
-// XResultSetMetaDataSupplier
-Reference< XResultSetMetaData > SAL_CALL ORowSetBase::getMetaData( ) throw(SQLException, RuntimeException)
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "ORowSetBase::getMetaData" );
- ::connectivity::checkDisposed(m_rBHelper.bDisposed);
-
- Reference< XResultSetMetaData > xMeta;
- if(m_pCache)
- xMeta = m_pCache->getMetaData();
-
- return xMeta;
-}
-
-// XColumnLocate
-sal_Int32 SAL_CALL ORowSetBase::findColumn( const ::rtl::OUString& columnName ) throw(SQLException, RuntimeException)
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "ORowSetBase::findColumn" );
- ::connectivity::checkDisposed(m_rBHelper.bDisposed);
-
- ::osl::MutexGuard aGuard( m_aColumnsMutex );
- // it is possible to save some time here when we remember the names - position relation in a map
- return m_pColumns ? m_pColumns->findColumn(columnName) : sal_Int32(0);
-}
-
-// ::com::sun::star::sdbcx::XColumnsSupplier
-Reference< XNameAccess > SAL_CALL ORowSetBase::getColumns( ) throw(RuntimeException)
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "ORowSetBase::getColumns" );
- ::connectivity::checkDisposed(m_rBHelper.bDisposed);
-
- ::osl::MutexGuard aGuard( m_aColumnsMutex );
- if(!m_pColumns)
- {
- if (!m_pEmptyCollection)
- m_pEmptyCollection = new OEmptyCollection(*m_pMySelf,m_aColumnsMutex);
- return m_pEmptyCollection;
- }
-
- return m_pColumns;
-}
-
-// XResultSet
-sal_Bool SAL_CALL ORowSetBase::next( ) throw(SQLException, RuntimeException)
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "ORowSetBase::next" );
- OSL_TRACE("DBACCESS ORowSetBase::next() Clone = %i ID = %i\n",m_bClone,osl_getThreadIdentifier(NULL));
- ::osl::ResettableMutexGuard aGuard( *m_pMutex );
- checkCache();
-
- sal_Bool bRet( notifyAllListenersCursorBeforeMove( aGuard ) );
- if ( bRet )
- {
- // check if we are inserting a row
- sal_Bool bWasNew = m_pCache->m_bNew || impl_rowDeleted();
-
- ORowSetNotifier aNotifier( this );
- // this will call cancelRowModification on the cache if necessary
-
- ORowSetRow aOldValues = getOldRow(bWasNew);
-
- positionCache( MOVE_FORWARD );
- sal_Bool bAfterLast = m_pCache->isAfterLast();
- bRet = m_pCache->next();
- doCancelModification( );
-
- if ( bRet || bAfterLast != m_pCache->isAfterLast() )
- {
- // notification order
- // - column values
- // - cursorMoved
- setCurrentRow( bRet, sal_True, aOldValues, aGuard );
- OSL_ENSURE(!m_bBeforeFirst,"BeforeFirst is true. I don't know why?");
- }
- else
- {
- // moved after the last row
- movementFailed();
- OSL_ENSURE(m_bAfterLast,"AfterLast is false. I don't know why?");
- }
-
- // - IsModified
- // - IsNew
- aNotifier.fire();
-
- // - RowCount/IsRowCountFinal
- fireRowcount();
- }
- OSL_TRACE("DBACCESS ORowSetBase::next() = %i Clone = %i ID = %i\n",bRet,m_bClone,osl_getThreadIdentifier(NULL));
- return bRet;
-}
-
-sal_Bool SAL_CALL ORowSetBase::isBeforeFirst( ) throw(SQLException, RuntimeException)
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "ORowSetBase::isBeforeFirst" );
- ::connectivity::checkDisposed(m_rBHelper.bDisposed);
- ::osl::MutexGuard aGuard( *m_pMutex );
- checkCache();
-
- OSL_TRACE("DBACCESS ORowSetBase::isBeforeFirst() = %i Clone = %i\n",m_bBeforeFirst,m_bClone);
-
- return m_bBeforeFirst;
-}
-
-sal_Bool SAL_CALL ORowSetBase::isAfterLast( ) throw(SQLException, RuntimeException)
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "ORowSetBase::isAfterLast" );
- ::connectivity::checkDisposed(m_rBHelper.bDisposed);
- ::osl::MutexGuard aGuard( *m_pMutex );
- checkCache();
- OSL_TRACE("DBACCESS ORowSetBase::isAfterLast() = %i Clone = %i\n",m_bAfterLast,m_bClone);
-
- return m_bAfterLast;
-}
-
-sal_Bool ORowSetBase::isOnFirst()
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "ORowSetBase::isOnFirst" );
- return isFirst();
-}
-
-sal_Bool SAL_CALL ORowSetBase::isFirst( ) throw(SQLException, RuntimeException)
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "ORowSetBase::isFirst" );
- OSL_TRACE("DBACCESS ORowSetBase::isFirst() Clone = %i ID = %i\n",m_bClone,osl_getThreadIdentifier(NULL));
-
- ::connectivity::checkDisposed(m_rBHelper.bDisposed);
- ::osl::MutexGuard aGuard( *m_pMutex );
- checkCache();
-
- if ( m_bBeforeFirst || m_bAfterLast )
- return sal_False;
-
- if ( impl_rowDeleted() )
- return ( m_nDeletedPosition == 1 );
-
- positionCache( MOVE_NONE_REFRESH_ONLY );
- sal_Bool bIsFirst = m_pCache->isFirst();
-
- OSL_TRACE("DBACCESS ORowSetBase::isFirst() = %i Clone = %i\n",bIsFirst,m_bClone);
- return bIsFirst;
-}
-
-sal_Bool ORowSetBase::isOnLast()
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "ORowSetBase::isOnLast" );
- return isLast();
-}
-
-sal_Bool SAL_CALL ORowSetBase::isLast( ) throw(SQLException, RuntimeException)
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "ORowSetBase::isLast" );
- OSL_TRACE("DBACCESS ORowSetBase::isLast() Clone = %i ID = %i\n",m_bClone,osl_getThreadIdentifier(NULL));
- ::connectivity::checkDisposed(m_rBHelper.bDisposed);
- ::osl::MutexGuard aGuard( *m_pMutex );
- checkCache();
-
- if ( m_bBeforeFirst || m_bAfterLast )
- return sal_False;
-
- if ( impl_rowDeleted() )
- {
- if ( !m_pCache->m_bRowCountFinal )
- return sal_False;
- else
- return ( m_nDeletedPosition == impl_getRowCount() );
- }
-
- positionCache( MOVE_NONE_REFRESH_ONLY );
- sal_Bool bIsLast = m_pCache->isLast();
-
- OSL_TRACE("DBACCESS ORowSetBase::isLast() = %i Clone = %i\n",bIsLast,m_bClone);
- return bIsLast;
-}
-
-void SAL_CALL ORowSetBase::beforeFirst( ) throw(SQLException, RuntimeException)
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "ORowSetBase::beforeFirst" );
- OSL_TRACE("DBACCESS ORowSetBase::beforeFirst() Clone = %i ID = %i\n",m_bClone,osl_getThreadIdentifier(NULL));
- ::connectivity::checkDisposed(m_rBHelper.bDisposed);
- ::osl::ResettableMutexGuard aGuard( *m_pMutex );
-
- checkPositioningAllowed();
-
- // check if we are inserting a row
- sal_Bool bWasNew = m_pCache->m_bNew || impl_rowDeleted();
-
- if((bWasNew || !m_bBeforeFirst) && notifyAllListenersCursorBeforeMove(aGuard) )
- {
- ORowSetNotifier aNotifier( this );
- // this will call cancelRowModification on the cache if necessary
-
- if ( !m_bBeforeFirst )
- {
- ORowSetRow aOldValues = getOldRow(bWasNew);
- m_pCache->beforeFirst();
- doCancelModification( );
-
- // notification order
- // - column values
- // - cursorMoved
- setCurrentRow( sal_True, sal_True, aOldValues, aGuard );
-
- // - IsModified
- // - Isnew
- aNotifier.fire();
-
- // - RowCount/IsRowCountFinal
- fireRowcount();
- }
-
- // to be done _after_ the notifications!
- m_aOldRow->clearRow();
- }
- OSL_TRACE("DBACCESS ORowSetBase::beforeFirst() Clone = %i ID = %i\n",m_bClone,osl_getThreadIdentifier(NULL));
-}
-
-void SAL_CALL ORowSetBase::afterLast( ) throw(SQLException, RuntimeException)
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "ORowSetBase::afterLast" );
- OSL_TRACE("DBACCESS ORowSetBase::afterLast() Clone = %i ID = %i\n",m_bClone,osl_getThreadIdentifier(NULL));
- ::connectivity::checkDisposed(m_rBHelper.bDisposed);
-
- ::osl::ResettableMutexGuard aGuard( *m_pMutex );
- checkPositioningAllowed();
-
- sal_Bool bWasNew = m_pCache->m_bNew || impl_rowDeleted();
-
- if((bWasNew || !m_bAfterLast) && notifyAllListenersCursorBeforeMove(aGuard) )
- {
- // check if we are inserting a row
- ORowSetNotifier aNotifier( this );
- // this will call cancelRowModification on the cache if necessary
-
- if(!m_bAfterLast)
- {
- ORowSetRow aOldValues = getOldRow(bWasNew);
-
- m_pCache->afterLast();
- doCancelModification( );
-
- // notification order
- // - column values
- // - cursorMoved
- setCurrentRow( sal_True, sal_True, aOldValues, aGuard );
-
- // - IsModified
- // - Isnew
- aNotifier.fire();
-
- // - RowCount/IsRowCountFinal
- fireRowcount();
- }
- }
- OSL_TRACE("DBACCESS ORowSetBase::afterLast() Clone = %i ID = %i\n",m_bClone,osl_getThreadIdentifier(NULL));
-}
-
-sal_Bool SAL_CALL ORowSetBase::move( ::std::mem_fun_t<sal_Bool,ORowSetBase>& _aCheckFunctor,
- ::std::mem_fun_t<sal_Bool,ORowSetCache>& _aMovementFunctor)
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "ORowSetBase::move" );
- OSL_TRACE("DBACCESS ORowSetBase::move() Clone = %i ID = %i\n",m_bClone,osl_getThreadIdentifier(NULL));
- ::connectivity::checkDisposed(m_rBHelper.bDisposed);
- ::osl::ResettableMutexGuard aGuard( *m_pMutex );
- checkPositioningAllowed();
-
- sal_Bool bRet( notifyAllListenersCursorBeforeMove( aGuard ) );
- if( bRet )
- {
- // check if we are inserting a row
- sal_Bool bWasNew = m_pCache->m_bNew || rowDeleted();
-
- ORowSetNotifier aNotifier( this );
- // this will call cancelRowModification on the cache if necessary
-
- ORowSetRow aOldValues = getOldRow(bWasNew);
-
- sal_Bool bMoved = ( bWasNew || !_aCheckFunctor(this) );
-
- bRet = _aMovementFunctor(m_pCache);
- doCancelModification( );
-
- if ( bRet )
- {
- // notification order
- // - column values
- // - cursorMoved
- setCurrentRow( bMoved, sal_True, aOldValues, aGuard );
- }
- else
- { // first goes wrong so there is no row
- movementFailed();
- }
-
- // - IsModified
- // - IsNew
- aNotifier.fire();
-
- // - RowCount/IsRowCountFinal
- fireRowcount();
- }
- OSL_TRACE("DBACCESS ORowSetBase::move() = %i Clone = %i\n",bRet,m_bClone);
- return bRet;
-}
-
-sal_Bool SAL_CALL ORowSetBase::first( ) throw(SQLException, RuntimeException)
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "ORowSetBase::first" );
- OSL_TRACE("DBACCESS ORowSetBase::first() Clone = %i ID = %i\n",m_bClone,osl_getThreadIdentifier(NULL));
- ::std::mem_fun_t<sal_Bool,ORowSetBase> ioF_tmp(&ORowSetBase::isOnFirst);
- ::std::mem_fun_t<sal_Bool,ORowSetCache> F_tmp(&ORowSetCache::first);
- return move(ioF_tmp,F_tmp);
-}
-
-sal_Bool SAL_CALL ORowSetBase::last( ) throw(SQLException, RuntimeException)
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "ORowSetBase::last" );
- OSL_TRACE("DBACCESS ORowSetBase::last() Clone = %i ID = %i\n",m_bClone,osl_getThreadIdentifier(NULL));
- ::std::mem_fun_t<sal_Bool,ORowSetBase> ioL_tmp(&ORowSetBase::isOnLast);
- ::std::mem_fun_t<sal_Bool,ORowSetCache> L_tmp(&ORowSetCache::last);
- return move(ioL_tmp,L_tmp);
-}
-
-sal_Int32 SAL_CALL ORowSetBase::getRow( ) throw(SQLException, RuntimeException)
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "ORowSetBase::getRow" );
- OSL_TRACE("DBACCESS ORowSetBase::getRow() Clone = %i ID = %i\n",m_bClone,osl_getThreadIdentifier(NULL));
- ::osl::MutexGuard aGuard( *m_pMutex );
-
- checkCache();
- return impl_getRow();
-}
-
-sal_Int32 ORowSetBase::impl_getRow()
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "ORowSetBase::impl_getRow" );
- sal_Int32 nPos = 0;
- if ( m_bBeforeFirst )
- nPos = 0;
- else if ( m_bAfterLast )
- nPos = impl_getRowCount() + 1;
- else if ( impl_rowDeleted() )
- nPos = m_nDeletedPosition;
- else if ( !m_bClone && m_pCache->m_bNew )
- nPos = 0;
- else
- {
- if ( m_pCache->isAfterLast()
- || m_pCache->isBeforeFirst()
- || ( m_pCache->compareBookmarks( m_aBookmark, m_pCache->getBookmark() ) != CompareBookmark::EQUAL )
- )
- {
- positionCache( MOVE_NONE_REFRESH_ONLY );
- }
- nPos = m_pCache->getRow();
- }
- OSL_TRACE("DBACCESS ORowSetBase::impl_getRow() = %i Clone = %i ID = %i\n",nPos,m_bClone,osl_getThreadIdentifier(NULL));
- return nPos;
-}
-
-sal_Bool SAL_CALL ORowSetBase::absolute( sal_Int32 row ) throw(SQLException, RuntimeException)
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "ORowSetBase::absolute" );
- OSL_TRACE("DBACCESS ORowSetBase::absolute(%i) Clone = %i\n",row,m_bClone);
- ::connectivity::checkDisposed(m_rBHelper.bDisposed);
- ::osl::ResettableMutexGuard aGuard( *m_pMutex );
- checkPositioningAllowed();
-
- sal_Bool bRet = ( row > 0 )
- && notifyAllListenersCursorBeforeMove( aGuard );
- if ( bRet )
- {
- // check if we are inserting a row
- sal_Bool bWasNew = m_pCache->m_bNew || rowDeleted();
-
- ORowSetNotifier aNotifier( this );
- // this will call cancelRowModification on the cache if necessary
-
- ORowSetRow aOldValues = getOldRow(bWasNew);
-
- bRet = m_pCache->absolute(row);
- doCancelModification( );
-
- if(bRet)
- {
- // notification order
- // - column values
- // - cursorMoved
- setCurrentRow( sal_True, sal_True, aOldValues, aGuard );
- }
- else
- { // absolute movement goes wrong we stand left or right side of the rows
- movementFailed();
- }
-
- // - IsModified
- // - IsNew
- aNotifier.fire();
-
- // - RowCount/IsRowCountFinal
- fireRowcount();
- }
- OSL_TRACE("DBACCESS ORowSetBase::absolute(%i) = %i Clone = %i\n",row,bRet,m_bClone);
- return bRet;
-}
-
-sal_Bool SAL_CALL ORowSetBase::relative( sal_Int32 rows ) throw(SQLException, RuntimeException)
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "ORowSetBase::relative" );
- OSL_TRACE("DBACCESS ORowSetBase::relative(%i) Clone = %i\n",rows,m_bClone);
- ::connectivity::checkDisposed(m_rBHelper.bDisposed);
-
- ::osl::ResettableMutexGuard aGuard( *m_pMutex );
-
- if(!rows)
- return sal_True; // in this case do nothing
-
- checkPositioningAllowed();
-
- sal_Bool bRet =
- ( ( !m_bAfterLast || rows <= 0 )
- && ( !m_bBeforeFirst || rows >= 0 )
- && notifyAllListenersCursorBeforeMove( aGuard )
- );
-
- if ( bRet )
- {
- // check if we are inserting a row
- sal_Bool bWasNew = m_pCache->m_bNew || rowDeleted();
-
- ORowSetNotifier aNotifier( this );
- // this will call cancelRowModification on the cache if necessary
-
- ORowSetRow aOldValues = getOldRow(bWasNew);
-
- positionCache( rows > 0 ? MOVE_FORWARD : MOVE_BACKWARD );
- bRet = m_pCache->relative(rows);
- doCancelModification( );
-
- if(bRet)
- {
- // notification order
- // - column values
- // - cursorMoved
- setCurrentRow( sal_True, sal_True, aOldValues, aGuard );
- }
- else
- {
- movementFailed();
- }
-
- // - IsModified
- // - IsNew
- aNotifier.fire();
-
- // - RowCount/IsRowCountFinal
- fireRowcount();
- }
- OSL_TRACE("DBACCESS ORowSetBase::relative(%i) = %i Clone = %i\n",rows,bRet,m_bClone);
- return bRet;
-}
-
-sal_Bool SAL_CALL ORowSetBase::previous( ) throw(SQLException, RuntimeException)
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "ORowSetBase::previous" );
- OSL_TRACE("DBACCESS ORowSetBase::previous() Clone = %i ID = %i\n",m_bClone,osl_getThreadIdentifier(NULL));
- ::connectivity::checkDisposed(m_rBHelper.bDisposed);
- ::osl::ResettableMutexGuard aGuard( *m_pMutex );
-
- checkPositioningAllowed();
-
- sal_Bool bRet = !m_bBeforeFirst
- && notifyAllListenersCursorBeforeMove(aGuard);
-
- if ( bRet )
- {
- // check if we are inserting a row
- sal_Bool bWasNew = m_pCache->m_bNew || rowDeleted();
-
- ORowSetNotifier aNotifier( this );
- // this will call cancelRowModification on the cache if necessary
-
- ORowSetRow aOldValues = getOldRow(bWasNew);
-
- positionCache( MOVE_BACKWARD );
- bRet = m_pCache->previous();
- doCancelModification( );
-
- // if m_bBeforeFirst is false and bRet is false than we stood on the first row
- if(!m_bBeforeFirst || bRet)
- {
- // notification order
- // - column values
- // - cursorMoved
- setCurrentRow( sal_True, sal_True, aOldValues, aGuard );
- }
- else
- {
- OSL_FAIL( "ORowSetBase::previous: inconsistency!" );
- // we should never reach this place, as we should not get into this whole branch if m_bBeforeFirst
- // was |true| from the beginning
- movementFailed();
- }
-
- // - IsModified
- // - IsNew
- aNotifier.fire();
-
- // - RowCount/IsRowCountFinal
- fireRowcount();
- }
- OSL_TRACE("DBACCESS ORowSetBase::previous() = %i Clone = %i\n",bRet,m_bClone);
- return bRet;
-}
-
-void ORowSetBase::setCurrentRow( sal_Bool _bMoved, sal_Bool _bDoNotify, const ORowSetRow& _rOldValues, ::osl::ResettableMutexGuard& _rGuard )
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "ORowSetBase::setCurrentRow" );
- OSL_TRACE("DBACCESS ORowSetBase::setCurrentRow() Clone = %i ID = %i\n",m_bClone,osl_getThreadIdentifier(NULL));
- m_bBeforeFirst = m_pCache->isBeforeFirst();
- m_bAfterLast = m_pCache->isAfterLast();
-
- if(!(m_bBeforeFirst || m_bAfterLast))
- {
- m_aBookmark = m_pCache->getBookmark();
- OSL_ENSURE(m_aBookmark.hasValue(),"Bookmark has no value!");
- m_aCurrentRow = m_pCache->m_aMatrixIter;
- m_bIsInsertRow = sal_False;
- OSL_ENSURE(!m_aCurrentRow.isNull(),"CurrentRow is null!");
- m_aCurrentRow.setBookmark(m_aBookmark);
- OSL_ENSURE(!m_aCurrentRow.isNull() && m_aCurrentRow != m_pCache->getEnd(),"Position of matrix iterator isn't valid!");
- OSL_ENSURE(m_aCurrentRow->is(),"Currentrow isn't valid");
- OSL_ENSURE(m_aBookmark.hasValue(),"Bookmark has no value!");
-
-#if OSL_DEBUG_LEVEL > 0
- sal_Int32 nOldRow = m_pCache->getRow();
-#endif
- positionCache( MOVE_NONE_REFRESH_ONLY );
-#if OSL_DEBUG_LEVEL > 0
- sal_Int32 nNewRow = m_pCache->getRow();
-#endif
- OSL_ENSURE(nOldRow == nNewRow,"Old position is not equal to new postion");
- m_aCurrentRow = m_pCache->m_aMatrixIter;
- m_bIsInsertRow = sal_False;
- OSL_ENSURE(!m_aCurrentRow.isNull(),"CurrentRow is nul after positionCache!");
-#if OSL_DEBUG_LEVEL > 0
- ORowSetRow rRow = (*m_aCurrentRow);
- OSL_ENSURE(rRow.is() ,"Invalid size of vector!");
-#endif
- // the cache could repositioned so we need to adjust the cache
- if ( _bMoved && m_aCurrentRow.isNull() )
- {
- positionCache( MOVE_NONE_REFRESH_ONLY );
- m_aCurrentRow = m_pCache->m_aMatrixIter;
- m_bIsInsertRow = sal_False;
- OSL_ENSURE(!m_aCurrentRow.isNull(),"CurrentRow is nul after positionCache!");
- }
- }
- else
- {
- m_aOldRow->clearRow();
- m_aCurrentRow = m_pCache->getEnd();
- m_aBookmark = Any();
- m_aCurrentRow.setBookmark(m_aBookmark);
- }
-
- // notification order
- // - column values
- if ( _bDoNotify )
- firePropertyChange(_rOldValues);
-
- // TODO: can this be done before the notifications?
- if(!(m_bBeforeFirst || m_bAfterLast) && !m_aCurrentRow.isNull() && m_aCurrentRow->is() && m_aCurrentRow != m_pCache->getEnd())
- m_aOldRow->setRow(new ORowSetValueVector( *(*m_aCurrentRow) ));
-
- if ( _bMoved && _bDoNotify )
- // - cursorMoved
- notifyAllListenersCursorMoved( _rGuard );
-
- OSL_TRACE("DBACCESS ORowSetBase::setCurrentRow() Clone = %i ID = %i\n",m_bClone,osl_getThreadIdentifier(NULL));
-}
-
-void ORowSetBase::checkPositioningAllowed() throw( SQLException, RuntimeException )
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "ORowSetBase::checkPositioningAllowed" );
- if(!m_pCache || m_nResultSetType == ResultSetType::FORWARD_ONLY)
- throwFunctionSequenceException(*m_pMySelf);
-}
-
-Reference< XInterface > ORowSetBase::getStatement(void) throw( SQLException, RuntimeException )
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "ORowSetBase::getStatement" );
- return NULL;
-}
-
-void SAL_CALL ORowSetBase::refreshRow( ) throw(SQLException, RuntimeException)
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "ORowSetBase::refreshRow" );
- ::connectivity::checkDisposed(m_rBHelper.bDisposed);
- ::osl::MutexGuard aGuard( *m_pMutex );
- checkCache();
- if ( impl_rowDeleted() )
- throwSQLException( "The current row is deleted", SQL_INVALID_CURSOR_STATE, Reference< XRowSet >( this ) );
-
- if(!(m_bBeforeFirst || m_bAfterLast))
- {
- sal_Bool bWasNew = m_pCache->m_bNew || impl_rowDeleted();
- ORowSetRow aOldValues = getOldRow(bWasNew);
- positionCache( MOVE_NONE_REFRESH_ONLY );
- m_pCache->refreshRow();
- firePropertyChange(aOldValues);
- }
-}
-
-sal_Bool SAL_CALL ORowSetBase::rowUpdated( ) throw(SQLException, RuntimeException)
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "ORowSetBase::rowUpdated" );
- ::osl::MutexGuard aGuard( *m_pMutex );
- checkCache();
-
- if ( impl_rowDeleted() )
- return sal_False;
-
- return m_pCache->rowUpdated();
-}
-
-sal_Bool SAL_CALL ORowSetBase::rowInserted( ) throw(SQLException, RuntimeException)
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "ORowSetBase::rowInserted" );
- ::osl::MutexGuard aGuard( *m_pMutex );
-
- checkCache();
-
- if ( impl_rowDeleted() )
- return sal_False;
-
- return m_pCache->rowInserted();
-}
-
-sal_Bool SAL_CALL ORowSetBase::rowDeleted( ) throw(SQLException, RuntimeException)
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "ORowSetBase::rowDeleted" );
- ::osl::MutexGuard aGuard( *m_pMutex );
- checkCache();
- return impl_rowDeleted();
-}
-
-sal_Bool ORowSetBase::impl_rowDeleted( )
-{
- return !m_aBookmark.hasValue() && !m_bBeforeFirst && !m_bAfterLast;
-}
-
-// XWarningsSupplier
-Any SAL_CALL ORowSetBase::getWarnings( ) throw(SQLException, RuntimeException)
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "ORowSetBase::getWarnings" );
- ::osl::MutexGuard aGuard( *m_pMutex );
-
- if ( m_pCache )
- {
- Reference< XWarningsSupplier > xWarnings( m_pCache->m_xSet.get(), UNO_QUERY );
- if ( xWarnings.is() )
- return xWarnings->getWarnings();
- }
-
- return Any();
-}
-
-void SAL_CALL ORowSetBase::clearWarnings( ) throw(SQLException, RuntimeException)
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "ORowSetBase::clearWarnings" );
- ::osl::MutexGuard aGuard( *m_pMutex );
-
- if ( m_pCache )
- {
- Reference< XWarningsSupplier > xWarnings( m_pCache->m_xSet.get(), UNO_QUERY );
- if ( xWarnings.is() )
- xWarnings->clearWarnings();
- }
-}
-
-void ORowSetBase::firePropertyChange(const ORowSetRow& _rOldRow)
-{
- if (!isPropertyChangeNotificationEnabled())
- return;
-
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "ORowSetBase::firePropertyChange" );
- OSL_TRACE("DBACCESS ORowSetBase::firePropertyChange() Clone = %i ID = %i\n",m_bClone,osl_getThreadIdentifier(NULL));
- OSL_ENSURE(m_pColumns,"Columns can not be NULL here!");
-#if OSL_DEBUG_LEVEL > 1
- sal_Bool bNull;
- ORowSetMatrix::iterator atest;
- bNull = m_aCurrentRow.isNull();
- atest = m_aCurrentRow;
-#endif
- sal_Int32 i=0;
- try
- {
- TDataColumns::iterator aEnd = m_aDataColumns.end();
- for(TDataColumns::iterator aIter = m_aDataColumns.begin();aIter != aEnd;++aIter,++i)
- (*aIter)->fireValueChange(_rOldRow.is() ? (_rOldRow->get())[i+1] : ::connectivity::ORowSetValue());
- }
- catch(Exception&)
- {
- OSL_FAIL("firePropertyChange: Exception");
- }
- OSL_TRACE("DBACCESS ORowSetBase::firePropertyChange() Clone = %i ID = %i\n",m_bClone,osl_getThreadIdentifier(NULL));
-}
-
-void ORowSetBase::firePropertyChange(sal_Int32 _nPos,const ::connectivity::ORowSetValue& _rOldValue)
-{
- OSL_ENSURE(_nPos < (sal_Int32)m_aDataColumns.size(),"nPos is invalid!");
- m_aDataColumns[_nPos]->fireValueChange(_rOldValue);
-}
-
-void ORowSetBase::fireRowcount()
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "ORowSetBase::fireRowcount" );
-}
-
-sal_Bool ORowSetBase::notifyAllListenersCursorBeforeMove(::osl::ResettableMutexGuard& /*_rGuard*/)
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "ORowSetBase::notifyAllListenersCursorBeforeMove" );
- return sal_True;
-}
-
-void ORowSetBase::notifyAllListenersCursorMoved(::osl::ResettableMutexGuard& /*_rGuard*/)
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "ORowSetBase::notifyAllListenersCursorMoved" );
-}
-
-void ORowSetBase::notifyAllListeners(::osl::ResettableMutexGuard& /*_rGuard*/)
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "ORowSetBase::notifyAllListeners" );
-}
-
-sal_Bool ORowSetBase::isPropertyChangeNotificationEnabled() const
-{
- return sal_True;
-}
-
-void ORowSetBase::fireProperty( sal_Int32 _nProperty, sal_Bool _bNew, sal_Bool _bOld )
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "ORowSetBase::fireProperty" );
- Any aNew = bool2any( _bNew );
- Any aOld = bool2any( _bOld );
- fire( &_nProperty, &aNew, &aOld, 1, sal_False );
-}
-
-void ORowSetBase::positionCache( CursorMoveDirection _ePrepareForDirection )
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "ORowSetBase::positionCache" );
- OSL_TRACE("DBACCESS ORowSetBase::positionCache() Clone = %i ID = %i\n",m_bClone,osl_getThreadIdentifier(NULL));
-
- sal_Bool bSuccess = sal_False;
- if ( m_aBookmark.hasValue() )
- {
- bSuccess = m_pCache->moveToBookmark( m_aBookmark );
- }
- else
- {
- if ( m_bBeforeFirst )
- {
- bSuccess = m_pCache->beforeFirst();
- }
- else if ( m_bAfterLast )
- {
- bSuccess = m_pCache->afterLast();
- }
- else
- {
- OSL_ENSURE( m_nDeletedPosition >= 1, "ORowSetBase::positionCache: no bookmark, and no valid 'deleted position'!" );
- switch ( _ePrepareForDirection )
- {
- case MOVE_FORWARD:
- if ( m_nDeletedPosition > 1 )
- bSuccess = m_pCache->absolute( m_nDeletedPosition - 1 );
- else
- {
- m_pCache->beforeFirst();
- bSuccess = sal_True;
- }
- break;
-
- case MOVE_BACKWARD:
- if ( m_pCache->m_bRowCountFinal && ( m_nDeletedPosition == impl_getRowCount() ) )
- {
- m_pCache->afterLast();
- bSuccess = sal_True;
- }
- else
- bSuccess = m_pCache->absolute( m_nDeletedPosition );
- break;
-
- case MOVE_NONE_REFRESH_ONLY:
- bSuccess = sal_False; // will be asserted below
- break;
- }
- }
- }
- OSL_ENSURE( bSuccess, "ORowSetBase::positionCache: failed!" );
- (void)bSuccess;
-
- OSL_TRACE("DBACCESS ORowSetBase::positionCache() Clone = %i ID = %i\n",m_bClone,osl_getThreadIdentifier(NULL));
-}
-
-void ORowSetBase::checkCache()
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "ORowSetBase::checkCache" );
- ::connectivity::checkDisposed(m_rBHelper.bDisposed);
- if(!m_pCache)
- throwFunctionSequenceException(*m_pMySelf);
-}
-
-void ORowSetBase::movementFailed()
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "ORowSetBase::movementFailed" );
- OSL_TRACE("DBACCESS ORowSetBase::movementFailed() Clone = %i ID = %i\n",m_bClone,osl_getThreadIdentifier(NULL));
- m_aOldRow->clearRow();
- m_aCurrentRow = m_pCache->getEnd();
- m_bBeforeFirst = m_pCache->isBeforeFirst();
- m_bAfterLast = m_pCache->isAfterLast();
- m_aBookmark = Any();
- m_aCurrentRow.setBookmark(m_aBookmark);
- OSL_ENSURE(m_bBeforeFirst || m_bAfterLast,"BeforeFirst or AfterLast is wrong!");
- OSL_TRACE("DBACCESS ORowSetBase::movementFailed() Clone = %i ID = %i\n",m_bClone,osl_getThreadIdentifier(NULL));
-}
-
-ORowSetRow ORowSetBase::getOldRow(sal_Bool _bWasNew)
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "ORowSetBase::getOldRow" );
- OSL_ENSURE(m_aOldRow.is(),"RowSetRowHElper isn't valid!");
- ORowSetRow aOldValues;
- if ( !_bWasNew && m_aOldRow->getRow().is() )
- aOldValues = new ORowSetValueVector( *(m_aOldRow->getRow())); // remember the old values
- return aOldValues;
-}
-
-void ORowSetBase::getPropertyDefaultByHandle( sal_Int32 /*_nHandle*/, Any& _rDefault ) const
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "ORowSetBase::getPropertyDefaultByHandle" );
- _rDefault.clear();
-}
-
-void ORowSetBase::onDeleteRow( const Any& _rBookmark )
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "ORowSetBase::onDeleteRow" );
- if ( rowDeleted() )
- // not interested in
- return;
-
- ::osl::MutexGuard aGuard( *m_pMutex );
- //OSL_ENSURE( m_aBookmark.hasValue(), "ORowSetBase::onDeleteRow: Bookmark isn't valid!" );
- if ( compareBookmarks( _rBookmark, m_aBookmark ) == 0 )
- {
- positionCache( MOVE_NONE_REFRESH_ONLY );
- m_nDeletedPosition = m_pCache->getRow();
- }
-}
-
-void ORowSetBase::onDeletedRow( const Any& _rBookmark, sal_Int32 _nPos )
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "ORowSetBase::onDeletedRow" );
- if ( rowDeleted() )
- {
- // if we're a clone, and on a deleted row, and the main RowSet deleted another
- // row (only the main RowSet can, clones can't), which is *before* our
- // deleted position, then we have to adjust this position
- if ( m_bClone && ( _nPos < m_nDeletedPosition ) )
- --m_nDeletedPosition;
- return;
- }
-
- ::osl::MutexGuard aGuard( *m_pMutex );
- if ( compareBookmarks( _rBookmark, m_aBookmark ) == 0 )
- {
- m_aOldRow->clearRow();
- m_aCurrentRow = m_pCache->getEnd();
- m_aBookmark = Any();
- m_aCurrentRow.setBookmark( m_aBookmark );
- }
-}
-
-sal_Int32 ORowSetBase::impl_getRowCount() const
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "ORowSetBase::impl_getRowCount" );
- sal_Int32 nRowCount( m_pCache->m_nRowCount );
- if ( const_cast< ORowSetBase* >( this )->rowDeleted() && !m_pCache->m_bNew )
- ++nRowCount;
- return nRowCount;
-}
-// =============================================================================
-struct ORowSetNotifierImpl
-{
- ::std::vector<sal_Int32> aChangedColumns;
- ::std::vector<Any> aChangedBookmarks;
- ORowSetValueVector::Vector aRow;
-
-};
-DBG_NAME(ORowSetNotifier)
-
-ORowSetNotifier::ORowSetNotifier( ORowSetBase* _pRowSet )
- :m_pRowSet( _pRowSet )
- ,m_bWasNew( sal_False )
- ,m_bWasModified( sal_False )
-#ifdef DBG_UTIL
- ,m_bNotifyCalled( sal_False )
-#endif
-{
- DBG_CTOR(ORowSetNotifier,NULL);
-
- OSL_ENSURE( m_pRowSet, "ORowSetNotifier::ORowSetNotifier: invalid row set. This wil crash." );
-
- // remember the "inserted" and "modified" state for later firing
- m_bWasNew = m_pRowSet->isNew( ORowSetBase::GrantNotifierAccess() );
- m_bWasModified = m_pRowSet->isModified( ORowSetBase::GrantNotifierAccess() );
-
- // if the row set is on the insert row, then we need to cancel this
- if ( m_pRowSet->isModification( ORowSetBase::GrantNotifierAccess() ) )
- m_pRowSet->doCancelModification( ORowSetBase::GrantNotifierAccess() );
-}
-
-ORowSetNotifier::ORowSetNotifier( ORowSetBase* _pRowSet,const ORowSetValueVector::Vector& i_aRow )
- :m_pImpl(new ORowSetNotifierImpl)
- ,m_pRowSet( _pRowSet )
- ,m_bWasNew( sal_False )
- ,m_bWasModified( sal_False )
-#ifdef DBG_UTIL
- ,m_bNotifyCalled( sal_False )
-#endif
-{
- DBG_CTOR(ORowSetNotifier,NULL);
-
- OSL_ENSURE( m_pRowSet, "ORowSetNotifier::ORowSetNotifier: invalid row set. This wil crash." );
- m_pImpl->aRow = i_aRow; // yes, create a copy to store the old values
-}
-
-ORowSetNotifier::~ORowSetNotifier( )
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "ORowSetNotifier::~ORowSetNotifier" );
- DBG_DTOR(ORowSetNotifier,NULL);
-}
-
-void ORowSetNotifier::fire()
-{
- // we're not interested in firing changes FALSE->TRUE, only TRUE->FALSE.
- // (the former would be quite pathological, e.g. after a failed movement)
-
- if ( m_bWasModified
- && ( m_bWasModified != m_pRowSet->isModified( ORowSetBase::GrantNotifierAccess() ) )
- )
- m_pRowSet->fireProperty( PROPERTY_ID_ISMODIFIED, sal_False, sal_True, ORowSetBase::GrantNotifierAccess() );
-
- if ( m_bWasNew
- && ( m_bWasNew != m_pRowSet->isNew( ORowSetBase::GrantNotifierAccess() ) )
- )
- m_pRowSet->fireProperty( PROPERTY_ID_ISNEW, sal_False, sal_True, ORowSetBase::GrantNotifierAccess() );
-
-#ifdef DBG_UTIL
- m_bNotifyCalled = sal_True;
-#endif
-}
-
-::std::vector<sal_Int32>& ORowSetNotifier::getChangedColumns() const
-{
- OSL_ENSURE(m_pImpl.get(),"Illegal CTor call, use the other one!");
- return m_pImpl->aChangedColumns;
-}
-
-::std::vector<Any>& ORowSetNotifier::getChangedBookmarks() const
-{
- OSL_ENSURE(m_pImpl.get(),"Illegal CTor call, use the other one!");
- return m_pImpl->aChangedBookmarks;
-}
-
-void ORowSetNotifier::firePropertyChange()
-{
- OSL_ENSURE(m_pImpl.get(),"Illegal CTor call, use the other one!");
- if( m_pImpl.get() )
- {
- ::std::vector<sal_Int32>::iterator aIter = m_pImpl->aChangedColumns.begin();
- for(;aIter != m_pImpl->aChangedColumns.end();++aIter)
- {
- m_pRowSet->firePropertyChange((*aIter)-1 ,m_pImpl->aRow[(*aIter)-1], ORowSetBase::GrantNotifierAccess());
- }
- if ( !m_pImpl->aChangedColumns.empty() )
- m_pRowSet->fireProperty(PROPERTY_ID_ISMODIFIED,sal_True,sal_False, ORowSetBase::GrantNotifierAccess());
- }
-}
-} // namespace dbaccess
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */