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]
