User: vg Date: 05/03/10 08:38:33 Modified: /dba/dbaccess/source/filter/migration/ cfgimport.cxx
Log: INTEGRATION: CWS dba24 (1.4.28); FILE MERGED 2005/02/21 13:10:12 oj 1.4.28.2: RESYNC: (1.4-1.5); FILE MERGED 2005/02/18 13:11:50 oj 1.4.28.1: #i42460# changes for the separation of datasource and database document(model) File Changes: Directory: /dba/dbaccess/source/filter/migration/ ================================================= File [changed]: cfgimport.cxx Url: http://dba.openoffice.org/source/browse/dba/dbaccess/source/filter/migration/cfgimport.cxx?r1=1.5&r2=1.6 Delta lines: +25 -8 -------------------- --- cfgimport.cxx 17 Feb 2005 11:05:12 -0000 1.5 +++ cfgimport.cxx 10 Mar 2005 16:38:30 -0000 1.6 @@ -97,6 +97,12 @@ #ifndef _COM_SUN_STAR_SDBC_XDATASOURCE_HPP_ #include <com/sun/star/sdbc/XDataSource.hpp> #endif +#ifndef _COM_SUN_STAR_SDB_XOFFICEDATABASEDOCUMENT_HPP_ +#include <com/sun/star/sdb/XOfficeDatabaseDocument.hpp> +#endif +#ifndef _COM_SUN_STAR_SDB_XDOCUMENTDATASOURCE_HPP_ +#include <com/sun/star/sdb/XDocumentDataSource.hpp> +#endif #ifndef _URLOBJ_HXX //autogen wg. INetURLObject #include <tools/urlobj.hxx> #endif @@ -609,11 +615,16 @@ ::rtl::OUString sFileName; try { - m_xCurrentDS.set(m_xORB->createInstance(::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("com.sun.star.sdb.OfficeDatabaseDocument"))),UNO_QUERY); - Reference< XModel > xModel(m_xCurrentDS,UNO_QUERY); - if ( !xModel.is() ) + m_xModel.set(m_xORB->createInstance(::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("com.sun.star.sdb.OfficeDatabaseDocument"))),UNO_QUERY); + + if ( !m_xModel.is() ) return; + Reference<XOfficeDatabaseDocument> xOfficeDoc(m_xModel,UNO_QUERY); + if ( xOfficeDoc.is() ) + m_xCurrentDS.set(xOfficeDoc->getDataSource(),UNO_QUERY); + + INetURLObject aURL(rsWorkPath,INetURLObject::WAS_ENCODED); aURL.insertName(_sName,false,INetURLObject::LAST_SEGMENT,true,INetURLObject::ENCODE_ALL); aURL.setExtension(sExtension); @@ -630,7 +641,7 @@ sFileName = aURL.GetMainURL(INetURLObject::NO_DECODE); } - xModel->attachResource(sFileName,Sequence<PropertyValue>()); + m_xModel->attachResource(sFileName,Sequence<PropertyValue>()); } catch(Exception&) { @@ -730,7 +741,12 @@ { Reference< XNameAccess > xDatabaseContext(m_xORB->createInstance(SERVICE_SDB_DATABASECONTEXT), UNO_QUERY); if ( xDatabaseContext.is() && xDatabaseContext->hasByName(m_sCurrentDataSourceName) ) + { m_xCurrentDS.set(xDatabaseContext->getByName(m_sCurrentDataSourceName),UNO_QUERY); + Reference<XDocumentDataSource> xDocumentDataSource(m_xCurrentDS,UNO_QUERY); + if ( xDocumentDataSource.is() ) + m_xModel.set(xDocumentDataSource->getDatabaseDocument(),UNO_QUERY); + } } if ( !m_xCurrentDS.is() ) createDataSource(m_sCurrentDataSourceName); @@ -820,7 +836,7 @@ case DATASOURCE: { setProperties(); - Reference<XStorable> xStr(m_xCurrentDS,UNO_QUERY); + Reference<XStorable> xStr(m_xModel,UNO_QUERY); if ( xStr.is() ) { xStr->store(); @@ -844,7 +860,8 @@ Reference< XNamingService>(xDatabaseContext,UNO_QUERY)->registerObject(sName,m_xCurrentDS); } } - ::comphelper::disposeComponent(m_xCurrentDS); + ::comphelper::disposeComponent(m_xModel); + m_xCurrentDS = NULL; } break; case DATASOURCESETTINGS: @@ -885,13 +902,13 @@ Reference<XNameAccess> xNames; if ( bForm ) { - Reference<XFormDocumentsSupplier> xSup(m_xCurrentDS,UNO_QUERY); + Reference<XFormDocumentsSupplier> xSup(m_xModel,UNO_QUERY); if ( xSup.is() ) xNames = xSup->getFormDocuments(); } else { - Reference<XReportDocumentsSupplier> xSup(m_xCurrentDS,UNO_QUERY); + Reference<XReportDocumentsSupplier> xSup(m_xModel,UNO_QUERY); if ( xSup.is() ) xNames = xSup->getReportDocuments(); } --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
