User: rt      
Date: 2008-09-04 07:07:06+0000
Modified:
   dba/dbaccess/source/filter/xml/dbloader2.cxx

Log:
 INTEGRATION: CWS mav38_DEV300 (1.36.24); FILE MERGED
 2008/09/01 10:28:38 mav 1.36.24.1: #i93288# let database application open the 
stream itself for now

File Changes:

Directory: /dba/dbaccess/source/filter/xml/
===========================================

File [changed]: dbloader2.cxx
Url: 
http://dba.openoffice.org/source/browse/dba/dbaccess/source/filter/xml/dbloader2.cxx?r1=1.37&r2=1.38
Delta lines:  +18 -1
--------------------
--- dbloader2.cxx       2008-08-18 13:21:55+0000        1.37
+++ dbloader2.cxx       2008-09-04 07:07:03+0000        1.38
@@ -143,16 +143,19 @@
        try
        {
         ::comphelper::NamedValueCollection aMedia( Descriptor );
+        sal_Bool bStreamFromDescr = sal_False;
+        ::rtl::OUString sURL = aMedia.getOrDefault( "URL", ::rtl::OUString() );
+
                Reference< XInputStream > xInStream( aMedia.getOrDefault( 
"InputStream",  Reference< XInputStream >() ) );
                Reference< XPropertySet > xStorageProperties;
                if ( xInStream.is() )
                {
+            bStreamFromDescr = sal_True;
                        xStorageProperties.set( 
::comphelper::OStorageHelper::GetStorageFromInputStream(
                 xInStream, m_aContext.getLegacyServiceFactory() ), UNO_QUERY );
                }
                else
                {
-            ::rtl::OUString sURL = aMedia.getOrDefault( "URL", 
::rtl::OUString() );
             ::rtl::OUString sSalvagedURL( aMedia.getOrDefault( "SalvagedFile", 
::rtl::OUString() ) );
 
             ::rtl::OUString sFileLocation( sSalvagedURL.getLength() ? 
sSalvagedURL : sURL );
@@ -168,7 +171,21 @@
                        ::rtl::OUString sMediaType;
                        xStorageProperties->getPropertyValue( INFO_MEDIATYPE ) 
>>= sMediaType;
                        if ( 
sMediaType.equalsAscii(MIMETYPE_OASIS_OPENDOCUMENT_DATABASE_ASCII) || 
sMediaType.equalsAscii(MIMETYPE_VND_SUN_XML_BASE_ASCII) )
+            {
+                if ( bStreamFromDescr && sURL.compareTo( ::rtl::OUString( 
RTL_CONSTASCII_USTRINGPARAM( "private:stream" ) ), 14 ) != COMPARE_EQUAL );
+                {
+                    // After fixing of the i88522 issue ( use the new file 
locking for database files ) the stream from the type detection can be used 
further
+                    // for now the file should be reopened to have read/write 
access
+                    aMedia.remove( ::rtl::OUString( 
RTL_CONSTASCII_USTRINGPARAM( "InputStream" ) ) );
+                    aMedia >>= Descriptor;
+                    try {
+                        if ( xInStream.is() )
+                            xInStream->closeInput();
+                    } catch( Exception& ) {}
+                }
+
                                return 
::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("StarBase"));
+            }
                        ::comphelper::disposeComponent(xStorageProperties);
                }
        } catch(Exception&){}




---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to