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 #ifndef INCLUDED_SC_INC_DPOBJECT_HXX
21 #define INCLUDED_SC_INC_DPOBJECT_HXX
22 
23 #include "scdllapi.h"
24 #include "global.hxx"
25 #include "address.hxx"
26 #include "dpcache.hxx"
27 #include "dptypes.hxx"
28 #include "pivot.hxx"
29 #include "calcmacros.hxx"
30 
31 #include <com/sun/star/sheet/DataPilotFieldOrientation.hpp>
32 
33 #include <memory>
34 #include <set>
35 #include <vector>
36 #include <map>
37 
38 namespace com::sun::star {
39 
40  namespace container {
41  class XIndexAccess;
42  class XNameAccess;
43  }
44 
45  namespace sdbc {
46  class XRowSet;
47  }
48 
49  namespace sheet {
50  class XMembersAccess;
51  class XDimensionsSupplier;
52  struct DataPilotTablePositionData;
53  struct DataPilotTableHeaderData;
54  struct DataPilotFieldFilter;
55  }
56 }
57 
58 namespace tools { class Rectangle; }
59 class ScDPSaveData;
60 class ScDPOutput;
61 struct ScImportSourceDesc;
62 class ScSheetSourceDesc;
63 class ScDPTableData;
65 class ScRangeList;
66 class ScDPCache;
67 class ScDocument;
68 
70 {
71  OUString aServiceName;
72  OUString aParSource;
73  OUString aParName;
74  OUString aParUser;
75  OUString aParPass;
76 
77  ScDPServiceDesc( const OUString& rServ, const OUString& rSrc, const OUString& rNam,
78  const OUString& rUser, const OUString& rPass );
79 
80  bool operator== ( const ScDPServiceDesc& rOther ) const;
81 };
82 
84 {
85 private:
87  // settings
88  std::unique_ptr<ScDPSaveData> pSaveData;
89  OUString aTableName;
90  OUString aTableTag;
92  std::unique_ptr<ScSheetSourceDesc> pSheetDesc; // for sheet data
93  std::unique_ptr<ScImportSourceDesc> pImpDesc; // for database data
94  std::unique_ptr<ScDPServiceDesc> pServDesc; // for external service
95  std::shared_ptr<ScDPTableData> mpTableData;
96  // cached data
97  css::uno::Reference<css::sheet::XDimensionsSupplier> xSource;
98  std::unique_ptr<ScDPOutput> pOutput;
99 
100  // name -> sequence of sequences of css::xml::FastAttribute or css::xml::Attribute
101  // see PivotTable::putToInteropGrabBag in sc/source/filter/oox/pivottablebuffer.cxx for details
102  std::map<OUString, css::uno::Any> maInteropGrabBag;
103 
104  long nHeaderRows; // page fields plus filter button
105  bool mbHeaderLayout:1; // true : grid, false : standard
106  bool bAllowMove:1;
107  bool bSettingsChanged:1;
108  bool mbEnableGetPivotData:1;
109 
110  SAL_DLLPRIVATE ScDPTableData* GetTableData();
111  SAL_DLLPRIVATE void CreateObjects();
112  SAL_DLLPRIVATE void CreateOutput();
113  SAL_DLLPRIVATE void ClearSource();
114  SAL_DLLPRIVATE void FillLabelDataForDimension(
115  const css::uno::Reference< css::container::XIndexAccess>& xDims,
116  sal_Int32 nDim, ScDPLabelData& rLabelData);
117 
118 public:
119  ScDPObject(ScDocument* pD);
120  ScDPObject(const ScDPObject& r);
121  ~ScDPObject();
122 
123  ScDPObject& operator= (const ScDPObject& r);
124 
125  void EnableGetPivotData(bool b);
126 
127  void SetAllowMove(bool bSet);
128 
129  void InvalidateData();
130  void Clear();
131  void ClearTableData();
132  void ReloadGroupTableData();
133 
134  void Output( const ScAddress& rPos );
135  ScRange GetNewOutputRange( bool& rOverflow );
136 
137  ScRange GetOutputRangeByType( sal_Int32 nType );
138  ScRange GetOutputRangeByType( sal_Int32 nType ) const;
139 
140  void SetSaveData(const ScDPSaveData& rData);
141  ScDPSaveData* GetSaveData() const { return pSaveData.get(); }
142 
143  void SetOutRange(const ScRange& rRange);
144  const ScRange& GetOutRange() const;
145 
146  void SetHeaderLayout(bool bUseGrid);
147  bool GetHeaderLayout() const { return mbHeaderLayout;}
148 
149  void SetSheetDesc(const ScSheetSourceDesc& rDesc);
150  void SetImportDesc(const ScImportSourceDesc& rDesc);
151  void SetServiceData(const ScDPServiceDesc& rDesc);
152 
153  void WriteSourceDataTo( ScDPObject& rDest ) const;
154  void WriteTempDataTo( ScDPObject& rDest ) const;
155 
156  const ScSheetSourceDesc* GetSheetDesc() const { return pSheetDesc.get(); }
157  const ScImportSourceDesc* GetImportSourceDesc() const { return pImpDesc.get(); }
158  const ScDPServiceDesc* GetDPServiceDesc() const { return pServDesc.get(); }
159 
160  css::uno::Reference<css::sheet::XDimensionsSupplier> const & GetSource();
161 
162  bool IsSheetData() const;
163  bool IsImportData() const { return(pImpDesc != nullptr); }
164  bool IsServiceData() const { return(pServDesc != nullptr); }
165 
166  void SetName(const OUString& rNew);
167  const OUString& GetName() const { return aTableName; }
168  void SetTag(const OUString& rNew);
169  const OUString& GetTag() const { return aTableTag; }
170 
176  bool IsDataDescriptionCell(const ScAddress& rPos);
177 
178  bool IsDimNameInUse(const OUString& rName) const;
179  OUString GetDimName( long nDim, bool& rIsDataLayout, sal_Int32* pFlags = nullptr );
180  bool IsDuplicated( long nDim );
181  long GetDimCount();
182  void GetHeaderPositionData(const ScAddress& rPos, css::sheet::DataPilotTableHeaderData& rData);
183  long GetHeaderDim( const ScAddress& rPos, css::sheet::DataPilotFieldOrientation& rOrient );
184  bool GetHeaderDrag( const ScAddress& rPos, bool bMouseLeft, bool bMouseTop,
185  long nDragDim,
186  tools::Rectangle& rPosRect, css::sheet::DataPilotFieldOrientation& rOrient, long& rDimPos );
187  bool IsFilterButton( const ScAddress& rPos );
188 
189  OUString GetFormattedString( const OUString& rDimName, const double fValue );
190 
191  double GetPivotData(
192  const OUString& rDataFieldName,
193  std::vector<css::sheet::DataPilotFieldFilter>& rFilters);
194 
195  bool ParseFilters(
196  OUString& rDataFieldName,
197  std::vector<css::sheet::DataPilotFieldFilter>& rFilters,
198  std::vector<sal_Int16>& rFilterFuncs,
199  const OUString& rFilterList );
200 
201  void GetMemberResultNames(ScDPUniqueStringSet& rNames, long nDimension);
202 
203  void ToggleDetails(const css::sheet::DataPilotTableHeaderData& rElemDesc, ScDPObject* pDestObj);
204 
205  void FillOldParam(ScPivotParam& rParam) const;
206  void FillLabelData(sal_Int32 nDim, ScDPLabelData& Labels);
207  void FillLabelData(ScPivotParam& rParam);
208 
209  bool GetHierarchiesNA( sal_Int32 nDim, css::uno::Reference< css::container::XNameAccess >& xHiers );
210  void GetHierarchies( sal_Int32 nDim, css::uno::Sequence< OUString >& rHiers );
211 
212  sal_Int32 GetUsedHierarchy( sal_Int32 nDim );
213 
214  bool GetMembersNA( sal_Int32 nDim, css::uno::Reference< css::sheet::XMembersAccess >& xMembers );
215  bool GetMembersNA( sal_Int32 nDim, sal_Int32 nHier, css::uno::Reference< css::sheet::XMembersAccess >& xMembers );
216 
217  bool GetMemberNames( sal_Int32 nDim, css::uno::Sequence< OUString >& rNames );
218  bool GetMembers( sal_Int32 nDim, sal_Int32 nHier, ::std::vector<ScDPLabelData::Member>& rMembers );
219 
220  void UpdateReference( UpdateRefMode eUpdateRefMode,
221  const ScRange& r, SCCOL nDx, SCROW nDy, SCTAB nDz );
222  bool RefsEqual( const ScDPObject& r ) const;
223  void WriteRefsTo( ScDPObject& r ) const;
224 
225  void GetPositionData(const ScAddress& rPos, css::sheet::DataPilotTablePositionData& rPosData);
226 
227  bool GetDataFieldPositionData(const ScAddress& rPos,
228  css::uno::Sequence<
229  css::sheet::DataPilotFieldFilter >& rFilters);
230 
231  void GetDrillDownData(const ScAddress& rPos,
232  css::uno::Sequence< css::uno::Sequence< css::uno::Any > >& rTableData);
233 
234  // apply drop-down attribute, initialize nHeaderRows, without accessing the source
235  // (button attribute must be present)
236  void RefreshAfterLoad();
237 
238  void BuildAllDimensionMembers();
239 
244  bool SyncAllDimensionMembers();
245 
246  static bool HasRegisteredSources();
247  static std::vector<OUString> GetRegisteredSources();
248  static css::uno::Reference<css::sheet::XDimensionsSupplier>
249  CreateSource( const ScDPServiceDesc& rDesc );
250 
251  static void ConvertOrientation(
252  ScDPSaveData& rSaveData,
253  const ScPivotFieldVector& rFields, css::sheet::DataPilotFieldOrientation nOrient,
254  const css::uno::Reference< css::sheet::XDimensionsSupplier>& xSource,
255  const ScDPLabelDataVector& rLabels,
256  const ScPivotFieldVector* pRefColFields = nullptr,
257  const ScPivotFieldVector* pRefRowFields = nullptr,
258  const ScPivotFieldVector* pRefPageFields = nullptr );
259 
260  static bool IsOrientationAllowed( css::sheet::DataPilotFieldOrientation nOrient, sal_Int32 nDimFlags );
261 
262  void PutInteropGrabBag(std::map<OUString, css::uno::Any>&& val)
263  {
264  maInteropGrabBag = std::move(val);
265  }
266  std::pair<bool, css::uno::Any> GetInteropGrabBagValue(const OUString& sName) const
267  {
268  if (const auto it = maInteropGrabBag.find(sName); it != maInteropGrabBag.end())
269  return { true, it->second };
270 
271  return { false, css::uno::Any() };
272  }
273 
274 #if DUMP_PIVOT_TABLE
275  void Dump() const;
276  void DumpCache() const;
277 #endif
278 };
279 
281 {
282  friend class ScDPCache;
283 public:
284 
289  {
290  friend class ScDPCollection;
291  typedef std::map<size_t, std::unique_ptr<ScDPCache>> CachesType;
292  typedef std::vector<ScRange> RangeIndexType;
293  CachesType m_Caches;
294  RangeIndexType maRanges;
296  public:
297  SheetCaches(ScDocument& rDoc);
298  bool hasCache(const ScRange& rRange) const;
299  const ScDPCache* getCache(const ScRange& rRange, const ScDPDimensionSaveData* pDimData);
300  SC_DLLPUBLIC size_t size() const;
301 
302  void updateReference(
303  UpdateRefMode eMode, const ScRange& r, SCCOL nDx, SCROW nDy, SCTAB nDz);
304 
306  SC_DLLPUBLIC const ScDPCache* getExistingCache(const ScRange& rRange) const;
307 
308  void updateCache(const ScRange& rRange, std::set<ScDPObject*>& rRefs);
309  bool remove(const ScDPCache* p);
310 
311  SC_DLLPUBLIC const std::vector<ScRange>& getAllRanges() const;
312  };
313 
318  {
319  friend class ScDPCollection;
320  typedef ::std::map<OUString, std::unique_ptr<ScDPCache>> CachesType;
321  CachesType m_Caches;
323  public:
324  NameCaches(ScDocument& rDoc);
325  bool hasCache(const OUString& rName) const;
326  const ScDPCache* getCache(
327  const OUString& rName, const ScRange& rRange, const ScDPDimensionSaveData* pDimData);
328  size_t size() const;
329  private:
330  ScDPCache* getExistingCache(const OUString& rName);
331 
332  void updateCache(
333  const OUString& rName, const ScRange& rRange, std::set<ScDPObject*>& rRefs);
334  bool remove(const ScDPCache* p);
335  };
336 
341  struct DBType
342  {
343  sal_Int32 mnSdbType;
344  OUString maDBName;
345  OUString maCommand;
346  DBType(sal_Int32 nSdbType, const OUString& rDBName, const OUString& rCommand);
347 
348  struct less
349  {
350  bool operator() (const DBType& left, const DBType& right) const;
351  };
352  };
353 
357  class DBCaches
358  {
359  friend class ScDPCollection;
360  typedef ::std::map<DBType, std::unique_ptr<ScDPCache>, DBType::less> CachesType;
361  CachesType m_Caches;
363  public:
364  DBCaches(ScDocument& rDoc);
365  bool hasCache(sal_Int32 nSdbType, const OUString& rDBName, const OUString& rCommand) const;
366  const ScDPCache* getCache(
367  sal_Int32 nSdbType, const OUString& rDBName, const OUString& rCommand,
368  const ScDPDimensionSaveData* pDimData);
369 
370  private:
372  sal_Int32 nSdbType, const OUString& rDBName, const OUString& rCommand);
373 
374  static css::uno::Reference<css::sdbc::XRowSet> createRowSet(
375  sal_Int32 nSdbType, const OUString& rDBName, const OUString& rCommand);
376 
377  void updateCache(
378  sal_Int32 nSdbType, const OUString& rDBName, const OUString& rCommand,
379  std::set<ScDPObject*>& rRefs);
380  bool remove(const ScDPCache* p);
381  };
382 
383  ScDPCollection(ScDocument& rDocument);
384  ScDPCollection(const ScDPCollection& r);
385  ~ScDPCollection();
386 
387  const char* ReloadCache(const ScDPObject* pDPObj, std::set<ScDPObject*>& rRefs);
388  bool ReloadGroupsInCache(const ScDPObject* pDPObj, std::set<ScDPObject*>& rRefs);
389  SC_DLLPUBLIC bool GetReferenceGroups(const ScDPObject& rDPObj, const ScDPDimensionSaveData** pGroups) const;
390 
391  SC_DLLPUBLIC size_t GetCount() const;
392  SC_DLLPUBLIC ScDPObject& operator[](size_t nIndex);
393  SC_DLLPUBLIC const ScDPObject& operator[](size_t nIndex) const;
394 
395  ScDPObject* GetByName(const OUString& rName) const;
396 
397  void DeleteOnTab( SCTAB nTab );
398  void UpdateReference( UpdateRefMode eUpdateRefMode,
399  const ScRange& r, SCCOL nDx, SCROW nDy, SCTAB nDz );
400  void CopyToTab( SCTAB nOld, SCTAB nNew );
401  bool RefsEqual( const ScDPCollection& r ) const;
402  void WriteRefsTo( ScDPCollection& r ) const;
403 
410  OUString CreateNewName() const;
411 
412  void FreeTable(const ScDPObject* pDPObj);
413  SC_DLLPUBLIC ScDPObject* InsertNewTable(std::unique_ptr<ScDPObject> pDPObj);
414  SC_DLLPUBLIC bool HasTable(const ScDPObject* pDPObj) const;
415 
417  SC_DLLPUBLIC const SheetCaches& GetSheetCaches() const;
419  SC_DLLPUBLIC const NameCaches& GetNameCaches() const;
421  SC_DLLPUBLIC const DBCaches& GetDBCaches() const;
422 
423  ScRangeList GetAllTableRanges( SCTAB nTab ) const;
424  bool IntersectsTableByColumns( SCCOL nCol1, SCCOL nCol2, SCROW nRow, SCTAB nTab ) const;
425  bool IntersectsTableByRows( SCCOL nCol, SCROW nRow1, SCROW nRow2, SCTAB nTab ) const;
426  bool HasTable( const ScRange& rRange ) const;
427 
428 #if DEBUG_PIVOT_TABLE
429  void DumpTables() const;
430 #endif
431 
432 private:
434  void RemoveCache(const ScDPCache* pCache);
435 
436  void GetAllTables(const ScRange& rSrcRange, std::set<ScDPObject*>& rRefs) const;
437  void GetAllTables(const OUString& rSrcName, std::set<ScDPObject*>& rRefs) const;
438  void GetAllTables(
439  sal_Int32 nSdbType, const OUString& rDBName, const OUString& rCommand,
440  std::set<ScDPObject*>& rRefs) const;
441 
442 private:
443  typedef std::vector< std::unique_ptr<ScDPObject> > TablesType;
444 
446  TablesType maTables;
450 };
451 
452 bool operator<(const ScDPCollection::DBType& left, const ScDPCollection::DBType& right);
453 
454 #endif
455 
456 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */
SheetCaches(ScDocument &rDoc)
Definition: dpobject.cxx:2875
const char * ReloadCache(const ScDPObject *pDPObj, std::set< ScDPObject * > &rRefs)
Definition: dpobject.cxx:3371
bool operator()(const DBType &left, const DBType &right) const
Definition: dpobject.cxx:3164
OUString aTableTag
Definition: dpobject.hxx:90
NameCaches maNameCaches
Definition: dpobject.hxx:448
This class has to do with handling exclusively grouped dimensions? TODO: Find out what this class doe...
Definition: dpdimsave.hxx:160
void CopyToTab(SCTAB nOld, SCTAB nNew)
Definition: dpobject.cxx:3603
SC_DLLPUBLIC size_t GetCount() const
Definition: dpobject.cxx:3677
exports com.sun.star. sdbc
sal_uInt64 left
SC_DLLPUBLIC SheetCaches & GetSheetCaches()
Definition: dpobject.cxx:3754
DBType(sal_Int32 nSdbType, const OUString &rDBName, const OUString &rCommand)
Definition: dpobject.cxx:3161
bool RefsEqual(const ScDPCollection &r) const
Definition: dpobject.cxx:3626
OUString aParPass
Definition: dpobject.hxx:75
::std::map< DBType, std::unique_ptr< ScDPCache >, DBType::less > CachesType
Definition: dpobject.hxx:360
SC_DLLPUBLIC bool GetReferenceGroups(const ScDPObject &rDPObj, const ScDPDimensionSaveData **pGroups) const
Definition: dpobject.cxx:3523
std::map< size_t, std::unique_ptr< ScDPCache > > CachesType
Definition: dpobject.hxx:291
void PutInteropGrabBag(std::map< OUString, css::uno::Any > &&val)
Definition: dpobject.hxx:262
void updateReference(UpdateRefMode eMode, const ScRange &r, SCCOL nDx, SCROW nDy, SCTAB nDz)
Definition: dpobject.cxx:3011
std::vector< std::unique_ptr< ScDPObject > > TablesType
Definition: dpobject.hxx:443
Data caches for range name based source data.
Definition: dpobject.hxx:317
This class represents the cached data part of the datapilot cache table implementation.
Definition: dpcache.hxx:47
OUString aParSource
Definition: dpobject.hxx:72
bool IsImportData() const
Definition: dpobject.hxx:163
OUString aTableName
Definition: dpobject.hxx:89
void updateCache(const ScRange &rRange, std::set< ScDPObject * > &rRefs)
Definition: dpobject.cxx:3042
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
long nHeaderRows
Definition: dpobject.hxx:104
ScDPCollection(ScDocument &rDocument)
Definition: dpobject.cxx:3331
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:3703
std::shared_ptr< ScDPTableData > mpTableData
Definition: dpobject.hxx:95
const OUString & GetTag() const
Definition: dpobject.hxx:169
ScDocument & mrDoc
Definition: dpobject.hxx:445
css::uno::Reference< css::sheet::XDimensionsSupplier > xSource
Definition: dpobject.hxx:97
Data caches for external database sources.
Definition: dpobject.hxx:357
std::unique_ptr< ScDPServiceDesc > pServDesc
Definition: dpobject.hxx:94
Defines connection type to external data source.
Definition: dpobject.hxx:341
bool IsServiceData() const
Definition: dpobject.hxx:164
bool GetHeaderLayout() const
Definition: dpobject.hxx:147
OUString aParUser
Definition: dpobject.hxx:74
ScDPObject * GetByName(const OUString &rName) const
Definition: dpobject.cxx:3692
bool IntersectsTableByColumns(SCCOL nCol1, SCCOL nCol2, SCROW nRow, SCTAB nTab) const
Definition: dpobject.cxx:3789
const ScDPCache * getCache(const OUString &rName, const ScRange &rRange, const ScDPDimensionSaveData *pDimData)
Definition: dpobject.cxx:3099
def right
bool IntersectsTableByRows(SCCOL nCol, SCROW nRow1, SCROW nRow2, SCTAB nTab) const
Definition: dpobject.cxx:3794
ScDPCache * getExistingCache(sal_Int32 nSdbType, const OUString &rDBName, const OUString &rCommand)
Definition: dpobject.cxx:3214
SC_DLLPUBLIC ScDPObject & operator[](size_t nIndex)
Definition: dpobject.cxx:3682
bool operator<(const ScDPCollection::DBType &left, const ScDPCollection::DBType &right)
Definition: dpobject.cxx:3929
SC_DLLPUBLIC const std::vector< ScRange > & getAllRanges() const
Definition: dpobject.cxx:3087
std::vector< std::unique_ptr< ScDPLabelData > > ScDPLabelDataVector
Definition: pivot.hxx:113
Stores and manages all caches from internal sheets.
Definition: dpobject.hxx:288
std::vector< ScPivotField > ScPivotFieldVector
Definition: pivot.hxx:129
const ScDPCache * getCache(const ScRange &rRange, const ScDPDimensionSaveData *pDimData)
Definition: dpobject.cxx:2918
sal_Int16 SCCOL
Definition: types.hxx:22
::std::map< OUString, std::unique_ptr< ScDPCache > > CachesType
Definition: dpobject.hxx:320
DBCaches & GetDBCaches()
Definition: dpobject.cxx:3774
const OUString & GetName() const
Definition: dpobject.hxx:167
std::unique_ptr< ScDPSaveData > pSaveData
Definition: dpobject.hxx:88
NameCaches(ScDocument &rDoc)
Definition: dpobject.cxx:3092
bool hasCache(const ScRange &rRange) const
Definition: dpobject.cxx:2906
ScDPSaveData * GetSaveData() const
Definition: dpobject.hxx:141
SC_DLLPUBLIC ScDPObject * InsertNewTable(std::unique_ptr< ScDPObject > pDPObj)
Definition: dpobject.cxx:3731
const ScImportSourceDesc * GetImportSourceDesc() const
Definition: dpobject.hxx:157
const ScDPServiceDesc * GetDPServiceDesc() const
Definition: dpobject.hxx:158
bool ReloadGroupsInCache(const ScDPObject *pDPObj, std::set< ScDPObject * > &rRefs)
Definition: dpobject.cxx:3435
TablesType maTables
Definition: dpobject.hxx:446
bool hasCache(sal_Int32 nSdbType, const OUString &rDBName, const OUString &rCommand) const
Definition: dpobject.cxx:3171
bool hasCache(const OUString &rName) const
Definition: dpobject.cxx:3094
DBCaches(ScDocument &rDoc)
Definition: dpobject.cxx:3169
void RemoveCache(const ScDPCache *pCache)
Only to be called from ScDPCache::RemoveReference().
Definition: dpobject.cxx:3832
SC_DLLPUBLIC size_t size() const
Definition: dpobject.cxx:3006
UpdateRefMode
Definition: global.hxx:310
Base class that abstracts different data source types of a datapilot table.
Definition: dptabdat.hxx:56
sal_Int32 SCROW
Definition: types.hxx:18
std::vector< ScRange > RangeIndexType
Definition: dpobject.hxx:292
SC_DLLPUBLIC bool HasTable(const ScDPObject *pDPObj) const
Definition: dpobject.cxx:3742
void GetAllTables(const ScRange &rSrcRange, std::set< ScDPObject * > &rRefs) const
Definition: dpobject.cxx:3847
ScRangeList GetAllTableRanges(SCTAB nTab) const
Definition: dpobject.cxx:3784
OUString aParName
Definition: dpobject.hxx:73
SheetCaches maSheetCaches
Definition: dpobject.hxx:447
OUString aServiceName
Definition: dpobject.hxx:71
std::unordered_set< OUString > ScDPUniqueStringSet
Definition: dptypes.hxx:17
DBCaches maDBCaches
Definition: dpobject.hxx:449
std::unique_ptr< ScImportSourceDesc > pImpDesc
Definition: dpobject.hxx:93
const ScSheetSourceDesc * GetSheetDesc() const
Definition: dpobject.hxx:156
bool operator==(const ScDPServiceDesc &rOther) const
Definition: dpobject.cxx:300
void * p
QPRO_FUNC_TYPE nType
Definition: qproform.cxx:401
void UpdateReference(UpdateRefMode eUpdateRefMode, const ScRange &r, SCCOL nDx, SCROW nDy, SCTAB nDz)
Definition: dpobject.cxx:3593
std::map< OUString, css::uno::Any > maInteropGrabBag
Definition: dpobject.hxx:102
void WriteRefsTo(ScDPCollection &r) const
Definition: dpobject.cxx:3632
ScDocument * pDoc
Definition: dpobject.hxx:86
std::unique_ptr< ScSheetSourceDesc > pSheetDesc
Definition: dpobject.hxx:92
void DeleteOnTab(SCTAB nTab)
Definition: dpobject.cxx:3588
static css::uno::Reference< css::sdbc::XRowSet > createRowSet(sal_Int32 nSdbType, const OUString &rDBName, const OUString &rCommand)
Definition: dpobject.cxx:3222
std::unique_ptr< ScDPOutput > pOutput
Definition: dpobject.hxx:98
NameCaches & GetNameCaches()
Definition: dpobject.cxx:3764
SC_DLLPUBLIC ScDPCache * getExistingCache(const ScRange &rRange)
Definition: dpobject.cxx:2968
This class contains authoritative information on the internal reference used as the data source for d...
Definition: dpshttab.hxx:39
#define SC_DLLPUBLIC
Definition: scdllapi.h:28
const ScDPCache * getCache(sal_Int32 nSdbType, const OUString &rDBName, const OUString &rCommand, const ScDPDimensionSaveData *pDimData)
Definition: dpobject.cxx:3178
std::pair< bool, css::uno::Any > GetInteropGrabBagValue(const OUString &sName) const
Definition: dpobject.hxx:266
void updateCache(sal_Int32 nSdbType, const OUString &rDBName, const OUString &rCommand, std::set< ScDPObject * > &rRefs)
Definition: dpobject.cxx:3276
ScDPCache * getExistingCache(const OUString &rName)
Definition: dpobject.cxx:3117
ScRange aOutRange
Definition: dpobject.hxx:91
void updateCache(const OUString &rName, const ScRange &rRange, std::set< ScDPObject * > &rRefs)
Definition: dpobject.cxx:3128
sal_Int16 SCTAB
Definition: types.hxx:23
void FreeTable(const ScDPObject *pDPObj)
Definition: dpobject.cxx:3716