diff options
Diffstat (limited to 'chart2/source/model/template/BubbleDataInterpreter.cxx')
-rw-r--r-- | chart2/source/model/template/BubbleDataInterpreter.cxx | 133 |
1 files changed, 60 insertions, 73 deletions
diff --git a/chart2/source/model/template/BubbleDataInterpreter.cxx b/chart2/source/model/template/BubbleDataInterpreter.cxx index 3078d3590a42..8157fdcfb0fe 100644 --- a/chart2/source/model/template/BubbleDataInterpreter.cxx +++ b/chart2/source/model/template/BubbleDataInterpreter.cxx @@ -17,17 +17,19 @@ * the License at http://www.apache.org/licenses/LICENSE-2.0 . */ +#include <sal/config.h> + +#include <cstddef> + #include "BubbleDataInterpreter.hxx" #include <DataSeries.hxx> #include <DataSeriesHelper.hxx> #include <CommonConverters.hxx> -#include <com/sun/star/chart2/data/XDataSink.hpp> #include <com/sun/star/util/XCloneable.hpp> -#include <tools/diagnose_ex.h> +#include <comphelper/diagnose_ex.hxx> using namespace ::com::sun::star; using namespace ::com::sun::star::chart2; -using namespace ::std; using ::com::sun::star::uno::Reference; using ::com::sun::star::uno::Sequence; @@ -35,8 +37,7 @@ using ::com::sun::star::uno::Sequence; namespace chart { -BubbleDataInterpreter::BubbleDataInterpreter() : - DataInterpreter() +BubbleDataInterpreter::BubbleDataInterpreter() { } @@ -45,25 +46,25 @@ BubbleDataInterpreter::~BubbleDataInterpreter() } // ____ XDataInterpreter ____ -chart2::InterpretedData SAL_CALL BubbleDataInterpreter::interpretDataSource( +InterpretedData BubbleDataInterpreter::interpretDataSource( const Reference< chart2::data::XDataSource >& xSource, const Sequence< beans::PropertyValue >& aArguments, - const Sequence< Reference< XDataSeries > >& aSeriesToReUse ) + const std::vector< rtl::Reference< DataSeries > >& aSeriesToReUse ) { if( ! xSource.is()) return InterpretedData(); - Sequence< Reference< data::XLabeledDataSequence > > aData( xSource->getDataSequences() ); + std::vector< uno::Reference< chart2::data::XLabeledDataSequence > > aData = DataInterpreter::getDataSequences(xSource); - Reference< data::XLabeledDataSequence > xValuesX; - vector< Reference< data::XLabeledDataSequence > > aYValuesVector; - vector< Reference< data::XLabeledDataSequence > > aSizeValuesVector; + uno::Reference< chart2::data::XLabeledDataSequence > xValuesX; + std::vector< uno::Reference< chart2::data::XLabeledDataSequence > > aYValuesVector; + std::vector< uno::Reference< chart2::data::XLabeledDataSequence > > aSizeValuesVector; - Reference< data::XLabeledDataSequence > xCategories; + uno::Reference< chart2::data::XLabeledDataSequence > xCategories; bool bHasCategories = HasCategories( aArguments, aData ); bool bUseCategoriesAsX = UseCategoriesAsX( aArguments ); - sal_Int32 nDataSeqCount = aData.getLength(); + sal_Int32 nDataSeqCount = aData.size(); bool bSetXValues = bHasCategories ? ( (nDataSeqCount-1) > 2 && (nDataSeqCount-1) % 2 != 0 ) :( nDataSeqCount > 2 && nDataSeqCount % 2 != 0 ); @@ -76,10 +77,10 @@ chart2::InterpretedData SAL_CALL BubbleDataInterpreter::interpretDataSource( { if( bHasCategories && !bCategoriesUsed ) { - xCategories.set( aData[nDataIdx] ); + xCategories = aData[nDataIdx]; if( xCategories.is()) { - SetRole( xCategories->getValues(), "categories"); + SetRole( xCategories->getValues(), u"categories"_ustr); if( bUseCategoriesAsX ) { bSetXValues = false; @@ -90,22 +91,22 @@ chart2::InterpretedData SAL_CALL BubbleDataInterpreter::interpretDataSource( } else if( !xValuesX.is() && bSetXValues ) { - xValuesX.set( aData[nDataIdx] ); + xValuesX = aData[nDataIdx]; if( xValuesX.is()) - SetRole( xValuesX->getValues(), "values-x"); + SetRole( xValuesX->getValues(), u"values-x"_ustr); } else if( bNextIsYValues ) { aYValuesVector.push_back( aData[nDataIdx] ); if( aData[nDataIdx].is()) - SetRole( aData[nDataIdx]->getValues(), "values-y"); + SetRole( aData[nDataIdx]->getValues(), u"values-y"_ustr); bNextIsYValues = false; } else if( !bNextIsYValues ) { aSizeValuesVector.push_back( aData[nDataIdx] ); if( aData[nDataIdx].is()) - SetRole( aData[nDataIdx]->getValues(), "values-size"); + SetRole( aData[nDataIdx]->getValues(), u"values-size"_ustr); bNextIsYValues = (nDataSeqCount-(nDataIdx+1)) >= 2;//two or more left } } @@ -116,8 +117,8 @@ chart2::InterpretedData SAL_CALL BubbleDataInterpreter::interpretDataSource( } // create DataSeries - sal_Int32 nSeriesIndex = 0; - vector< Reference< XDataSeries > > aSeriesVec; + std::size_t nSeriesIndex = 0; + std::vector< rtl::Reference< DataSeries > > aSeriesVec; aSeriesVec.reserve( aSizeValuesVector.size()); Reference< data::XLabeledDataSequence > xClonedXValues = xValuesX; @@ -125,7 +126,7 @@ chart2::InterpretedData SAL_CALL BubbleDataInterpreter::interpretDataSource( for( size_t nN = 0; nN < aSizeValuesVector.size(); ++nN, ++nSeriesIndex ) { - vector< Reference< data::XLabeledDataSequence > > aNewData; + std::vector< uno::Reference< chart2::data::XLabeledDataSequence > > aNewData; if( xValuesX.is() ) { if( nN > 0 && xCloneableX.is() ) @@ -136,53 +137,48 @@ chart2::InterpretedData SAL_CALL BubbleDataInterpreter::interpretDataSource( aNewData.push_back( aYValuesVector[nN] ); aNewData.push_back(aSizeValuesVector[nN]); - Reference< XDataSeries > xSeries; - if( nSeriesIndex < aSeriesToReUse.getLength()) - xSeries.set( aSeriesToReUse[nSeriesIndex] ); + rtl::Reference< DataSeries > xSeries; + if( nSeriesIndex < aSeriesToReUse.size()) + xSeries = aSeriesToReUse[nSeriesIndex]; else - xSeries.set( new DataSeries ); - OSL_ASSERT( xSeries.is() ); - Reference< data::XDataSink > xSink( xSeries, uno::UNO_QUERY ); - OSL_ASSERT( xSink.is() ); - xSink->setData( comphelper::containerToSequence( aNewData ) ); + xSeries = new DataSeries; + assert( xSeries.is() ); + xSeries->setData( aNewData ); aSeriesVec.push_back( xSeries ); } - Sequence< Sequence< Reference< XDataSeries > > > aSeries(1); - aSeries[0] = comphelper::containerToSequence( aSeriesVec ); - return InterpretedData( aSeries, xCategories ); + return { { std::move(aSeriesVec) }, xCategories }; } -chart2::InterpretedData SAL_CALL BubbleDataInterpreter::reinterpretDataSeries( - const chart2::InterpretedData& aInterpretedData ) +InterpretedData BubbleDataInterpreter::reinterpretDataSeries( + const InterpretedData& aInterpretedData ) { InterpretedData aResult( aInterpretedData ); sal_Int32 i=0; - Sequence< Reference< XDataSeries > > aSeries( FlattenSequence( aInterpretedData.Series )); - const sal_Int32 nCount = aSeries.getLength(); + std::vector< rtl::Reference< DataSeries > > aSeries( FlattenSequence( aInterpretedData.Series )); + const sal_Int32 nCount = aSeries.size(); for( ; i<nCount; ++i ) { try { - Reference< data::XDataSource > xSeriesSource( aSeries[i], uno::UNO_QUERY_THROW ); - Sequence< Reference< data::XLabeledDataSequence > > aNewSequences; + std::vector< uno::Reference< chart2::data::XLabeledDataSequence > > aNewSequences; - Reference< data::XLabeledDataSequence > xValuesSize( - DataSeriesHelper::getDataSequenceByRole( xSeriesSource, "values-size" )); - Reference< data::XLabeledDataSequence > xValuesY( - DataSeriesHelper::getDataSequenceByRole( xSeriesSource, "values-y" )); - Reference< data::XLabeledDataSequence > xValuesX( - DataSeriesHelper::getDataSequenceByRole( xSeriesSource, "values-x" )); + uno::Reference< chart2::data::XLabeledDataSequence > xValuesSize( + DataSeriesHelper::getDataSequenceByRole( aSeries[i], u"values-size"_ustr )); + uno::Reference< chart2::data::XLabeledDataSequence > xValuesY( + DataSeriesHelper::getDataSequenceByRole( aSeries[i], u"values-y"_ustr )); + uno::Reference< chart2::data::XLabeledDataSequence > xValuesX( + DataSeriesHelper::getDataSequenceByRole( aSeries[i], u"values-x"_ustr )); if( ! xValuesX.is() || ! xValuesY.is() || ! xValuesSize.is() ) { - vector< Reference< data::XLabeledDataSequence > > aValueSeqVec( + std::vector< uno::Reference< chart2::data::XLabeledDataSequence > > aValueSeqVec( DataSeriesHelper::getAllDataSequencesByRole( - xSeriesSource->getDataSequences(), "values" )); + aSeries[i]->getDataSequences2(), u"values"_ustr )); if( xValuesX.is()) aValueSeqVec.erase( find( aValueSeqVec.begin(), aValueSeqVec.end(), xValuesX )); if( xValuesY.is()) @@ -195,25 +191,25 @@ chart2::InterpretedData SAL_CALL BubbleDataInterpreter::reinterpretDataSeries( if( ! xValuesSize.is() && aValueSeqVec.size() > nIndex ) { - xValuesSize.set( aValueSeqVec[nIndex++] ); + xValuesSize = aValueSeqVec[nIndex++]; if( xValuesSize.is()) - SetRole( xValuesSize->getValues(), "values-size"); + SetRole( xValuesSize->getValues(), u"values-size"_ustr); } if( ! xValuesY.is() && aValueSeqVec.size() > nIndex ) { - xValuesY.set( aValueSeqVec[nIndex++] ); + xValuesY = aValueSeqVec[nIndex++]; if( xValuesY.is()) - SetRole( xValuesY->getValues(), "values-y"); + SetRole( xValuesY->getValues(), u"values-y"_ustr); } if( ! xValuesX.is() && aValueSeqVec.size() > nIndex ) { - xValuesX.set( aValueSeqVec[nIndex++] ); + xValuesX = aValueSeqVec[nIndex++]; if( xValuesX.is()) - SetRole( xValuesY->getValues(), "values-x"); + SetRole( xValuesX->getValues(), u"values-x"_ustr); } } if( xValuesSize.is()) @@ -222,27 +218,21 @@ chart2::InterpretedData SAL_CALL BubbleDataInterpreter::reinterpretDataSeries( { if( xValuesX.is() ) { - aNewSequences.realloc(3); - aNewSequences[0] = xValuesX; - aNewSequences[1] = xValuesY; - aNewSequences[2] = xValuesSize; + aNewSequences = { xValuesX, xValuesY, xValuesSize }; } else { - aNewSequences.realloc(2); - aNewSequences[0] = xValuesY; - aNewSequences[1] = xValuesSize; + aNewSequences = { xValuesY, xValuesSize }; } } else { - aNewSequences.realloc(1); - aNewSequences[0] = xValuesSize; + aNewSequences = { xValuesSize }; } } - const Sequence< Reference< data::XLabeledDataSequence > > aSeqs( xSeriesSource->getDataSequences()); - if( aSeqs.getLength() != aNewSequences.getLength() ) + const std::vector< uno::Reference< data::XLabeledDataSequence > > & aSeqs = aSeries[i]->getDataSequences2(); + if( aSeqs.size() != aNewSequences.size() ) { #if OSL_DEBUG_LEVEL > 0 && !defined NDEBUG for( auto const & j : aSeqs ) @@ -250,8 +240,7 @@ chart2::InterpretedData SAL_CALL BubbleDataInterpreter::reinterpretDataSeries( assert( (j == xValuesY || j == xValuesX || j == xValuesSize) && "All sequences should be used" ); } #endif - Reference< data::XDataSink > xSink( xSeriesSource, uno::UNO_QUERY_THROW ); - xSink->setData( aNewSequences ); + aSeries[i]->setData( aNewSequences ); } } catch( const uno::Exception & ) @@ -263,17 +252,15 @@ chart2::InterpretedData SAL_CALL BubbleDataInterpreter::reinterpretDataSeries( return aResult; } -sal_Bool SAL_CALL BubbleDataInterpreter::isDataCompatible( - const chart2::InterpretedData& aInterpretedData ) +bool BubbleDataInterpreter::isDataCompatible( + const InterpretedData& aInterpretedData ) { - const Sequence< Reference< XDataSeries > > aSeries( FlattenSequence( aInterpretedData.Series )); - for( Reference< XDataSeries > const & dataSeries : aSeries ) + const std::vector< rtl::Reference< DataSeries > > aSeries( FlattenSequence( aInterpretedData.Series )); + for( rtl::Reference< DataSeries > const & dataSeries : aSeries ) { try { - Reference< data::XDataSource > xSrc( dataSeries, uno::UNO_QUERY_THROW ); - Sequence< Reference< data::XLabeledDataSequence > > aSeq( xSrc->getDataSequences()); - if( aSeq.getLength() != 3 ) + if( dataSeries->getDataSequences2().size() != 3 ) return false; } catch( const uno::Exception & ) |