[Libreoffice-commits] core.git: 2 commits - dbaccess/source

Miklos Vajna vmiklos at collabora.co.uk
Fri May 8 02:37:35 PDT 2015


 dbaccess/source/core/dataaccess/databasecontext.cxx |   10 +++++++++-
 dbaccess/source/filter/xml/xmlfilter.cxx            |    4 ++++
 2 files changed, 13 insertions(+), 1 deletion(-)

New commits:
commit a20d53afb97a278a16ad604cb65f107d33ab4fb9
Author: Miklos Vajna <vmiklos at collabora.co.uk>
Date:   Fri May 8 11:14:12 2015 +0200

    dbaccess: handle URL mark as StreamRelPath in ODatabaseContext
    
    With this, dbaccess can not only load .odb files, but also other ODF
    packages as well, as long as the URL's mark (the part after the "#")
    contains under what namespace the real .odb is.
    
    This will be used for embedding data source definitions into .odt
    documents by Writer in a bit.
    
    Change-Id: Ic1e922418c185fd6ec49d442a3419b80c9a6c76a

diff --git a/dbaccess/source/core/dataaccess/databasecontext.cxx b/dbaccess/source/core/dataaccess/databasecontext.cxx
index e4fb8e6..4e6c185 100644
--- a/dbaccess/source/core/dataaccess/databasecontext.cxx
+++ b/dbaccess/source/core/dataaccess/databasecontext.cxx
@@ -310,9 +310,15 @@ Reference< XInterface >  ODatabaseContext::getRegisteredObject(const OUString& _
     return loadObjectFromURL( _rName, sURL );
 }
 
-Reference< XInterface > ODatabaseContext::loadObjectFromURL(const OUString& _rName,const OUString& _sURL)
+Reference< XInterface > ODatabaseContext::loadObjectFromURL(const OUString& _rName,const OUString& rURL)
 {
+    OUString _sURL(rURL);
     INetURLObject aURL( _sURL );
+
+    OUString aMark = aURL.GetMark(INetURLObject::DECODE_WITH_CHARSET);
+    if (!aMark.isEmpty())
+        _sURL = aURL.GetURLNoMark();
+
     if ( aURL.GetProtocol() == INetProtocol::NotValid )
         throw NoSuchElementException( _rName, *this );
 
@@ -361,6 +367,8 @@ Reference< XInterface > ODatabaseContext::loadObjectFromURL(const OUString& _rNa
         aArgs.put( "URL", _sURL );
         aArgs.put( "MacroExecutionMode", MacroExecMode::USE_CONFIG );
         aArgs.put( "InteractionHandler", task::InteractionHandler::createWithParent(m_aContext, 0) );
+        if (!aMark.isEmpty())
+            aArgs.put("StreamRelPath", aMark);
 
         Sequence< PropertyValue > aResource( aArgs.getPropertyValues() );
         xLoad->load( aResource );
commit dbab26d1fdcc0891a0f3e098f10a5c98e328a48b
Author: Miklos Vajna <vmiklos at collabora.co.uk>
Date:   Fri May 8 11:13:27 2015 +0200

    dbaccess: handle StreamRelPath in ODBFilter::implImport()
    
    Change-Id: I8a4d21f8bef272a6cdb5a72da274e65516c36617

diff --git a/dbaccess/source/filter/xml/xmlfilter.cxx b/dbaccess/source/filter/xml/xmlfilter.cxx
index 4d2e8cc..60fd9f3 100644
--- a/dbaccess/source/filter/xml/xmlfilter.cxx
+++ b/dbaccess/source/filter/xml/xmlfilter.cxx
@@ -457,6 +457,10 @@ bool ODBFilter::implImport( const Sequence< PropertyValue >& rDescriptor )
             try
             {
                 xStorage.set(pMedium->GetStorage(false), UNO_QUERY_THROW);
+
+                OUString sStreamRelPath = aMediaDescriptor.getOrDefault("StreamRelPath", OUString());
+                if (!sStreamRelPath.isEmpty())
+                    xStorage = xStorage->openStorageElement(sStreamRelPath, embed::ElementModes::READ);
             }
             catch (const Exception&)
             {


More information about the Libreoffice-commits mailing list