User: kz Date: 2008-03-05 18:06:36+0000 Modified: dba/reportdesign/source/filter/xml/xmlfilter.cxx
Log: INTEGRATION: CWS rptchart01_DEV300 (1.5.18); FILE MERGED 2008/02/19 09:22:50 oj 1.5.18.3: RESYNC: (1.5-1.6); FILE MERGED 2008/01/25 13:56:00 oj 1.5.18.2: #i85225# export master detail different now 2008/01/24 12:39:32 oj 1.5.18.1: #i85225# changes for chart File Changes: Directory: /dba/reportdesign/source/filter/xml/ =============================================== File [changed]: xmlfilter.cxx Url: http://dba.openoffice.org/source/browse/dba/reportdesign/source/filter/xml/xmlfilter.cxx?r1=1.6&r2=1.7 Delta lines: +63 -47 --------------------- --- xmlfilter.cxx 2008-01-29 13:46:23+0000 1.6 +++ xmlfilter.cxx 2008-03-05 18:06:34+0000 1.7 @@ -40,6 +40,7 @@ #ifndef _COM_SUN_STAR_EMBED_ELEMENTMODES_HPP_ #include <com/sun/star/embed/ElementModes.hpp> #endif +#include <com/sun/star/beans/NamedValue.hpp> #ifndef _COM_SUN_STAR_SDB_XOFFICEDATABASEDOCUMENT_HPP_ #include <com/sun/star/sdb/XOfficeDatabaseDocument.hpp> #endif @@ -298,6 +299,8 @@ const sal_Char* pStreamName, const sal_Char* pCompatibilityStreamName, const uno::Reference<XMultiServiceFactory> & rFactory, + const Reference< document::XGraphicObjectResolver > & _xGraphicObjectResolver, + const Reference<document::XEmbeddedObjectResolver>& _xEmbeddedObjectResolver, const ::rtl::OUString& _sFilterName) { DBG_ASSERT( xStorage.is(), "Need storage!"); @@ -342,15 +345,30 @@ return 1; // TODO/LATER: error handling } - - uno::Reference< XDocumentHandler > xFilter(rFactory->createInstance(_sFilterName),uno::UNO_QUERY); + sal_Int32 nArgs = 0; + if( _xGraphicObjectResolver.is()) + nArgs++; + if( _xEmbeddedObjectResolver.is()) + nArgs++; + + uno::Sequence< uno::Any > aFilterCompArgs( nArgs ); + + nArgs = 0; + if( _xGraphicObjectResolver.is()) + aFilterCompArgs[nArgs++] <<= _xGraphicObjectResolver; + if( _xEmbeddedObjectResolver.is()) + aFilterCompArgs[ nArgs++ ] <<= _xEmbeddedObjectResolver; + + Reference< xml::sax::XDocumentHandler > xDocHandler( + rFactory->createInstanceWithArguments( _sFilterName, aFilterCompArgs ), + uno::UNO_QUERY_THROW ); uno::Reference< XInputStream > xInputStream = xDocStream->getInputStream(); // read from the stream return ReadThroughComponent( xInputStream ,xModelComponent ,pStreamName ,rFactory - ,xFilter + ,xDocHandler ,bEncrypted ); } @@ -560,13 +578,32 @@ if ( !m_xReportDefinition.is() ) return sal_False; - //m_pReportModel = reportdesign::OReportDefinition::getSdrModel(m_xReportDefinition); - //if ( !m_pReportModel ) - // return sal_False; - - //if ( !xNumberFormatsSupplier.is() ) - // xNumberFormatsSupplier = OXMLHelper::GetNumberFormatsSupplier(m_xReportDefinition); - //SetNumberFormatsSupplier(xNumberFormatsSupplier); +#if OSL_DEBUG_LEVEL > 1 + uno::Reference < container::XNameAccess > xAccess( xStorage, uno::UNO_QUERY ); + uno::Sequence< ::rtl::OUString> aSeq = xAccess->getElementNames(); + const ::rtl::OUString* pIter = aSeq.getConstArray(); + const ::rtl::OUString* pEnd = pIter + aSeq.getLength(); + for(;pIter != pEnd;++pIter) + { + (void)*pIter; + } +#endif + + Reference< document::XGraphicObjectResolver > xGraphicObjectResolver; + uno::Reference<document::XEmbeddedObjectResolver> xEmbeddedObjectResolver; + uno::Reference< lang::XMultiServiceFactory > xServiceFactory( getServiceFactory(), uno::UNO_QUERY); + if( xServiceFactory.is()) + { + uno::Sequence< uno::Any > aArgs(1); + aArgs[0] <<= xStorage; + xGraphicObjectResolver.set( + xServiceFactory->createInstanceWithArguments( + ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("com.sun.star.comp.Svx.GraphicImportHelper")), aArgs ), uno::UNO_QUERY ); + + uno::Reference< lang::XMultiServiceFactory > xReportServiceFactory( m_xReportDefinition, uno::UNO_QUERY); + aArgs[0] <<= beans::NamedValue(::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("Storage")),uno::makeAny(xStorage)); + xEmbeddedObjectResolver.set( xReportServiceFactory->createInstanceWithArguments(::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("com.sun.star.document.ImportEmbeddedObjectResolver")),aArgs) , uno::UNO_QUERY); + } uno::Reference<XComponent> xModel(GetModel(),UNO_QUERY); @@ -575,12 +612,19 @@ ,"settings.xml" ,"Settings.xml" ,getServiceFactory() + ,xGraphicObjectResolver + ,xEmbeddedObjectResolver ,SERVICE_SETTINGSIMPORTER ); if ( nRet == 0 ) - nRet = ReadThroughComponent( - xStorage, xModel, "styles.xml", "Styles.xml", getServiceFactory(), - SERVICE_STYLESIMPORTER ); + nRet = ReadThroughComponent(xStorage + ,xModel + ,"styles.xml" + ,"Styles.xml" + ,getServiceFactory() + ,xGraphicObjectResolver + ,xEmbeddedObjectResolver + ,SERVICE_STYLESIMPORTER ); if ( nRet == 0 ) nRet = ReadThroughComponent( xStorage @@ -588,6 +632,8 @@ ,"content.xml" ,"Content.xml" ,getServiceFactory() + ,xGraphicObjectResolver + ,xEmbeddedObjectResolver ,SERVICE_CONTENTIMPORTER ); @@ -710,46 +756,14 @@ const SvXMLTokenMap& ORptFilter::GetReportElemTokenMap() const { if ( !m_pReportElemTokenMap.get() ) - { - static __FAR_DATA SvXMLTokenMapEntry aElemTokenMap[]= - { - { XML_NAMESPACE_REPORT, XML_REPORT_HEADER, XML_TOK_REPORT_HEADER }, - { XML_NAMESPACE_REPORT, XML_PAGE_HEADER , XML_TOK_PAGE_HEADER }, - { XML_NAMESPACE_REPORT, XML_GROUP, XML_TOK_GROUP }, - { XML_NAMESPACE_REPORT, XML_DETAIL , XML_TOK_DETAIL }, - { XML_NAMESPACE_REPORT, XML_PAGE_FOOTER , XML_TOK_PAGE_FOOTER }, - { XML_NAMESPACE_REPORT, XML_REPORT_FOOTER, XML_TOK_REPORT_FOOTER }, - { XML_NAMESPACE_REPORT, XML_HEADER_ON_NEW_PAGE, XML_TOK_HEADER_ON_NEW_PAGE }, - { XML_NAMESPACE_REPORT, XML_FOOTER_ON_NEW_PAGE, XML_TOK_FOOTER_ON_NEW_PAGE }, - { XML_NAMESPACE_REPORT, XML_COMMAND_TYPE, XML_TOK_COMMAND_TYPE }, - { XML_NAMESPACE_REPORT, XML_COMMAND, XML_TOK_COMMAND }, - { XML_NAMESPACE_REPORT, XML_FILTER, XML_TOK_FILTER }, - { XML_NAMESPACE_REPORT, XML_CAPTION, XML_TOK_CAPTION }, - { XML_NAMESPACE_REPORT, XML_ESCAPE_PROCESSING, XML_TOK_ESCAPE_PROCESSING }, - { XML_NAMESPACE_REPORT, XML_FUNCTION, XML_TOK_REPORT_FUNCTION }, - { XML_NAMESPACE_OFFICE, XML_MIMETYPE, XML_TOK_REPORT_MIMETYPE }, - { XML_NAMESPACE_DRAW, XML_NAME, XML_TOK_REPORT_NAME }, - XML_TOKEN_MAP_END - }; - m_pReportElemTokenMap.reset(new SvXMLTokenMap( aElemTokenMap )); - } + m_pReportElemTokenMap.reset(OXMLHelper::GetReportElemTokenMap()); return *m_pReportElemTokenMap; } // ----------------------------------------------------------------------------- const SvXMLTokenMap& ORptFilter::GetSubDocumentElemTokenMap() const { if ( !m_pSubDocumentElemTokenMap.get() ) - { - static __FAR_DATA SvXMLTokenMapEntry aElemTokenMap[]= - { - { XML_NAMESPACE_REPORT, XML_MASTER_DETAIL_FIELDS, XML_TOK_MASTER_DETAIL_FIELDS}, - { XML_NAMESPACE_REPORT, XML_MASTER_DETAIL_FIELD, XML_TOK_MASTER_DETAIL_FIELD}, - { XML_NAMESPACE_REPORT, XML_MASTER, XML_TOK_MASTER}, - { XML_NAMESPACE_REPORT, XML_DETAIL, XML_TOK_SUB_DETAIL}, - XML_TOKEN_MAP_END - }; - m_pSubDocumentElemTokenMap.reset(new SvXMLTokenMap( aElemTokenMap )); - } + m_pSubDocumentElemTokenMap.reset(OXMLHelper::GetSubDocumentElemTokenMap()); return *m_pSubDocumentElemTokenMap; } // ----------------------------------------------------------------------------- @@ -952,6 +966,7 @@ { XML_NAMESPACE_REPORT, XML_IMAGE , XML_TOK_IMAGE }, { XML_NAMESPACE_REPORT, XML_SUB_DOCUMENT , XML_TOK_SUB_DOCUMENT }, { XML_NAMESPACE_DRAW, XML_CUSTOM_SHAPE , XML_TOK_CUSTOM_SHAPE }, + { XML_NAMESPACE_DRAW, XML_FRAME , XML_TOK_FRAME }, { XML_NAMESPACE_TEXT, XML_PAGE_NUMBER , XML_TOK_PAGE_NUMBER }, { XML_NAMESPACE_TEXT, XML_PAGE_COUNT , XML_TOK_PAGE_COUNT }, { XML_NAMESPACE_TEXT, XML_TAB , XML_TOK_TEXT_TAB_STOP }, @@ -1049,6 +1064,7 @@ //uno::Reference< util::XNumberFormatsSupplier > xNumberFormatsSupplier = OXMLHelper::GetNumberFormatsSupplier(m_xReportDefinition); //if ( xNumberFormatsSupplier.is() ) // SetNumberFormatsSupplier(xNumberFormatsSupplier); + SvXMLImport::startDocument(); } } // ----------------------------------------------------------------------------- --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
