1 /************************************************************************* 2 * 3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 4 * 5 * Copyright 2000, 2010 Oracle and/or its affiliates. 6 * 7 * OpenOffice.org - a multi-platform office productivity suite 8 * 9 * This file is part of OpenOffice.org. 10 * 11 * OpenOffice.org is free software: you can redistribute it and/or modify 12 * it under the terms of the GNU Lesser General Public License version 3 13 * only, as published by the Free Software Foundation. 14 * 15 * OpenOffice.org is distributed in the hope that it will be useful, 16 * but WITHOUT ANY WARRANTY; without even the implied warranty of 17 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 18 * GNU Lesser General Public License version 3 for more details 19 * (a copy is included in the LICENSE file that accompanied this code). 20 * 21 * You should have received a copy of the GNU Lesser General Public License 22 * version 3 along with OpenOffice.org. If not, see 23 * <http://www.openoffice.org/license.html> 24 * for a copy of the LGPLv3 License. 25 * 26 ************************************************************************/ 27 28 #ifndef _CHART2_DATASOURCEHELPER_HXX 29 #define _CHART2_DATASOURCEHELPER_HXX 30 31 #include <com/sun/star/chart2/XChartDocument.hpp> 32 #include <com/sun/star/chart2/XDiagram.hpp> 33 #include <com/sun/star/chart2/data/XDataSource.hpp> 34 #include <com/sun/star/chart2/data/XLabeledDataSequence.hpp> 35 #include <com/sun/star/beans/PropertyValue.hpp> 36 #include <com/sun/star/frame/XModel.hpp> 37 #include <com/sun/star/uno/XComponentContext.hpp> 38 39 #include "charttoolsdllapi.hxx" 40 41 #include <vector> 42 43 //............................................................................. 44 namespace chart 45 { 46 //............................................................................. 47 48 //----------------------------------------------------------------------------- 49 /** 50 */ 51 52 class OOO_DLLPUBLIC_CHARTTOOLS DataSourceHelper 53 { 54 public: 55 static ::com::sun::star::uno::Reference< ::com::sun::star::chart2::data::XDataSource > 56 createDataSource( const ::com::sun::star::uno::Sequence< 57 ::com::sun::star::uno::Reference< 58 ::com::sun::star::chart2::data::XLabeledDataSequence > > & rSequences ); 59 60 static ::com::sun::star::uno::Reference< ::com::sun::star::chart2::data::XDataSequence > 61 createCachedDataSequence(); 62 63 static ::com::sun::star::uno::Reference< ::com::sun::star::chart2::data::XDataSequence > 64 createCachedDataSequence( const ::rtl::OUString & rSingleText ); 65 66 static ::com::sun::star::uno::Reference< ::com::sun::star::chart2::data::XLabeledDataSequence > 67 createLabeledDataSequence( 68 const ::com::sun::star::uno::Reference< ::com::sun::star::chart2::data::XDataSequence >& xValues , 69 const ::com::sun::star::uno::Reference< ::com::sun::star::chart2::data::XDataSequence >& xLabels ); 70 71 static ::com::sun::star::uno::Reference< ::com::sun::star::chart2::data::XLabeledDataSequence > 72 createLabeledDataSequence( 73 const ::com::sun::star::uno::Reference< ::com::sun::star::chart2::data::XDataSequence >& xValues ); 74 75 static ::com::sun::star::uno::Reference< ::com::sun::star::chart2::data::XLabeledDataSequence > 76 createLabeledDataSequence( 77 const ::com::sun::star::uno::Reference< ::com::sun::star::uno::XComponentContext >& xContext ); 78 79 static ::com::sun::star::uno::Sequence< 80 ::com::sun::star::beans::PropertyValue > createArguments( 81 bool bUseColumns, bool bFirstCellAsLabel, bool bHasCategories ); 82 83 static ::com::sun::star::uno::Sequence< 84 ::com::sun::star::beans::PropertyValue > createArguments( 85 const ::rtl::OUString & rRangeRepresentation, 86 const ::com::sun::star::uno::Sequence< sal_Int32 >& rSequenceMapping, 87 bool bUseColumns, bool bFirstCellAsLabel, bool bHasCategories ); 88 89 SAL_DLLPRIVATE static void readArguments( const ::com::sun::star::uno::Sequence< ::com::sun::star::beans::PropertyValue >& rArguments 90 , ::rtl::OUString & rRangeRepresentation, ::com::sun::star::uno::Sequence< sal_Int32 >& rSequenceMapping 91 , bool& bUseColumns, bool& bFirstCellAsLabel, bool& bHasCategories ); 92 93 static ::com::sun::star::uno::Reference< ::com::sun::star::chart2::data::XDataSource > 94 pressUsedDataIntoRectangularFormat( const ::com::sun::star::uno::Reference< 95 ::com::sun::star::chart2::XChartDocument >& xChartDoc, 96 bool bWithCategories = true ); 97 98 static void addRangeRepresentationsFromLabeledDataSequence( 99 const ::com::sun::star::uno::Reference< 100 ::com::sun::star::chart2::data::XLabeledDataSequence >& xLabeledDataSequence 101 , ::std::vector< ::rtl::OUString >& rOutRangeRepresentations ); 102 103 SAL_DLLPRIVATE static ::com::sun::star::uno::Sequence< ::rtl::OUString > getUsedDataRanges( 104 const ::com::sun::star::uno::Reference< 105 ::com::sun::star::chart2::XDiagram > & xDiagram ); 106 107 static ::com::sun::star::uno::Sequence< ::rtl::OUString > getUsedDataRanges( 108 const ::com::sun::star::uno::Reference< 109 ::com::sun::star::frame::XModel > & xChartModel ); 110 111 static ::com::sun::star::uno::Reference< 112 ::com::sun::star::chart2::data::XDataSource > getUsedData( 113 const ::com::sun::star::uno::Reference< 114 ::com::sun::star::frame::XModel >& xChartModel ); 115 116 static ::com::sun::star::uno::Reference< 117 ::com::sun::star::chart2::data::XDataSource > getUsedData( 118 const ::com::sun::star::uno::Reference< 119 ::com::sun::star::chart2::XChartDocument >& xChartDoc ); 120 121 static bool detectRangeSegmentation( 122 const ::com::sun::star::uno::Reference< 123 ::com::sun::star::frame::XModel >& xChartModel 124 , ::rtl::OUString& rOutRangeString 125 , ::com::sun::star::uno::Sequence< sal_Int32 >& rSequenceMapping 126 , bool& rOutUseColumns 127 , bool& rOutFirstCellAsLabel 128 , bool& rOutHasCategories ); 129 130 static void setRangeSegmentation( 131 const ::com::sun::star::uno::Reference< 132 ::com::sun::star::frame::XModel >& xChartModel 133 , const ::com::sun::star::uno::Sequence< sal_Int32 >& rSequenceMapping 134 , bool bUseColumns 135 , bool bFirstCellAsLabel 136 , bool bUseCategories ); 137 138 /** Returns true, if all arguments necessary for getting all data by a 139 rectangular region are returned by detectArguments at the given 140 document's data provider. 141 142 Currently, this is: CellRangeRepresentation, DataRowSource, 143 HasCategories and FirstCellAsLabel. 144 */ 145 static bool allArgumentsForRectRangeDetected( 146 const ::com::sun::star::uno::Reference< ::com::sun::star::chart2::XChartDocument >& xChartDocument ); 147 148 SAL_DLLPRIVATE static ::com::sun::star::uno::Sequence< ::rtl::OUString > getRangesFromLabeledDataSequence( 149 const ::com::sun::star::uno::Reference< 150 ::com::sun::star::chart2::data::XLabeledDataSequence > & xLSeq ); 151 152 SAL_DLLPRIVATE static ::rtl::OUString getRangeFromValues( 153 const ::com::sun::star::uno::Reference< 154 ::com::sun::star::chart2::data::XLabeledDataSequence > & xLSeq ); 155 156 SAL_DLLPRIVATE static ::com::sun::star::uno::Sequence< ::rtl::OUString > getRangesFromDataSource( 157 const ::com::sun::star::uno::Reference< 158 ::com::sun::star::chart2::data::XDataSource > & xSource ); 159 }; 160 161 //............................................................................. 162 } //namespace chart 163 //............................................................................. 164 #endif 165