Tag: cws_src680_dba24 User: oj Date: 05/02/23 02:17:51 Modified: /dba/dbaccess/source/core/dataaccess/ databasedocument.cxx /dba/dbaccess/source/ui/app/ AppController.cxx
Log: #i42461# change model data source concept File Changes: Directory: /dba/dbaccess/source/core/dataaccess/ ================================================ File [changed]: databasedocument.cxx Url: http://dba.openoffice.org/source/browse/dba/dbaccess/source/core/dataaccess/databasedocument.cxx?r1=1.8.2.6&r2=1.8.2.7 Delta lines: +60 -37 --------------------- --- databasedocument.cxx 22 Feb 2005 10:07:20 -0000 1.8.2.6 +++ databasedocument.cxx 23 Feb 2005 10:17:47 -0000 1.8.2.7 @@ -2,9 +2,9 @@ * * $RCSfile: databasedocument.cxx,v $ * - * $Revision: 1.8.2.6 $ + * $Revision: 1.8.2.7 $ * - * last change: $Author: oj $ $Date: 2005/02/22 10:07:20 $ + * last change: $Author: oj $ $Date: 2005/02/23 10:17:47 $ * * The Contents of this file are made available subject to the terms of * either of the following licenses @@ -350,27 +350,29 @@ // ----------------------------------------------------------------------------- ::rtl::OUString SAL_CALL ODatabaseDocument::getURL( ) throw (RuntimeException) { + ::connectivity::checkDisposed(ODatabaseDocument_OfficeDocument::rBHelper.bDisposed); MutexGuard aGuard(m_pImpl->m_aMutex); return m_pImpl->m_sFileURL; } // ----------------------------------------------------------------------------- Sequence< PropertyValue > SAL_CALL ODatabaseDocument::getArgs( ) throw (RuntimeException) { + ::connectivity::checkDisposed(ODatabaseDocument_OfficeDocument::rBHelper.bDisposed); MutexGuard aGuard(m_pImpl->m_aMutex); return m_pImpl->m_aArgs; } // ----------------------------------------------------------------------------- void SAL_CALL ODatabaseDocument::connectController( const Reference< XController >& _xController ) throw (RuntimeException) { - MutexGuard aGuard(m_pImpl->m_aMutex); ::connectivity::checkDisposed(ODatabaseDocument_OfficeDocument::rBHelper.bDisposed); + MutexGuard aGuard(m_pImpl->m_aMutex); m_pImpl->m_aControllers.push_back(_xController); } // ----------------------------------------------------------------------------- void SAL_CALL ODatabaseDocument::disconnectController( const Reference< XController >& _xController ) throw (RuntimeException) { - MutexGuard aGuard(m_pImpl->m_aMutex); ::connectivity::checkDisposed(ODatabaseDocument_OfficeDocument::rBHelper.bDisposed); + MutexGuard aGuard(m_pImpl->m_aMutex); m_pImpl->m_aControllers.erase(::std::find(m_pImpl->m_aControllers.begin(),m_pImpl->m_aControllers.end(),_xController)); if ( m_pImpl->m_xCurrentController == _xController ) m_pImpl->m_xCurrentController = NULL; @@ -380,43 +382,48 @@ // ----------------------------------------------------------------------------- void SAL_CALL ODatabaseDocument::lockControllers( ) throw (RuntimeException) { - MutexGuard aGuard(m_pImpl->m_aMutex); ::connectivity::checkDisposed(ODatabaseDocument_OfficeDocument::rBHelper.bDisposed); + MutexGuard aGuard(m_pImpl->m_aMutex); ++m_pImpl->m_nControllerLockCount; } // ----------------------------------------------------------------------------- void SAL_CALL ODatabaseDocument::unlockControllers( ) throw (RuntimeException) { - MutexGuard aGuard(m_pImpl->m_aMutex); ::connectivity::checkDisposed(ODatabaseDocument_OfficeDocument::rBHelper.bDisposed); + MutexGuard aGuard(m_pImpl->m_aMutex); + --m_pImpl->m_nControllerLockCount; } // ----------------------------------------------------------------------------- sal_Bool SAL_CALL ODatabaseDocument::hasControllersLocked( ) throw (RuntimeException) { - MutexGuard aGuard(m_pImpl->m_aMutex); ::connectivity::checkDisposed(ODatabaseDocument_OfficeDocument::rBHelper.bDisposed); + MutexGuard aGuard(m_pImpl->m_aMutex); + return m_pImpl->m_nControllerLockCount != 0; } // ----------------------------------------------------------------------------- Reference< XController > SAL_CALL ODatabaseDocument::getCurrentController() throw (RuntimeException) { - MutexGuard aGuard(m_pImpl->m_aMutex); ::connectivity::checkDisposed(ODatabaseDocument_OfficeDocument::rBHelper.bDisposed); + MutexGuard aGuard(m_pImpl->m_aMutex); + return m_pImpl->m_xCurrentController.is() ? m_pImpl->m_xCurrentController : ( m_pImpl->m_aControllers.empty() ? Reference< XController >() : *m_pImpl->m_aControllers.begin() ); } // ----------------------------------------------------------------------------- void SAL_CALL ODatabaseDocument::setCurrentController( const Reference< XController >& _xController ) throw (NoSuchElementException, RuntimeException) { - MutexGuard aGuard(m_pImpl->m_aMutex); ::connectivity::checkDisposed(ODatabaseDocument_OfficeDocument::rBHelper.bDisposed); + MutexGuard aGuard(m_pImpl->m_aMutex); + m_pImpl->m_xCurrentController = _xController; } // ----------------------------------------------------------------------------- Reference< XInterface > SAL_CALL ODatabaseDocument::getCurrentSelection( ) throw (RuntimeException) { - MutexGuard aGuard(m_pImpl->m_aMutex); ::connectivity::checkDisposed(ODatabaseDocument_OfficeDocument::rBHelper.bDisposed); + MutexGuard aGuard(m_pImpl->m_aMutex); + Reference< XInterface > xRet; Reference< XSelectionSupplier > xDocView( getCurrentController(), UNO_QUERY ); @@ -430,29 +437,33 @@ // XStorable sal_Bool SAL_CALL ODatabaseDocument::hasLocation( ) throw (RuntimeException) { - MutexGuard aGuard(m_pImpl->m_aMutex); ::connectivity::checkDisposed(ODatabaseDocument_OfficeDocument::rBHelper.bDisposed); + MutexGuard aGuard(m_pImpl->m_aMutex); + return m_pImpl->m_sFileURL.getLength() != 0; } // ----------------------------------------------------------------------------- ::rtl::OUString SAL_CALL ODatabaseDocument::getLocation( ) throw (RuntimeException) { - MutexGuard aGuard(m_pImpl->m_aMutex); ::connectivity::checkDisposed(ODatabaseDocument_OfficeDocument::rBHelper.bDisposed); + MutexGuard aGuard(m_pImpl->m_aMutex); + return m_pImpl->m_sFileURL; } // ----------------------------------------------------------------------------- sal_Bool SAL_CALL ODatabaseDocument::isReadonly( ) throw (RuntimeException) { - MutexGuard aGuard(m_pImpl->m_aMutex); ::connectivity::checkDisposed(ODatabaseDocument_OfficeDocument::rBHelper.bDisposed); + MutexGuard aGuard(m_pImpl->m_aMutex); + return m_pImpl->m_bDocumentReadOnly; } // ----------------------------------------------------------------------------- void SAL_CALL ODatabaseDocument::store( ) throw (IOException, RuntimeException) { - MutexGuard aGuard(m_pImpl->m_aMutex); ::connectivity::checkDisposed(ODatabaseDocument_OfficeDocument::rBHelper.bDisposed); + MutexGuard aGuard(m_pImpl->m_aMutex); + store(m_pImpl->m_sFileURL,m_pImpl->m_aArgs); @@ -482,8 +493,9 @@ // ----------------------------------------------------------------------------- void SAL_CALL ODatabaseDocument::storeAsURL( const ::rtl::OUString& sURL, const Sequence< PropertyValue >& lArguments ) throw (IOException, RuntimeException) { - ClearableMutexGuard aGuard(m_pImpl->m_aMutex); ::connectivity::checkDisposed(ODatabaseDocument_OfficeDocument::rBHelper.bDisposed); + ClearableMutexGuard aGuard(m_pImpl->m_aMutex); + Reference<XSingleServiceFactory> xStorageFactory(m_pImpl->m_xServiceFactory->createInstance( ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("com.sun.star.embed.StorageFactory")) ),UNO_QUERY); if ( xStorageFactory.is() ) @@ -550,8 +562,9 @@ // ----------------------------------------------------------------------------- void SAL_CALL ODatabaseDocument::storeToURL( const ::rtl::OUString& sURL, const Sequence< PropertyValue >& lArguments ) throw (IOException, RuntimeException) { - MutexGuard aGuard(m_pImpl->m_aMutex); ::connectivity::checkDisposed(ODatabaseDocument_OfficeDocument::rBHelper.bDisposed); + MutexGuard aGuard(m_pImpl->m_aMutex); + Reference<XSingleServiceFactory> xStorageFactory(m_pImpl->m_xServiceFactory->createInstance( ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("com.sun.star.embed.StorageFactory")) ),UNO_QUERY); if ( xStorageFactory.is() ) { @@ -590,15 +603,17 @@ // XModifiable sal_Bool SAL_CALL ODatabaseDocument::isModified( ) throw (RuntimeException) { - MutexGuard aGuard(m_pImpl->m_aMutex); ::connectivity::checkDisposed(ODatabaseDocument_OfficeDocument::rBHelper.bDisposed); + MutexGuard aGuard(m_pImpl->m_aMutex); + return m_pImpl->m_bModified; } // ----------------------------------------------------------------------------- void SAL_CALL ODatabaseDocument::setModified( sal_Bool _bModified ) throw (PropertyVetoException, RuntimeException) { - ResettableMutexGuard _rGuard(m_pImpl->m_aMutex); ::connectivity::checkDisposed(ODatabaseDocument_OfficeDocument::rBHelper.bDisposed); + ResettableMutexGuard _rGuard(m_pImpl->m_aMutex); + if ( m_pImpl->m_bModified != _bModified ) { m_pImpl->m_bModified = _bModified; @@ -683,8 +698,9 @@ // ----------------------------------------------------------------------------- Reference< XNameAccess > SAL_CALL ODatabaseDocument::getFormDocuments( ) throw (RuntimeException) { - MutexGuard aGuard(m_pImpl->m_aMutex); ::connectivity::checkDisposed(ODatabaseDocument_OfficeDocument::rBHelper.bDisposed); + MutexGuard aGuard(m_pImpl->m_aMutex); + Reference< XNameAccess > xContainer = m_pImpl->m_xForms; if ( !xContainer.is() ) @@ -704,8 +720,9 @@ // ----------------------------------------------------------------------------- Reference< XNameAccess > SAL_CALL ODatabaseDocument::getReportDocuments( ) throw (RuntimeException) { - MutexGuard aGuard(m_pImpl->m_aMutex); ::connectivity::checkDisposed(ODatabaseDocument_OfficeDocument::rBHelper.bDisposed); + MutexGuard aGuard(m_pImpl->m_aMutex); + Reference< XNameAccess > xContainer = m_pImpl->m_xReports; if ( !xContainer.is() ) @@ -937,8 +954,9 @@ // ----------------------------------------------------------------------------- Reference< ::drafts::com::sun::star::ui::XUIConfigurationManager > SAL_CALL ODatabaseDocument::getUIConfigurationManager( ) throw (RuntimeException) { - MutexGuard aGuard(m_pImpl->m_aMutex); ::connectivity::checkDisposed(ODatabaseDocument_OfficeDocument::rBHelper.bDisposed); + MutexGuard aGuard(m_pImpl->m_aMutex); + if ( !m_xUIConfigurationManager.is() ) { m_xUIConfigurationManager = Reference< ::drafts::com::sun::star::ui::XUIConfigurationManager >( @@ -980,8 +998,9 @@ // ----------------------------------------------------------------------------- Reference< XStorage > SAL_CALL ODatabaseDocument::getDocumentSubStorage( const ::rtl::OUString& aStorageName, sal_Int32 nMode ) throw (RuntimeException) { - MutexGuard aGuard(m_pImpl->m_aMutex); ::connectivity::checkDisposed(ODatabaseDocument_OfficeDocument::rBHelper.bDisposed); + MutexGuard aGuard(m_pImpl->m_aMutex); + Reference< XStorage > xResult = m_pImpl->getStorage(aStorageName,this,nMode); if ( xResult.is() ) @@ -1133,6 +1152,7 @@ xComp->removeEventListener(this); } + m_pImpl->dispose(); m_pImpl->m_xModel.clear(); m_pImpl.clear(); } @@ -1209,6 +1229,8 @@ //------------------------------------------------------------------ void SAL_CALL ODatabaseDocument::commited( const ::com::sun::star::lang::EventObject& aEvent ) throw (::com::sun::star::uno::RuntimeException) { + if ( m_pImpl.is() ) + { ::osl::MutexGuard aGuard(m_pImpl->m_aMutex); TStorages::iterator aFind = m_pImpl->m_aStorages.find(::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("database"))); Reference<XStorage> xStorage(aEvent.Source,UNO_QUERY); @@ -1224,6 +1246,7 @@ { OSL_ENSURE(0,"Exception Caught: Could not store embedded database!"); } + } } } //------------------------------------------------------------------ Directory: /dba/dbaccess/source/ui/app/ ======================================= File [changed]: AppController.cxx Url: http://dba.openoffice.org/source/browse/dba/dbaccess/source/ui/app/AppController.cxx?r1=1.12.4.5&r2=1.12.4.6 Delta lines: +7 -5 ------------------- --- AppController.cxx 22 Feb 2005 08:56:31 -0000 1.12.4.5 +++ AppController.cxx 23 Feb 2005 10:17:48 -0000 1.12.4.6 @@ -2,9 +2,9 @@ * * $RCSfile: AppController.cxx,v $ * - * $Revision: 1.12.4.5 $ + * $Revision: 1.12.4.6 $ * - * last change: $Author: oj $ $Date: 2005/02/22 08:56:31 $ + * last change: $Author: oj $ $Date: 2005/02/23 10:17:48 $ * * The Contents of this file are made available subject to the terms of * either of the following licenses @@ -422,12 +422,15 @@ Reference < XFrame > xFrame; attachFrame( xFrame ); + if ( m_xDataSource.is() ) m_xDataSource->removePropertyChangeListener(::rtl::OUString(), this); + m_xDataSource = NULL; + Reference< XModifyBroadcaster > xBroadcaster(m_xModel, UNO_QUERY); if ( xBroadcaster.is() ) xBroadcaster->removeModifyListener(static_cast<XModifyListener*>(this)); - if ( m_xDataSource.is() && m_xModel.is() ) + if ( m_xModel.is() ) { ::rtl::OUString sUrl = m_xModel->getURL(); if ( sUrl.getLength() ) @@ -449,7 +452,6 @@ // forces the data source to reload } - m_xDataSource = NULL; m_xModel = NULL; } catch(Exception) --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
