1 /************************************************************** 2 * 3 * Licensed to the Apache Software Foundation (ASF) under one 4 * or more contributor license agreements. See the NOTICE file 5 * distributed with this work for additional information 6 * regarding copyright ownership. The ASF licenses this file 7 * to you under the Apache License, Version 2.0 (the 8 * "License"); you may not use this file except in compliance 9 * with the License. You may obtain a copy of the License at 10 * 11 * http://www.apache.org/licenses/LICENSE-2.0 12 * 13 * Unless required by applicable law or agreed to in writing, 14 * software distributed under the License is distributed on an 15 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 16 * KIND, either express or implied. See the License for the 17 * specific language governing permissions and limitations 18 * under the License. 19 * 20 *************************************************************/ 21 22 23 #ifndef DPTABLECACHE_HXX 24 #define DPTABLECACHE_HXX 25 // Wang Xu Ming -- 12/21/2008 26 // Add Data Cache Support. 27 #ifndef SC_SCGLOB_HXX 28 #include "global.hxx" 29 #endif 30 //Added by PengYunQuan for SODC_16015 31 #include <svl/zforlist.hxx> 32 //end 33 #include <vector> 34 #include "dpglobal.hxx" 35 36 #include <com/sun/star/sdbc/DataType.hpp> 37 #include <com/sun/star/sdbc/XRow.hpp> 38 #include <com/sun/star/sdbc/XRowSet.hpp> 39 40 class ScDPTableDataCache; 41 class TypedStrData; 42 struct ScQueryParam; 43 44 // -------------------------------------------------------------------- 45 // 46 // base class ScDPTableData to allow implementation with tabular data 47 // by deriving only of this 48 // 49 50 class SC_DLLPUBLIC ScDPTableDataCache 51 { 52 long mnID; 53 ScDocument* mpDoc; 54 55 long mnColumnCount; // Column count 56 57 std::vector<ScDPItemData*>* mpTableDataValues; //Data Pilot Table's index - value map 58 std::vector<SCROW>* mpSourceData; //Data Pilot Table's Source data 59 std::vector<SCROW>* mpGlobalOrder; //Sorted members index 60 std::vector<SCROW>* mpIndexOrder; //Index the sorted number 61 std::vector<ScDPItemData*> mrLabelNames; //Source Label data 62 std::vector<sal_Bool> mbEmptyRow; //If empty row? 63 mutable ScDPItemDataPool maAdditionalDatas; 64 public: 65 SCROW GetOrder( long nDim, SCROW nIndex ) const; 66 SCROW GetIdByItemData( long nDim, String sItemData ) const; 67 SCROW GetIdByItemData( long nDim, const ScDPItemData& rData ) const; 68 69 SCROW GetAdditionalItemID ( String sItemData ); 70 SCROW GetAdditionalItemID( const ScDPItemData& rData ); 71 72 SCCOL GetDimensionIndex( String sName) const; 73 const ScDPItemData* GetSortedItemData( SCCOL nDim, SCROW nOrder ) const; 74 sal_uLong GetNumType ( sal_uLong nFormat ) const; 75 sal_uLong GetNumberFormat( long nDim ) const; 76 sal_Bool IsDateDimension( long nDim ) const ; 77 sal_uLong GetDimNumType( SCCOL nDim) const; 78 SCROW GetDimMemberCount( SCCOL nDim ) const; 79 80 SCROW GetSortedItemDataId( SCCOL nDim, SCROW nOrder ) const; 81 const std::vector<ScDPItemData*>& GetDimMemberValues( SCCOL nDim )const; 82 void SetId( long nId ){ mnID = nId;} 83 void AddRow( ScDPItemData* pRow, sal_uInt16 nCount ); 84 bool InitFromDoc( ScDocument* pDoc, const ScRange& rRange ); 85 bool InitFromDataBase (const ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XRowSet>& xRowSet, const Date& rNullDate); 86 87 SCROW GetRowCount() const; 88 SCROW GetItemDataId( sal_uInt16 nDim, SCROW nRow, sal_Bool bRepeatIfEmpty ) const; 89 String GetDimensionName( sal_uInt16 nColumn ) const; 90 bool IsEmptyMember( SCROW nRow, sal_uInt16 nColumn ) const; 91 bool IsRowEmpty( SCROW nRow ) const; 92 bool IsValid() const; 93 bool ValidQuery( SCROW nRow, const ScQueryParam& rQueryParam, sal_Bool* pSpecial ); 94 95 ScDocument* GetDoc() const;//ms-cache-core 96 long GetColumnCount() const; 97 long GetId() const; 98 99 const ScDPItemData* GetItemDataById( long nDim, SCROW nId ) const; 100 101 sal_Bool operator== ( const ScDPTableDataCache& r ) const; 102 103 //construction 104 ScDPTableDataCache( ScDocument* pDoc ); 105 //deconstruction 106 virtual ~ScDPTableDataCache(); 107 108 protected: 109 private: 110 public: 111 void AddLabel( ScDPItemData* pData); 112 template< bool bCheckDate > 113 sal_Bool AddData( long nDim, ScDPItemData* itemData ); 114 }; 115 116 #endif //DPTABLECACHE_HXX 117