LibreOffice Module sc (master)  1
dpobject.hxx
Go to the documentation of this file.
1 /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
2 /*
3  * This file is part of the LibreOffice project.
4  *
5  * This Source Code Form is subject to the terms of the Mozilla Public
6  * License, v. 2.0. If a copy of the MPL was not distributed with this
7  * file, You can obtain one at http://mozilla.org/MPL/2.0/.
8  *
9  * This file incorporates work covered by the following license notice:
10  *
11  * Licensed to the Apache Software Foundation (ASF) under one or more
12  * contributor license agreements. See the NOTICE file distributed
13  * with this work for additional information regarding copyright
14  * ownership. The ASF licenses this file to you under the Apache
15  * License, Version 2.0 (the "License"); you may not use this file
16  * except in compliance with the License. You may obtain a copy of
17  * the License at http://www.apache.org/licenses/LICENSE-2.0 .
18  */
19 
20 #pragma once
21 
22 #include "scdllapi.h"
23 #include "global.hxx"
24 #include "address.hxx"
25 #include "dpcache.hxx"
26 #include "dptypes.hxx"
27 #include "pivot.hxx"
28 #include "calcmacros.hxx"
29 
30 #include <com/sun/star/sheet/DataPilotFieldOrientation.hpp>
31 #include <o3tl/sorted_vector.hxx>
32 
33 #include <memory>
34 #include <vector>
35 #include <map>
36 
37 namespace com::sun::star {
38 
39  namespace container {
40  class XIndexAccess;
41  class XNameAccess;
42  }
43 
44  namespace sdbc {
45  class XRowSet;
46  }
47 
48  namespace sheet {
49  class XMembersAccess;
50  class XDimensionsSupplier;
51  struct DataPilotTablePositionData;
52  struct DataPilotTableHeaderData;
53  struct DataPilotFieldFilter;
54  }
55 }
56 
57 namespace tools { class Rectangle; }
58 class ScDPSaveData;
59 class ScDPOutput;
60 struct ScImportSourceDesc;
61 class ScSheetSourceDesc;
62 class ScDPTableData;
64 class ScRangeList;
65 class ScDPCache;
66 class ScDocument;
67 
69 {
70  OUString aServiceName;
71  OUString aParSource;
72  OUString aParName;
73  OUString aParUser;
74  OUString aParPass;
75 
76  ScDPServiceDesc( const OUString& rServ, const OUString& rSrc, const OUString& rNam,
77  const OUString& rUser, const OUString& rPass );
78 
79  bool operator== ( const ScDPServiceDesc& rOther ) const;
80 };
81 
83 {
84 private:
86  // settings
87  std::unique_ptr<ScDPSaveData> pSaveData;
88  OUString aTableName;
89  OUString aTableTag;
91  std::unique_ptr<ScSheetSourceDesc> pSheetDesc; // for sheet data
92  std::unique_ptr<ScImportSourceDesc> pImpDesc; // for database data
93  std::unique_ptr<ScDPServiceDesc> pServDesc; // for external service
94  std::shared_ptr<ScDPTableData> mpTableData;
95  // cached data
96  css::uno::Reference<css::sheet::XDimensionsSupplier> xSource;
97  std::unique_ptr<ScDPOutput> pOutput;
98 
99  // name -> sequence of sequences of css::xml::FastAttribute or css::xml::Attribute
100  // see PivotTable::putToInteropGrabBag in sc/source/filter/oox/pivottablebuffer.cxx for details
101  std::map<OUString, css::uno::Any> maInteropGrabBag;
102 
103  sal_Int32 nHeaderRows; // page fields plus filter button
104  bool mbHeaderLayout:1; // true : grid, false : standard
105  bool bAllowMove:1;
106  bool bSettingsChanged:1;
107  bool mbEnableGetPivotData:1;
108 
109  SAL_DLLPRIVATE ScDPTableData* GetTableData();
110  SAL_DLLPRIVATE void CreateObjects();
111  SAL_DLLPRIVATE void CreateOutput();
112  SAL_DLLPRIVATE void ClearSource();
113  SAL_DLLPRIVATE void FillLabelDataForDimension(
114  const css::uno::Reference< css::container::XIndexAccess>& xDims,
115  sal_Int32 nDim, ScDPLabelData& rLabelData);
116 
117 public:
118  ScDPObject(ScDocument* pD);
119  ScDPObject(const ScDPObject& r);
120  ~ScDPObject();
121 
122  ScDPObject& operator= (const ScDPObject& r);
123 
124  void EnableGetPivotData(bool b);
125 
126  void SetAllowMove(bool bSet);
127 
128  void InvalidateData();
129  void Clear();
130  void ClearTableData();
131  void ReloadGroupTableData();
132 
133  void Output( const ScAddress& rPos );
134  ScRange GetNewOutputRange( bool& rOverflow );
135 
136  ScRange GetOutputRangeByType( sal_Int32 nType );
137  ScRange GetOutputRangeByType( sal_Int32 nType ) const;
138 
139  void SetSaveData(const ScDPSaveData& rData);
140  ScDPSaveData* GetSaveData() const { return pSaveData.get(); }
141 
142  void SetOutRange(const ScRange& rRange);
143  const ScRange& GetOutRange() const;
144 
145  void SetHeaderLayout(bool bUseGrid);
146  bool GetHeaderLayout() const { return mbHeaderLayout;}
147 
148  void SetSheetDesc(const ScSheetSourceDesc& rDesc);
149  void SetImportDesc(const ScImportSourceDesc& rDesc);
150  void SetServiceData(const ScDPServiceDesc& rDesc);
151 
152  void WriteSourceDataTo( ScDPObject& rDest ) const;
153  void WriteTempDataTo( ScDPObject& rDest ) const;
154 
155  const ScSheetSourceDesc* GetSheetDesc() const { return pSheetDesc.get(); }
156  const ScImportSourceDesc* GetImportSourceDesc() const { return pImpDesc.get(); }
157  const ScDPServiceDesc* GetDPServiceDesc() const { return pServDesc.get(); }
158 
159  css::uno::Reference<css::sheet::XDimensionsSupplier> const & GetSource();
160 
161  bool IsSheetData() const;
162  bool IsImportData() const { return(pImpDesc != nullptr); }
163  bool IsServiceData() const { return(pServDesc != nullptr); }
164 
165  void SetName(const OUString& rNew);
166  const OUString& GetName() const { return aTableName; }
167  void SetTag(const OUString& rNew);
168  const OUString& GetTag() const { return aTableTag; }
169 
175  bool IsDataDescriptionCell(const ScAddress& rPos);
176 
177  bool IsDimNameInUse(std::u16string_view rName) const;
178  OUString GetDimName( tools::Long nDim, bool& rIsDataLayout, sal_Int32* pFlags = nullptr );
179  bool IsDuplicated( tools::Long nDim );
180  tools::Long GetDimCount();
181  void GetHeaderPositionData(const ScAddress& rPos, css::sheet::DataPilotTableHeaderData& rData);
182  tools::Long GetHeaderDim( const ScAddress& rPos, css::sheet::DataPilotFieldOrientation& rOrient );
183  bool GetHeaderDrag( const ScAddress& rPos, bool bMouseLeft, bool bMouseTop,
184  tools::Long nDragDim,
185  tools::Rectangle& rPosRect, css::sheet::DataPilotFieldOrientation& rOrient, tools::Long& rDimPos );
186  bool IsFilterButton( const ScAddress& rPos );
187 
188  OUString GetFormattedString( std::u16string_view rDimName, const double fValue );
189 
190  double GetPivotData(
191  const OUString& rDataFieldName,
192  std::vector<css::sheet::DataPilotFieldFilter>& rFilters);
193 
194  bool ParseFilters(
195  OUString& rDataFieldName,
196  std::vector<css::sheet::DataPilotFieldFilter>& rFilters,
197  std::vector<sal_Int16>& rFilterFuncs,
198  const OUString& rFilterList );
199 
200  void GetMemberResultNames(ScDPUniqueStringSet& rNames, tools::Long nDimension);
201 
202  void ToggleDetails(const css::sheet::DataPilotTableHeaderData& rElemDesc, ScDPObject* pDestObj);
203 
204  void FillOldParam(ScPivotParam& rParam) const;
205  void FillLabelData(sal_Int32 nDim, ScDPLabelData& Labels);
206  void FillLabelData(ScPivotParam& rParam);
207 
208  bool GetHierarchiesNA( sal_Int32 nDim, css::uno::Reference< css::container::XNameAccess >& xHiers );
209  void GetHierarchies( sal_Int32 nDim, css::uno::Sequence< OUString >& rHiers );
210 
211  sal_Int32 GetUsedHierarchy( sal_Int32 nDim );
212 
213  bool GetMembersNA( sal_Int32 nDim, css::uno::Reference< css::sheet::XMembersAccess >& xMembers );
214  bool GetMembersNA( sal_Int32 nDim, sal_Int32 nHier, css::uno::Reference< css::sheet::XMembersAccess >& xMembers );
215 
216  bool GetMemberNames( sal_Int32 nDim, css::uno::Sequence< OUString >& rNames );
217  bool GetMembers( sal_Int32 nDim, sal_Int32 nHier, ::std::vector<ScDPLabelData::Member>& rMembers );
218 
219  void UpdateReference( UpdateRefMode eUpdateRefMode,
220  const ScRange& r, SCCOL nDx, SCROW nDy, SCTAB nDz );
221  bool RefsEqual( const ScDPObject& r ) const;
222  void WriteRefsTo( ScDPObject& r ) const;
223 
224  void GetPositionData(const ScAddress& rPos, css::sheet::DataPilotTablePositionData& rPosData);
225 
226  bool GetDataFieldPositionData(const ScAddress& rPos,
227  css::uno::Sequence<
228  css::sheet::DataPilotFieldFilter >& rFilters);
229 
230  void GetDrillDownData(const ScAddress& rPos,
231  css::uno::Sequence< css::uno::Sequence< css::uno::Any > >& rTableData);
232 
233  // apply drop-down attribute, initialize nHeaderRows, without accessing the source
234  // (button attribute must be present)
235  void RefreshAfterLoad();
236 
237  void BuildAllDimensionMembers();
238 
243  bool SyncAllDimensionMembers();
244 
245  static bool HasRegisteredSources();
246  static std::vector<OUString> GetRegisteredSources();
247  static css::uno::Reference<css::sheet::XDimensionsSupplier>
248  CreateSource( const ScDPServiceDesc& rDesc );
249 
250  static void ConvertOrientation(
251  ScDPSaveData& rSaveData,
252  const ScPivotFieldVector& rFields, css::sheet::DataPilotFieldOrientation nOrient,
253  const css::uno::Reference< css::sheet::XDimensionsSupplier>& xSource,
254  const ScDPLabelDataVector& rLabels,
255  const ScPivotFieldVector* pRefColFields = nullptr,
256  const ScPivotFieldVector* pRefRowFields = nullptr,
257  const ScPivotFieldVector* pRefPageFields = nullptr );
258 
259  static bool IsOrientationAllowed( css::sheet::DataPilotFieldOrientation nOrient, sal_Int32 nDimFlags );
260 
261  void PutInteropGrabBag(std::map<OUString, css::uno::Any>&& val)
262  {
263  maInteropGrabBag = std::move(val);
264  }
265  std::pair<bool, css::uno::Any> GetInteropGrabBagValue(const OUString& sName) const
266  {
267  if (const auto it = maInteropGrabBag.find(sName); it != maInteropGrabBag.end())
268  return { true, it->second };
269 
270  return { false, css::uno::Any() };
271  }
272 
273 #if DUMP_PIVOT_TABLE
274  void Dump() const;
275  void DumpCache() const;
276 #endif
277 };
278 
280 {
281  friend class ScDPCache;
282 public:
283 
288  {
289  friend class ScDPCollection;
290  typedef std::map<size_t, std::unique_ptr<ScDPCache>> CachesType;
291  typedef std::vector<ScRange> RangeIndexType;
292  CachesType m_Caches;
293  RangeIndexType maRanges;
295  public:
296  SheetCaches(ScDocument& rDoc);
297  bool hasCache(const ScRange& rRange) const;
298  const ScDPCache* getCache(const ScRange& rRange, const ScDPDimensionSaveData* pDimData);
299  SC_DLLPUBLIC size_t size() const;
300 
301  void updateReference(
302  UpdateRefMode eMode, const ScRange& r, SCCOL nDx, SCROW nDy, SCTAB nDz);
303 
305  SC_DLLPUBLIC const ScDPCache* getExistingCache(const ScRange& rRange) const;
306 
307  void updateCache(const ScRange& rRange, o3tl::sorted_vector<ScDPObject*>& rRefs);
308  bool remove(const ScDPCache* p);
309 
310  SC_DLLPUBLIC const std::vector<ScRange>& getAllRanges() const;
311  };
312 
317  {
318  friend class ScDPCollection;
319  typedef ::std::map<OUString, std::unique_ptr<ScDPCache>> CachesType;
320  CachesType m_Caches;
322  public:
323  NameCaches(ScDocument& rDoc);
324  bool hasCache(const OUString& rName) const;
325  const ScDPCache* getCache(
326  const OUString& rName, const ScRange& rRange, const ScDPDimensionSaveData* pDimData);
327  size_t size() const;
328  private:
329  ScDPCache* getExistingCache(const OUString& rName);
330 
331  void updateCache(
332  const OUString& rName, const ScRange& rRange, o3tl::sorted_vector<ScDPObject*>& rRefs);
333  bool remove(const ScDPCache* p);
334  };
335 
340  struct DBType
341  {
342  sal_Int32 mnSdbType;
343  OUString maDBName;
344  OUString maCommand;
345  DBType(sal_Int32 nSdbType, const OUString& rDBName, const OUString& rCommand);
346 
347  struct less
348  {
349  bool operator() (const DBType& left, const DBType& right) const;
350  };
351  };
352 
356  class DBCaches
357  {
358  friend class ScDPCollection;
359  typedef ::std::map<DBType, std::unique_ptr<ScDPCache>, DBType::less> CachesType;
360  CachesType m_Caches;
362  public:
363  DBCaches(ScDocument& rDoc);
364  bool hasCache(sal_Int32 nSdbType, const OUString& rDBName, const OUString& rCommand) const;
365  const ScDPCache* getCache(
366  sal_Int32 nSdbType, const OUString& rDBName, const OUString& rCommand,
367  const ScDPDimensionSaveData* pDimData);
368 
369  private:
371  sal_Int32 nSdbType, const OUString& rDBName, const OUString& rCommand);
372 
373  static css::uno::Reference<css::sdbc::XRowSet> createRowSet(
374  sal_Int32 nSdbType, const OUString& rDBName, const OUString& rCommand);
375 
376  void updateCache(
377  sal_Int32 nSdbType, const OUString& rDBName, const OUString& rCommand,
379  bool remove(const ScDPCache* p);
380  };
381 
382  ScDPCollection(ScDocument& rDocument);
383  ScDPCollection(const ScDPCollection& r);
384  ~ScDPCollection();
385 
386  const char* ReloadCache(const ScDPObject* pDPObj, o3tl::sorted_vector<ScDPObject*>& rRefs);
388  SC_DLLPUBLIC bool GetReferenceGroups(const ScDPObject& rDPObj, const ScDPDimensionSaveData** pGroups) const;
389 
390  SC_DLLPUBLIC size_t GetCount() const;
391  SC_DLLPUBLIC ScDPObject& operator[](size_t nIndex);
392  SC_DLLPUBLIC const ScDPObject& operator[](size_t nIndex) const;
393 
394  ScDPObject* GetByName(std::u16string_view rName) const;
395 
396  void DeleteOnTab( SCTAB nTab );
397  void UpdateReference( UpdateRefMode eUpdateRefMode,
398  const ScRange& r, SCCOL nDx, SCROW nDy, SCTAB nDz );
399  void CopyToTab( SCTAB nOld, SCTAB nNew );
400  bool RefsEqual( const ScDPCollection& r ) const;
401  void WriteRefsTo( ScDPCollection& r ) const;
402 
409  OUString CreateNewName() const;
410 
411  void FreeTable(const ScDPObject* pDPObj);
412  SC_DLLPUBLIC ScDPObject* InsertNewTable(std::unique_ptr<ScDPObject> pDPObj);
413  SC_DLLPUBLIC bool HasTable(const ScDPObject* pDPObj) const;
414 
416  SC_DLLPUBLIC const SheetCaches& GetSheetCaches() const;
418  SC_DLLPUBLIC const NameCaches& GetNameCaches() const;
420  SC_DLLPUBLIC const DBCaches& GetDBCaches() const;
421 
422  ScRangeList GetAllTableRanges( SCTAB nTab ) const;
423  bool IntersectsTableByColumns( SCCOL nCol1, SCCOL nCol2, SCROW nRow, SCTAB nTab ) const;
424  bool IntersectsTableByRows( SCCOL nCol, SCROW nRow1, SCROW nRow2, SCTAB nTab ) const;
425  bool HasTable( const ScRange& rRange ) const;
426 
427 #if DEBUG_PIVOT_TABLE
428  void DumpTables() const;
429 #endif
430 
431 private:
433  void RemoveCache(const ScDPCache* pCache);
434 
435  void GetAllTables(const ScRange& rSrcRange, o3tl::sorted_vector<ScDPObject*>& rRefs) const;
436  void GetAllTables(std::u16string_view rSrcName, o3tl::sorted_vector<ScDPObject*>& rRefs) const;
437  void GetAllTables(
438  sal_Int32 nSdbType, std::u16string_view rDBName, std::u16string_view rCommand,
439  o3tl::sorted_vector<ScDPObject*>& rRefs) const;
440 
441 private:
442  typedef std::vector< std::unique_ptr<ScDPObject> > TablesType;
443 
445  TablesType maTables;
449 };
450 
451 bool operator<(const ScDPCollection::DBType& left, const ScDPCollection::DBType& right);
452 
453 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */
SheetCaches(ScDocument &rDoc)
Definition: dpobject.cxx:2874
bool operator()(const DBType &left, const DBType &right) const
Definition: dpobject.cxx:3163
OUString aTableTag
Definition: dpobject.hxx:89
NameCaches maNameCaches
Definition: dpobject.hxx:447
This class has to do with handling exclusively grouped dimensions? TODO: Find out what this class doe...
Definition: dpdimsave.hxx:163
void CopyToTab(SCTAB nOld, SCTAB nNew)
Definition: dpobject.cxx:3602
SC_DLLPUBLIC size_t GetCount() const
Definition: dpobject.cxx:3676
exports com.sun.star. sdbc
sal_uInt64 left
SC_DLLPUBLIC SheetCaches & GetSheetCaches()
Definition: dpobject.cxx:3753
DBType(sal_Int32 nSdbType, const OUString &rDBName, const OUString &rCommand)
Definition: dpobject.cxx:3160
bool RefsEqual(const ScDPCollection &r) const
Definition: dpobject.cxx:3625
OUString aParPass
Definition: dpobject.hxx:74
::std::map< DBType, std::unique_ptr< ScDPCache >, DBType::less > CachesType
Definition: dpobject.hxx:359
SC_DLLPUBLIC bool GetReferenceGroups(const ScDPObject &rDPObj, const ScDPDimensionSaveData **pGroups) const
Definition: dpobject.cxx:3522
long Long
std::map< size_t, std::unique_ptr< ScDPCache > > CachesType
Definition: dpobject.hxx:290
void PutInteropGrabBag(std::map< OUString, css::uno::Any > &&val)
Definition: dpobject.hxx:261
void updateReference(UpdateRefMode eMode, const ScRange &r, SCCOL nDx, SCROW nDy, SCTAB nDz)
Definition: dpobject.cxx:3010
std::vector< std::unique_ptr< ScDPObject > > TablesType
Definition: dpobject.hxx:442
Data caches for range name based source data.
Definition: dpobject.hxx:316
This class represents the cached data part of the datapilot cache table implementation.
Definition: dpcache.hxx:47
OUString aParSource
Definition: dpobject.hxx:71
ScDPObject * GetByName(std::u16string_view rName) const
Definition: dpobject.cxx:3691
bool IsImportData() const
Definition: dpobject.hxx:162
OUString aTableName
Definition: dpobject.hxx:88
ScDPServiceDesc(const OUString &rServ, const OUString &rSrc, const OUString &rNam, const OUString &rUser, const OUString &rPass)
Definition: dpobject.cxx:291
exports com.sun.star. sheet
ScDPCollection(ScDocument &rDocument)
Definition: dpobject.cxx:3330
exports com.sun.star. container
OUString CreateNewName() const
Create a new name that's not yet used by any existing data pilot objects.
Definition: dpobject.cxx:3702
std::shared_ptr< ScDPTableData > mpTableData
Definition: dpobject.hxx:94
const OUString & GetTag() const
Definition: dpobject.hxx:168
ScDocument & mrDoc
Definition: dpobject.hxx:444
css::uno::Reference< css::sheet::XDimensionsSupplier > xSource
Definition: dpobject.hxx:96
Data caches for external database sources.
Definition: dpobject.hxx:356
std::unique_ptr< ScDPServiceDesc > pServDesc
Definition: dpobject.hxx:93
Defines connection type to external data source.
Definition: dpobject.hxx:340
bool ReloadGroupsInCache(const ScDPObject *pDPObj, o3tl::sorted_vector< ScDPObject * > &rRefs)
Definition: dpobject.cxx:3434
bool IsServiceData() const
Definition: dpobject.hxx:163
void GetAllTables(const ScRange &rSrcRange, o3tl::sorted_vector< ScDPObject * > &rRefs) const
Definition: dpobject.cxx:3846
bool GetHeaderLayout() const
Definition: dpobject.hxx:146
OUString aParUser
Definition: dpobject.hxx:73
bool IntersectsTableByColumns(SCCOL nCol1, SCCOL nCol2, SCROW nRow, SCTAB nTab) const
Definition: dpobject.cxx:3788
const ScDPCache * getCache(const OUString &rName, const ScRange &rRange, const ScDPDimensionSaveData *pDimData)
Definition: dpobject.cxx:3098
def right
bool IntersectsTableByRows(SCCOL nCol, SCROW nRow1, SCROW nRow2, SCTAB nTab) const
Definition: dpobject.cxx:3793
ScDPCache * getExistingCache(sal_Int32 nSdbType, const OUString &rDBName, const OUString &rCommand)
Definition: dpobject.cxx:3213
SC_DLLPUBLIC ScDPObject & operator[](size_t nIndex)
Definition: dpobject.cxx:3681
bool operator<(const ScDPCollection::DBType &left, const ScDPCollection::DBType &right)
Definition: dpobject.cxx:3928
SC_DLLPUBLIC const std::vector< ScRange > & getAllRanges() const
Definition: dpobject.cxx:3086
std::vector< std::unique_ptr< ScDPLabelData > > ScDPLabelDataVector
Definition: pivot.hxx:113
Stores and manages all caches from internal sheets.
Definition: dpobject.hxx:287
std::vector< ScPivotField > ScPivotFieldVector
Definition: pivot.hxx:129
const ScDPCache * getCache(const ScRange &rRange, const ScDPDimensionSaveData *pDimData)
Definition: dpobject.cxx:2917
sal_Int16 SCCOL
Definition: types.hxx:21
::std::map< OUString, std::unique_ptr< ScDPCache > > CachesType
Definition: dpobject.hxx:319
DBCaches & GetDBCaches()
Definition: dpobject.cxx:3773
const OUString & GetName() const
Definition: dpobject.hxx:166
std::unique_ptr< ScDPSaveData > pSaveData
Definition: dpobject.hxx:87
NameCaches(ScDocument &rDoc)
Definition: dpobject.cxx:3091
bool hasCache(const ScRange &rRange) const
Definition: dpobject.cxx:2905
ScDPSaveData * GetSaveData() const
Definition: dpobject.hxx:140
SC_DLLPUBLIC ScDPObject * InsertNewTable(std::unique_ptr< ScDPObject > pDPObj)
Definition: dpobject.cxx:3730
const ScImportSourceDesc * GetImportSourceDesc() const
Definition: dpobject.hxx:156
const ScDPServiceDesc * GetDPServiceDesc() const
Definition: dpobject.hxx:157
TablesType maTables
Definition: dpobject.hxx:445
bool hasCache(sal_Int32 nSdbType, const OUString &rDBName, const OUString &rCommand) const
Definition: dpobject.cxx:3170
bool hasCache(const OUString &rName) const
Definition: dpobject.cxx:3093
DBCaches(ScDocument &rDoc)
Definition: dpobject.cxx:3168
const char * ReloadCache(const ScDPObject *pDPObj, o3tl::sorted_vector< ScDPObject * > &rRefs)
Definition: dpobject.cxx:3370
void RemoveCache(const ScDPCache *pCache)
Only to be called from ScDPCache::RemoveReference().
Definition: dpobject.cxx:3831
SC_DLLPUBLIC size_t size() const
Definition: dpobject.cxx:3005
UpdateRefMode
Definition: global.hxx:309
Base class that abstracts different data source types of a datapilot table.
Definition: dptabdat.hxx:56
sal_Int32 SCROW
Definition: types.hxx:17
std::vector< ScRange > RangeIndexType
Definition: dpobject.hxx:291
SC_DLLPUBLIC bool HasTable(const ScDPObject *pDPObj) const
Definition: dpobject.cxx:3741
void updateCache(const OUString &rName, const ScRange &rRange, o3tl::sorted_vector< ScDPObject * > &rRefs)
Definition: dpobject.cxx:3127
ScRangeList GetAllTableRanges(SCTAB nTab) const
Definition: dpobject.cxx:3783
OUString aParName
Definition: dpobject.hxx:72
SheetCaches maSheetCaches
Definition: dpobject.hxx:446
OUString aServiceName
Definition: dpobject.hxx:70
std::unordered_set< OUString > ScDPUniqueStringSet
Definition: dptypes.hxx:16
DBCaches maDBCaches
Definition: dpobject.hxx:448
std::unique_ptr< ScImportSourceDesc > pImpDesc
Definition: dpobject.hxx:92
const ScSheetSourceDesc * GetSheetDesc() const
Definition: dpobject.hxx:155
bool operator==(const ScDPServiceDesc &rOther) const
Definition: dpobject.cxx:300
void * p
QPRO_FUNC_TYPE nType
Definition: qproform.cxx:400
void UpdateReference(UpdateRefMode eUpdateRefMode, const ScRange &r, SCCOL nDx, SCROW nDy, SCTAB nDz)
Definition: dpobject.cxx:3592
std::map< OUString, css::uno::Any > maInteropGrabBag
Definition: dpobject.hxx:101
void WriteRefsTo(ScDPCollection &r) const
Definition: dpobject.cxx:3631
ScDocument * pDoc
Definition: dpobject.hxx:85
std::unique_ptr< ScSheetSourceDesc > pSheetDesc
Definition: dpobject.hxx:91
void DeleteOnTab(SCTAB nTab)
Definition: dpobject.cxx:3587
sal_Int32 nHeaderRows
Definition: dpobject.hxx:103
static css::uno::Reference< css::sdbc::XRowSet > createRowSet(sal_Int32 nSdbType, const OUString &rDBName, const OUString &rCommand)
Definition: dpobject.cxx:3221
std::unique_ptr< ScDPOutput > pOutput
Definition: dpobject.hxx:97
NameCaches & GetNameCaches()
Definition: dpobject.cxx:3763
SC_DLLPUBLIC ScDPCache * getExistingCache(const ScRange &rRange)
Definition: dpobject.cxx:2967
This class contains authoritative information on the internal reference used as the data source for d...
Definition: dpshttab.hxx:38
void updateCache(sal_Int32 nSdbType, const OUString &rDBName, const OUString &rCommand, o3tl::sorted_vector< ScDPObject * > &rRefs)
Definition: dpobject.cxx:3275
#define SC_DLLPUBLIC
Definition: scdllapi.h:27
const ScDPCache * getCache(sal_Int32 nSdbType, const OUString &rDBName, const OUString &rCommand, const ScDPDimensionSaveData *pDimData)
Definition: dpobject.cxx:3177
std::pair< bool, css::uno::Any > GetInteropGrabBagValue(const OUString &sName) const
Definition: dpobject.hxx:265
ScDPCache * getExistingCache(const OUString &rName)
Definition: dpobject.cxx:3116
ScRange aOutRange
Definition: dpobject.hxx:90
sal_Int16 SCTAB
Definition: types.hxx:22
void updateCache(const ScRange &rRange, o3tl::sorted_vector< ScDPObject * > &rRefs)
Definition: dpobject.cxx:3041
void FreeTable(const ScDPObject *pDPObj)
Definition: dpobject.cxx:3715