include/xmloff/SchXMLImportHelper.hxx | 3 +++ reportdesign/source/filter/xml/xmlImportDocumentHandler.cxx | 10 +++------- xmloff/source/chart/SchXMLChartContext.cxx | 4 ++-- 3 files changed, 8 insertions(+), 9 deletions(-)
New commits: commit fc6d597a933f9ca71b479864b31682dac17724c3 Author: Caolán McNamara <caol...@redhat.com> AuthorDate: Tue Mar 29 20:28:37 2022 +0100 Commit: Caolán McNamara <caol...@redhat.com> CommitDate: Wed Mar 30 09:39:39 2022 +0200 Related: tdf#117162 use a marginally tidier but riskier fix for trunk Change-Id: I94a836d7424eb561af623fee9d3a7e6d307cf065 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/132287 Tested-by: Jenkins Reviewed-by: Caolán McNamara <caol...@redhat.com> diff --git a/chart2/Library_chartcore.mk b/chart2/Library_chartcore.mk index 1b2a4b79e1d6..a9a23159b436 100644 --- a/chart2/Library_chartcore.mk +++ b/chart2/Library_chartcore.mk @@ -56,7 +56,6 @@ $(eval $(call gb_Library_use_libraries,chartcore,\ ucbhelper \ utl \ vcl \ - xo \ )) $(eval $(call gb_Library_set_componentfile,chartcore,chart2/source/chartcore,services)) diff --git a/chart2/source/model/filter/XMLFilter.cxx b/chart2/source/model/filter/XMLFilter.cxx index 145d4e4a900b..0f061c66121b 100644 --- a/chart2/source/model/filter/XMLFilter.cxx +++ b/chart2/source/model/filter/XMLFilter.cxx @@ -32,7 +32,6 @@ #include <com/sun/star/beans/NamedValue.hpp> #include <com/sun/star/beans/PropertyAttribute.hpp> #include <com/sun/star/beans/XPropertySet.hpp> -#include <com/sun/star/chart2/XChartDocument.hpp> #include <com/sun/star/xml/sax/InputSource.hpp> #include <com/sun/star/xml/sax/Writer.hpp> #include <com/sun/star/lang/XMultiComponentFactory.hpp> @@ -50,7 +49,6 @@ #include <com/sun/star/document/GraphicStorageHandler.hpp> #include <tools/diagnose_ex.h> #include <sal/log.hxx> -#include <xmloff/SchXMLImportHelper.hxx> using namespace ::com::sun::star; @@ -450,14 +448,6 @@ ErrCode XMLFilter::impl_ImportStream( { try { - // tdf#117162 reportbuilder expects setDataProvider to be called before ctor - if (m_sDocumentHandler == "com.sun.star.comp.report.ImportDocumentHandler") - { - css::uno::Reference<css::chart2::XChartDocument> xChart(m_xTargetDoc, uno::UNO_QUERY); - if (xChart) - setDataProvider(xChart, OUString()); - } - uno::Sequence< uno::Any > aArgs{ uno::Any(beans::NamedValue("DocumentHandler", uno::Any(xFilter))), uno::Any(beans::NamedValue("Model", uno::Any(m_xTargetDoc))) diff --git a/reportdesign/source/filter/xml/xmlImportDocumentHandler.cxx b/reportdesign/source/filter/xml/xmlImportDocumentHandler.cxx index 963264436092..4e7fd13b47c7 100644 --- a/reportdesign/source/filter/xml/xmlImportDocumentHandler.cxx +++ b/reportdesign/source/filter/xml/xmlImportDocumentHandler.cxx @@ -343,13 +343,9 @@ void SAL_CALL ImportDocumentHandler::initialize( const uno::Sequence< uno::Any > m_xDatabaseDataProvider.set(m_xModel->getDataProvider(),uno::UNO_QUERY); if ( !m_xDatabaseDataProvider.is() ) { - static constexpr OUStringLiteral s_sDatabaseDataProvider = u"com.sun.star.chart2.data.DatabaseDataProvider"; - m_xDatabaseDataProvider.set(m_xContext->getServiceManager()->createInstanceWithContext(s_sDatabaseDataProvider - ,m_xContext),uno::UNO_QUERY_THROW); - m_xDatabaseDataProvider->setRowLimit(10); - - uno::Reference< chart2::data::XDataReceiver > xReceiver(m_xModel,uno::UNO_QUERY_THROW); - xReceiver->attachDataProvider(m_xDatabaseDataProvider); + // tdf#117162 reportbuilder needs the DataProvider to exist to progress further + setDataProvider(m_xModel, OUString()); + m_xDatabaseDataProvider.set(m_xModel->getDataProvider(), uno::UNO_QUERY_THROW); } m_aArguments = m_xDatabaseDataProvider->detectArguments(nullptr); commit 78f7bd90b96ac168fdacd1e0cb0693ab3861872a Author: Caolán McNamara <caol...@redhat.com> AuthorDate: Tue Mar 29 20:04:53 2022 +0100 Commit: Caolán McNamara <caol...@redhat.com> CommitDate: Wed Mar 30 09:39:22 2022 +0200 Resolves: tdf#117162 ImportDocumentHandler expects data provider to exist already in its ctor which changed since... commit 9009663deb8f0862f419fd99bf0b761c7f923eff Date: Sun Feb 26 22:48:06 2017 +0100 tdf#83257 [API-CHANGE] Pivot chart implementation which defers it, take a probably safely backportable approach here to fix it. Change-Id: I1863791af7ae737f337993833a9cf1429a3a8028 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/132286 Tested-by: Jenkins Reviewed-by: Caolán McNamara <caol...@redhat.com> diff --git a/chart2/Library_chartcore.mk b/chart2/Library_chartcore.mk index a9a23159b436..1b2a4b79e1d6 100644 --- a/chart2/Library_chartcore.mk +++ b/chart2/Library_chartcore.mk @@ -56,6 +56,7 @@ $(eval $(call gb_Library_use_libraries,chartcore,\ ucbhelper \ utl \ vcl \ + xo \ )) $(eval $(call gb_Library_set_componentfile,chartcore,chart2/source/chartcore,services)) diff --git a/chart2/source/model/filter/XMLFilter.cxx b/chart2/source/model/filter/XMLFilter.cxx index 0f061c66121b..145d4e4a900b 100644 --- a/chart2/source/model/filter/XMLFilter.cxx +++ b/chart2/source/model/filter/XMLFilter.cxx @@ -32,6 +32,7 @@ #include <com/sun/star/beans/NamedValue.hpp> #include <com/sun/star/beans/PropertyAttribute.hpp> #include <com/sun/star/beans/XPropertySet.hpp> +#include <com/sun/star/chart2/XChartDocument.hpp> #include <com/sun/star/xml/sax/InputSource.hpp> #include <com/sun/star/xml/sax/Writer.hpp> #include <com/sun/star/lang/XMultiComponentFactory.hpp> @@ -49,6 +50,7 @@ #include <com/sun/star/document/GraphicStorageHandler.hpp> #include <tools/diagnose_ex.h> #include <sal/log.hxx> +#include <xmloff/SchXMLImportHelper.hxx> using namespace ::com::sun::star; @@ -448,6 +450,14 @@ ErrCode XMLFilter::impl_ImportStream( { try { + // tdf#117162 reportbuilder expects setDataProvider to be called before ctor + if (m_sDocumentHandler == "com.sun.star.comp.report.ImportDocumentHandler") + { + css::uno::Reference<css::chart2::XChartDocument> xChart(m_xTargetDoc, uno::UNO_QUERY); + if (xChart) + setDataProvider(xChart, OUString()); + } + uno::Sequence< uno::Any > aArgs{ uno::Any(beans::NamedValue("DocumentHandler", uno::Any(xFilter))), uno::Any(beans::NamedValue("Model", uno::Any(m_xTargetDoc))) diff --git a/include/xmloff/SchXMLImportHelper.hxx b/include/xmloff/SchXMLImportHelper.hxx index bec8167fe7a0..446b07387f29 100644 --- a/include/xmloff/SchXMLImportHelper.hxx +++ b/include/xmloff/SchXMLImportHelper.hxx @@ -21,6 +21,7 @@ #include <com/sun/star/uno/Reference.hxx> #include <salhelper/simplereferenceobject.hxx> +#include <xmloff/dllapi.h> #include <xmloff/families.hxx> namespace com::sun::star::chart { class XChartDocument; } @@ -107,6 +108,8 @@ public: const css::uno::Reference< css::chart2::XChartDocument > & xDoc ); }; +XMLOFF_DLLPUBLIC void setDataProvider(css::uno::Reference<css::chart2::XChartDocument> const & xChartDoc, OUString const & sDataPilotSource); + #endif // INCLUDED_XMLOFF_SCHXMLIMPORTHELPER_HXX /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/xmloff/source/chart/SchXMLChartContext.cxx b/xmloff/source/chart/SchXMLChartContext.cxx index 51a7e1f05d93..331a928feb97 100644 --- a/xmloff/source/chart/SchXMLChartContext.cxx +++ b/xmloff/source/chart/SchXMLChartContext.cxx @@ -244,7 +244,7 @@ static bool lcl_hasServiceName(Reference<lang::XMultiServiceFactory> const & xFa return std::find(aServiceNames.begin(), aServiceNames.end(), rServiceName) != aServiceNames.end(); } -static void lcl_setDataProvider(uno::Reference<chart2::XChartDocument> const & xChartDoc, OUString const & sDataPilotSource) +void setDataProvider(uno::Reference<chart2::XChartDocument> const & xChartDoc, OUString const & sDataPilotSource) { if (!xChartDoc.is()) return; @@ -392,7 +392,7 @@ void SchXMLChartContext::startFastElement( sal_Int32 /*nElement*/, uno::Reference<chart::XChartDocument> xDoc = mrImportHelper.GetChartDocument(); uno::Reference<chart2::XChartDocument> xNewDoc(xDoc, uno::UNO_QUERY); - lcl_setDataProvider(xNewDoc, msDataPilotSource); + setDataProvider(xNewDoc, msDataPilotSource); if( aOldChartTypeName.isEmpty() ) {