diff options
author | Noel Grandin <noel.grandin@collabora.co.uk> | 2022-02-07 11:12:45 +0200 |
---|---|---|
committer | Noel Grandin <noel.grandin@collabora.co.uk> | 2022-02-07 11:21:24 +0100 |
commit | 372f5902200b46edd794c865f6d316a4a32d9cc6 (patch) | |
tree | 920c1d893a6b2736b15787d007c3a65ab101b3b1 /chart2/source/model | |
parent | 32c946c064cc2889bda2f46c1862e5100f0a257a (diff) |
crashtesting ooo#20372
this reverts parts of the "use more concrete types in chart2,
LabeledDataSequence" commits, since writer uses it's own implementation
of the XLabeledDataSequence UNO interface
Change-Id: Icc2c5e9a38f789cddd9fbca63301397ce759fbff
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/129587
Tested-by: Jenkins
Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
Diffstat (limited to 'chart2/source/model')
-rw-r--r-- | chart2/source/model/main/DataSeries.cxx | 10 | ||||
-rw-r--r-- | chart2/source/model/template/BubbleDataInterpreter.cxx | 30 | ||||
-rw-r--r-- | chart2/source/model/template/ChartTypeTemplate.cxx | 2 | ||||
-rw-r--r-- | chart2/source/model/template/DataInterpreter.cxx | 26 | ||||
-rw-r--r-- | chart2/source/model/template/StockDataInterpreter.cxx | 6 | ||||
-rw-r--r-- | chart2/source/model/template/XYDataInterpreter.cxx | 28 |
6 files changed, 49 insertions, 53 deletions
diff --git a/chart2/source/model/main/DataSeries.cxx b/chart2/source/model/main/DataSeries.cxx index 4b10f5ef06bb..b932a7b06578 100644 --- a/chart2/source/model/main/DataSeries.cxx +++ b/chart2/source/model/main/DataSeries.cxx @@ -298,13 +298,13 @@ Reference< beans::XPropertySet > { Reference< beans::XPropertySet > xResult; - std::vector< rtl::Reference< LabeledDataSequence > > aSequences; + std::vector< uno::Reference< chart2::data::XLabeledDataSequence > > aSequences; { MutexGuard aGuard( m_aMutex ); aSequences = m_aDataSequences; } - std::vector< rtl::Reference< LabeledDataSequence > > aValuesSeries( + std::vector< uno::Reference< chart2::data::XLabeledDataSequence > > aValuesSeries( DataSeriesHelper::getAllDataSequencesByRole( aSequences , "values" ) ); if (aValuesSeries.empty()) @@ -392,9 +392,7 @@ void SAL_CALL DataSeries::setData( const uno::Sequence< Reference< chart2::data: std::swap( aOldDataSequences, m_aDataSequences ); for (const auto & i : aData) { - auto p = dynamic_cast<LabeledDataSequence*>(i.get()); - assert(p); - aNewDataSequences.push_back(p); + aNewDataSequences.push_back(i); } m_aDataSequences = aNewDataSequences; } @@ -403,7 +401,7 @@ void SAL_CALL DataSeries::setData( const uno::Sequence< Reference< chart2::data: fireModifyEvent(); } -void DataSeries::setData( const std::vector< rtl::Reference< LabeledDataSequence > >& aData ) +void DataSeries::setData( const std::vector< uno::Reference< chart2::data::XLabeledDataSequence > >& aData ) { tDataSequenceContainer aOldDataSequences; tDataSequenceContainer aNewDataSequences; diff --git a/chart2/source/model/template/BubbleDataInterpreter.cxx b/chart2/source/model/template/BubbleDataInterpreter.cxx index 84b51b4dcd74..b15e3eb80b73 100644 --- a/chart2/source/model/template/BubbleDataInterpreter.cxx +++ b/chart2/source/model/template/BubbleDataInterpreter.cxx @@ -53,13 +53,13 @@ InterpretedData BubbleDataInterpreter::interpretDataSource( if( ! xSource.is()) return InterpretedData(); - std::vector< rtl::Reference< LabeledDataSequence > > aData = DataInterpreter::getDataSequences(xSource); + std::vector< uno::Reference< chart2::data::XLabeledDataSequence > > aData = DataInterpreter::getDataSequences(xSource); - rtl::Reference< LabeledDataSequence > xValuesX; - vector< rtl::Reference< LabeledDataSequence > > aYValuesVector; - vector< rtl::Reference< LabeledDataSequence > > aSizeValuesVector; + uno::Reference< chart2::data::XLabeledDataSequence > xValuesX; + vector< uno::Reference< chart2::data::XLabeledDataSequence > > aYValuesVector; + vector< uno::Reference< chart2::data::XLabeledDataSequence > > aSizeValuesVector; - rtl::Reference< LabeledDataSequence > xCategories; + uno::Reference< chart2::data::XLabeledDataSequence > xCategories; bool bHasCategories = HasCategories( aArguments, aData ); bool bUseCategoriesAsX = UseCategoriesAsX( aArguments ); @@ -120,15 +120,16 @@ InterpretedData BubbleDataInterpreter::interpretDataSource( vector< Reference< XDataSeries > > aSeriesVec; aSeriesVec.reserve( aSizeValuesVector.size()); - rtl::Reference< LabeledDataSequence > xClonedXValues = xValuesX; + Reference< data::XLabeledDataSequence > xClonedXValues = xValuesX; + Reference< util::XCloneable > xCloneableX( xValuesX, uno::UNO_QUERY ); for( size_t nN = 0; nN < aSizeValuesVector.size(); ++nN, ++nSeriesIndex ) { - vector< rtl::Reference< LabeledDataSequence > > aNewData; + vector< uno::Reference< chart2::data::XLabeledDataSequence > > aNewData; if( xValuesX.is() ) { - if( nN > 0 ) - xClonedXValues = new LabeledDataSequence(*xValuesX); + if( nN > 0 && xCloneableX.is() ) + xClonedXValues.set( xCloneableX->createClone(), uno::UNO_QUERY ); aNewData.push_back( xClonedXValues ); } if( aYValuesVector.size() > nN ) @@ -164,18 +165,18 @@ InterpretedData BubbleDataInterpreter::reinterpretDataSeries( Reference< data::XDataSource > xSeriesSource( aSeries[i], uno::UNO_QUERY_THROW ); Sequence< Reference< data::XLabeledDataSequence > > aNewSequences; - rtl::Reference< LabeledDataSequence > xValuesSize( + uno::Reference< chart2::data::XLabeledDataSequence > xValuesSize( DataSeriesHelper::getDataSequenceByRole( xSeriesSource, "values-size" )); - rtl::Reference< LabeledDataSequence > xValuesY( + uno::Reference< chart2::data::XLabeledDataSequence > xValuesY( DataSeriesHelper::getDataSequenceByRole( xSeriesSource, "values-y" )); - rtl::Reference< LabeledDataSequence > xValuesX( + uno::Reference< chart2::data::XLabeledDataSequence > xValuesX( DataSeriesHelper::getDataSequenceByRole( xSeriesSource, "values-x" )); if( ! xValuesX.is() || ! xValuesY.is() || ! xValuesSize.is() ) { - vector< rtl::Reference< LabeledDataSequence > > aValueSeqVec( + vector< uno::Reference< chart2::data::XLabeledDataSequence > > aValueSeqVec( DataSeriesHelper::getAllDataSequencesByRole( xSeriesSource->getDataSequences(), "values" )); if( xValuesX.is()) @@ -236,8 +237,7 @@ InterpretedData BubbleDataInterpreter::reinterpretDataSeries( #if OSL_DEBUG_LEVEL > 0 && !defined NDEBUG for( auto const & j : aSeqs ) { - rtl::Reference< ::chart::LabeledDataSequence > j2 = dynamic_cast<LabeledDataSequence*>(j.get()); - assert( (j2 == xValuesY || j2 == xValuesX || j2 == xValuesSize) && "All sequences should be used" ); + assert( (j == xValuesY || j == xValuesX || j == xValuesSize) && "All sequences should be used" ); } #endif Reference< data::XDataSink > xSink( xSeriesSource, uno::UNO_QUERY_THROW ); diff --git a/chart2/source/model/template/ChartTypeTemplate.cxx b/chart2/source/model/template/ChartTypeTemplate.cxx index df4cb7d17c92..190741bb01a3 100644 --- a/chart2/source/model/template/ChartTypeTemplate.cxx +++ b/chart2/source/model/template/ChartTypeTemplate.cxx @@ -715,7 +715,7 @@ sal_Int32 ChartTypeTemplate::getAxisCountByDimension( sal_Int32 nDimension ) void ChartTypeTemplate::FillDiagram( const rtl::Reference< ::chart::Diagram >& xDiagram, const Sequence< Sequence< Reference< XDataSeries > > >& aSeriesSeq, - const rtl::Reference< LabeledDataSequence >& xCategories, + const uno::Reference< chart2::data::XLabeledDataSequence >& xCategories, const std::vector< rtl::Reference< ChartType > >& aOldChartTypesSeq ) { adaptDiagram( xDiagram ); diff --git a/chart2/source/model/template/DataInterpreter.cxx b/chart2/source/model/template/DataInterpreter.cxx index 6155fa7e7144..2496147cce57 100644 --- a/chart2/source/model/template/DataInterpreter.cxx +++ b/chart2/source/model/template/DataInterpreter.cxx @@ -68,9 +68,9 @@ InterpretedData DataInterpreter::interpretDataSource( lcl_ShowDataSource( xSource ); #endif - std::vector< rtl::Reference< LabeledDataSequence > > aData = getDataSequences(xSource); + std::vector< uno::Reference< chart2::data::XLabeledDataSequence > > aData = getDataSequences(xSource); - rtl::Reference< LabeledDataSequence > xCategories; + uno::Reference< chart2::data::XLabeledDataSequence > xCategories; vector< Reference< data::XLabeledDataSequence > > aSequencesVec; // check if we should use categories @@ -79,7 +79,7 @@ InterpretedData DataInterpreter::interpretDataSource( // parse data bool bCategoriesUsed = false; - for( rtl::Reference< LabeledDataSequence > const & labeledData : aData ) + for( uno::Reference< chart2::data::XLabeledDataSequence > const & labeledData : aData ) { try { @@ -140,10 +140,10 @@ InterpretedData DataInterpreter::interpretDataSource( lcl_ShowDataSource( xSource ); #endif - std::vector< rtl::Reference< LabeledDataSequence > > aData = getDataSequences(xSource); + std::vector< uno::Reference< chart2::data::XLabeledDataSequence > > aData = getDataSequences(xSource); - rtl::Reference< LabeledDataSequence > xCategories; - vector< rtl::Reference< LabeledDataSequence > > aSequencesVec; + uno::Reference< chart2::data::XLabeledDataSequence > xCategories; + vector< uno::Reference< chart2::data::XLabeledDataSequence > > aSequencesVec; // check if we should use categories @@ -151,7 +151,7 @@ InterpretedData DataInterpreter::interpretDataSource( // parse data bool bCategoriesUsed = false; - for( rtl::Reference< LabeledDataSequence > const & labeledData : aData ) + for( uno::Reference< chart2::data::XLabeledDataSequence > const & labeledData : aData ) { try { @@ -182,7 +182,7 @@ InterpretedData DataInterpreter::interpretDataSource( for (auto const& elem : aSequencesVec) { - std::vector< rtl::Reference< LabeledDataSequence > > aNewData { elem }; + std::vector< uno::Reference< chart2::data::XLabeledDataSequence > > aNewData { elem }; rtl::Reference< DataSeries > xSeries; if( nSeriesIndex < static_cast<sal_Int32>(aSeriesToReUse.size())) xSeries = aSeriesToReUse[nSeriesIndex]; @@ -437,7 +437,7 @@ bool DataInterpreter::HasCategories( bool DataInterpreter::HasCategories( const Sequence< beans::PropertyValue > & rArguments, - const std::vector< rtl::Reference< LabeledDataSequence > > & rData ) + const std::vector< uno::Reference< chart2::data::XLabeledDataSequence > > & rData ) { bool bHasCategories = false; @@ -473,15 +473,13 @@ css::uno::Sequence< OUString > SAL_CALL DataInterpreter::getSupportedServiceName return { "com.sun.star.chart2.DataInterpreter" }; } -std::vector< rtl::Reference< LabeledDataSequence > > DataInterpreter::getDataSequences( +std::vector< uno::Reference< chart2::data::XLabeledDataSequence > > DataInterpreter::getDataSequences( const css::uno::Reference< css::chart2::data::XDataSource >& xSource) { - std::vector< rtl::Reference< LabeledDataSequence > > aData; + std::vector< uno::Reference< chart2::data::XLabeledDataSequence > > aData; for (const Reference< data::XLabeledDataSequence > & rLDS : xSource->getDataSequences() ) { - auto pLDS = dynamic_cast<LabeledDataSequence*>(rLDS.get()); - assert(pLDS); - aData.push_back(pLDS); + aData.push_back(rLDS); } return aData; } diff --git a/chart2/source/model/template/StockDataInterpreter.cxx b/chart2/source/model/template/StockDataInterpreter.cxx index df7f6d7f70cc..f96084e06dae 100644 --- a/chart2/source/model/template/StockDataInterpreter.cxx +++ b/chart2/source/model/template/StockDataInterpreter.cxx @@ -52,8 +52,8 @@ InterpretedData StockDataInterpreter::interpretDataSource( if( ! xSource.is()) return InterpretedData(); - rtl::Reference< LabeledDataSequence > xCategories; - std::vector< rtl::Reference< LabeledDataSequence > > aData = DataInterpreter::getDataSequences(xSource); + uno::Reference< chart2::data::XLabeledDataSequence > xCategories; + std::vector< uno::Reference< chart2::data::XLabeledDataSequence > > aData = DataInterpreter::getDataSequences(xSource); const sal_Int32 nDataCount( aData.size()); // sub-type properties @@ -88,7 +88,7 @@ InterpretedData StockDataInterpreter::interpretDataSource( sal_Int32 nNumberOfGroups( bHasVolume ? 2 : 1 ); // sequences of data::XLabeledDataSequence per series per group - std::vector< std::vector< std::vector< rtl::Reference< LabeledDataSequence > > > > aSequences( nNumberOfGroups ); + std::vector< std::vector< std::vector< uno::Reference< chart2::data::XLabeledDataSequence > > > > aSequences( nNumberOfGroups ); const sal_Int32 nBarGroupIndex( 0 ); const sal_Int32 nCandleStickGroupIndex( nNumberOfGroups - 1 ); diff --git a/chart2/source/model/template/XYDataInterpreter.cxx b/chart2/source/model/template/XYDataInterpreter.cxx index 772963b7e29e..fb9d1d9c788b 100644 --- a/chart2/source/model/template/XYDataInterpreter.cxx +++ b/chart2/source/model/template/XYDataInterpreter.cxx @@ -54,19 +54,19 @@ InterpretedData XYDataInterpreter::interpretDataSource( if( ! xSource.is()) return InterpretedData(); - std::vector< rtl::Reference< LabeledDataSequence > > aData = DataInterpreter::getDataSequences(xSource); + std::vector< uno::Reference< chart2::data::XLabeledDataSequence > > aData = DataInterpreter::getDataSequences(xSource); - rtl::Reference< LabeledDataSequence > xValuesX; - vector< rtl::Reference< LabeledDataSequence > > aSequencesVec; + uno::Reference< chart2::data::XLabeledDataSequence > xValuesX; + vector< uno::Reference< chart2::data::XLabeledDataSequence > > aSequencesVec; - rtl::Reference< LabeledDataSequence > xCategories; + uno::Reference< chart2::data::XLabeledDataSequence > xCategories; bool bHasCategories = HasCategories( aArguments, aData ); bool bUseCategoriesAsX = UseCategoriesAsX( aArguments ); // parse data bool bCategoriesUsed = false; bool bSetXValues = aData.size()>1; - for( rtl::Reference< LabeledDataSequence > const & labelData : aData ) + for( uno::Reference< chart2::data::XLabeledDataSequence > const & labelData : aData ) { try { @@ -104,15 +104,16 @@ InterpretedData XYDataInterpreter::interpretDataSource( vector< Reference< XDataSeries > > aSeriesVec; aSeriesVec.reserve( aSequencesVec.size()); - rtl::Reference< LabeledDataSequence > xClonedXValues = xValuesX; + Reference< data::XLabeledDataSequence > xClonedXValues = xValuesX; + Reference< util::XCloneable > xCloneable( xValuesX, uno::UNO_QUERY ); sal_Int32 nSeriesIndex = 0; for (auto const& elem : aSequencesVec) { - vector< rtl::Reference< LabeledDataSequence > > aNewData; + vector< uno::Reference< chart2::data::XLabeledDataSequence > > aNewData; - if( nSeriesIndex ) - xClonedXValues = new LabeledDataSequence(*xValuesX); + if( nSeriesIndex && xCloneable.is() ) + xClonedXValues.set( xCloneable->createClone(), uno::UNO_QUERY ); if( xValuesX.is() ) aNewData.push_back( xClonedXValues ); @@ -149,15 +150,15 @@ InterpretedData XYDataInterpreter::reinterpretDataSeries( Sequence< Reference< data::XLabeledDataSequence > > aNewSequences; // values-y - rtl::Reference< LabeledDataSequence > xValuesY( + uno::Reference< chart2::data::XLabeledDataSequence > xValuesY( DataSeriesHelper::getDataSequenceByRole( xSeriesSource, "values-y" )); - rtl::Reference< LabeledDataSequence > xValuesX( + uno::Reference< chart2::data::XLabeledDataSequence > xValuesX( DataSeriesHelper::getDataSequenceByRole( xSeriesSource, "values-x" )); // re-use values-... as values-x/values-y if( ! xValuesX.is() || ! xValuesY.is()) { - vector< rtl::Reference< LabeledDataSequence > > aValueSeqVec( + vector< uno::Reference< chart2::data::XLabeledDataSequence > > aValueSeqVec( DataSeriesHelper::getAllDataSequencesByRole( xSeriesSource->getDataSequences(), "values" )); if( xValuesX.is()) @@ -200,8 +201,7 @@ InterpretedData XYDataInterpreter::reinterpretDataSeries( #ifdef DBG_UTIL for( auto const & j : aSeqs ) { - rtl::Reference< ::chart::LabeledDataSequence > j2 = dynamic_cast<LabeledDataSequence*>(j.get()); - SAL_WARN_IF((j2 == xValuesY || j2 == xValuesX), "chart2.template", "All sequences should be used" ); + SAL_WARN_IF((j == xValuesY || j == xValuesX), "chart2.template", "All sequences should be used" ); } #endif Reference< data::XDataSink > xSink( xSeriesSource, uno::UNO_QUERY_THROW ); |