xref: /AOO41X/main/sc/source/filter/xml/xmldrani.hxx (revision 38d50f7b14e1cf975d8c6468d9633894cd59b523)
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 SC_XMLDRANI_HXX
24 #define SC_XMLDRANI_HXX
25 
26 #include <xmloff/xmlictxt.hxx>
27 #include <xmloff/xmlimp.hxx>
28 #include <com/sun/star/sheet/DataImportMode.hpp>
29 #include <com/sun/star/sheet/SubTotalColumn.hpp>
30 #include <com/sun/star/beans/XPropertySet.hpp>
31 #include <com/sun/star/beans/PropertyValue.hpp>
32 #include <com/sun/star/sheet/TableFilterField2.hpp>
33 #include <com/sun/star/table/CellAddress.hpp>
34 #include <com/sun/star/table/CellRangeAddress.hpp>
35 #include <com/sun/star/table/TableOrientation.hpp>
36 
37 class ScXMLImport;
38 
39 class ScXMLDatabaseRangesContext : public SvXMLImportContext
40 {
GetScImport() const41     const ScXMLImport& GetScImport() const { return (const ScXMLImport&)GetImport(); }
GetScImport()42     ScXMLImport& GetScImport() { return (ScXMLImport&)GetImport(); }
43 
44 public:
45 
46     ScXMLDatabaseRangesContext( ScXMLImport& rImport, sal_uInt16 nPrfx,
47                         const ::rtl::OUString& rLName,
48                         const ::com::sun::star::uno::Reference<
49                                         ::com::sun::star::xml::sax::XAttributeList>& xAttrList);
50 
51     virtual ~ScXMLDatabaseRangesContext();
52 
53     virtual SvXMLImportContext *CreateChildContext( sal_uInt16 nPrefix,
54                                      const ::rtl::OUString& rLocalName,
55                                      const ::com::sun::star::uno::Reference<
56                                         ::com::sun::star::xml::sax::XAttributeList>& xAttrList );
57 
58     virtual void EndElement();
59 };
60 
61 struct ScSubTotalRule
62 {
63     sal_Int16 nSubTotalRuleGroupFieldNumber;
64     com::sun::star::uno::Sequence <com::sun::star::sheet::SubTotalColumn> aSubTotalColumns;
65 };
66 
67 class ScXMLDatabaseRangeContext : public SvXMLImportContext
68 {
69     rtl::OUString   sDatabaseRangeName;
70     rtl::OUString   sConnectionRessource;
71     rtl::OUString   sRangeAddress;
72     rtl::OUString   sDatabaseName;
73     rtl::OUString   sSourceObject;
74     com::sun::star::uno::Sequence <com::sun::star::beans::PropertyValue> aSortSequence;
75     com::sun::star::uno::Sequence <com::sun::star::sheet::TableFilterField2> aFilterFields;
76     std::vector < ScSubTotalRule > aSubTotalRules;
77     com::sun::star::table::CellAddress aFilterOutputPosition;
78     com::sun::star::table::CellRangeAddress aFilterConditionSourceRangeAddress;
79     com::sun::star::sheet::DataImportMode nSourceType;
80     com::sun::star::table::TableOrientation eOrientation;
81     sal_Int32       nRefresh;
82     sal_Int16       nSubTotalsUserListIndex;
83     sal_Int16       nSubTotalRuleGroupFieldNumber;
84     sal_Bool        bContainsSort;
85     sal_Bool        bContainsSubTotal;
86     sal_Bool        bNative;
87     sal_Bool        bIsSelection;
88     sal_Bool        bKeepFormats;
89     sal_Bool        bMoveCells;
90     sal_Bool        bStripData;
91     sal_Bool        bContainsHeader;
92     sal_Bool        bAutoFilter;
93     sal_Bool        bSubTotalsBindFormatsToContent;
94     sal_Bool        bSubTotalsIsCaseSensitive;
95     sal_Bool        bSubTotalsInsertPageBreaks;
96     sal_Bool        bSubTotalsSortGroups;
97     sal_Bool        bSubTotalsEnabledUserList;
98     sal_Bool        bSubTotalsAscending;
99     sal_Bool        bFilterCopyOutputData;
100     sal_Bool        bFilterIsCaseSensitive;
101     sal_Bool        bFilterSkipDuplicates;
102     sal_Bool        bFilterUseRegularExpressions;
103     sal_Bool        bFilterConditionSourceRange;
104 
GetScImport() const105     const ScXMLImport& GetScImport() const { return (const ScXMLImport&)GetImport(); }
GetScImport()106     ScXMLImport& GetScImport() { return (ScXMLImport&)GetImport(); }
107 
108 public:
109 
110     ScXMLDatabaseRangeContext( ScXMLImport& rImport, sal_uInt16 nPrfx,
111                         const ::rtl::OUString& rLName,
112                         const ::com::sun::star::uno::Reference<
113                                         ::com::sun::star::xml::sax::XAttributeList>& xAttrList);
114 
115     virtual ~ScXMLDatabaseRangeContext();
116 
117     virtual SvXMLImportContext *CreateChildContext( sal_uInt16 nPrefix,
118                                      const ::rtl::OUString& rLocalName,
119                                      const ::com::sun::star::uno::Reference<
120                                         ::com::sun::star::xml::sax::XAttributeList>& xAttrList );
121 
122     virtual void EndElement();
123 
SetDatabaseName(const rtl::OUString sTempDatabaseName)124     void SetDatabaseName(const rtl::OUString sTempDatabaseName) { sDatabaseName = sTempDatabaseName; }
SetConnectionRessource(const rtl::OUString sTempConRes)125     void SetConnectionRessource(const rtl::OUString sTempConRes) { sConnectionRessource = sTempConRes; }
SetSourceObject(const rtl::OUString sTempSourceObject)126     void SetSourceObject(const rtl::OUString sTempSourceObject) { sSourceObject = sTempSourceObject; }
SetSourceType(const com::sun::star::sheet::DataImportMode nTempSourceType)127     void SetSourceType(const com::sun::star::sheet::DataImportMode nTempSourceType) { nSourceType = nTempSourceType; }
SetNative(const sal_Bool bTempNative)128     void SetNative(const sal_Bool bTempNative) { bNative = bTempNative; }
SetSubTotalsBindFormatsToContent(const sal_Bool bTemp)129     void SetSubTotalsBindFormatsToContent(const sal_Bool bTemp ) { bSubTotalsBindFormatsToContent = bTemp; }
SetSubTotalsIsCaseSensitive(const sal_Bool bTemp)130     void SetSubTotalsIsCaseSensitive(const sal_Bool bTemp) { bSubTotalsIsCaseSensitive = bTemp; }
SetSubTotalsInsertPageBreaks(const sal_Bool bTemp)131     void SetSubTotalsInsertPageBreaks(const sal_Bool bTemp) { bSubTotalsInsertPageBreaks = bTemp; }
SetSubTotalsEnabledUserList(const sal_Bool bTemp)132     void SetSubTotalsEnabledUserList(const sal_Bool bTemp) { bSubTotalsEnabledUserList = bTemp; }
SetSubTotalsUserListIndex(const sal_Int16 nTemp)133     void SetSubTotalsUserListIndex(const sal_Int16 nTemp) { nSubTotalsUserListIndex = nTemp; }
SetSubTotalsAscending(const sal_Bool bTemp)134     void SetSubTotalsAscending(const sal_Bool bTemp) { bSubTotalsAscending = bTemp; }
SetSubTotalsSortGroups(const sal_Bool bTemp)135     void SetSubTotalsSortGroups(const sal_Bool bTemp) { bSubTotalsSortGroups = bTemp; }
AddSubTotalRule(const ScSubTotalRule & rRule)136     void AddSubTotalRule(const ScSubTotalRule& rRule) { aSubTotalRules.push_back(rRule); }
SetSortSequence(const com::sun::star::uno::Sequence<com::sun::star::beans::PropertyValue> & aTempSortSequence)137     void SetSortSequence(const com::sun::star::uno::Sequence <com::sun::star::beans::PropertyValue>& aTempSortSequence) { aSortSequence = aTempSortSequence; }
SetFilterCopyOutputData(const sal_Bool bTemp)138     void SetFilterCopyOutputData(const sal_Bool bTemp) { bFilterCopyOutputData = bTemp; }
SetFilterIsCaseSensitive(const sal_Bool bTemp)139     void SetFilterIsCaseSensitive(const sal_Bool bTemp) { bFilterIsCaseSensitive = bTemp; }
SetFilterSkipDuplicates(const sal_Bool bTemp)140     void SetFilterSkipDuplicates(const sal_Bool bTemp) { bFilterSkipDuplicates = bTemp; }
SetFilterUseRegularExpressions(const sal_Bool bTemp)141     void SetFilterUseRegularExpressions(const sal_Bool bTemp) { bFilterUseRegularExpressions = bTemp; }
SetFilterFields(const com::sun::star::uno::Sequence<com::sun::star::sheet::TableFilterField2> & aTemp)142     void SetFilterFields(const com::sun::star::uno::Sequence <com::sun::star::sheet::TableFilterField2>& aTemp) { aFilterFields = aTemp; }
SetFilterOutputPosition(const com::sun::star::table::CellAddress & aTemp)143     void SetFilterOutputPosition(const com::sun::star::table::CellAddress& aTemp) { aFilterOutputPosition = aTemp; }
SetFilterConditionSourceRangeAddress(const com::sun::star::table::CellRangeAddress & aTemp)144     void SetFilterConditionSourceRangeAddress(const com::sun::star::table::CellRangeAddress& aTemp) { aFilterConditionSourceRangeAddress = aTemp;
145                                                                                                     bFilterConditionSourceRange = sal_True; }
146 };
147 
148 class ScXMLSourceSQLContext : public SvXMLImportContext
149 {
150     ScXMLDatabaseRangeContext*  pDatabaseRangeContext;
151     rtl::OUString               sDBName;
152 
GetScImport() const153     const ScXMLImport& GetScImport() const { return (const ScXMLImport&)GetImport(); }
GetScImport()154     ScXMLImport& GetScImport() { return (ScXMLImport&)GetImport(); }
155 
156 public:
157 
158     ScXMLSourceSQLContext( ScXMLImport& rImport, sal_uInt16 nPrfx,
159                         const ::rtl::OUString& rLName,
160                         const ::com::sun::star::uno::Reference<
161                                         ::com::sun::star::xml::sax::XAttributeList>& xAttrList,
162                                         ScXMLDatabaseRangeContext* pTempDatabaseRangeContext);
163 
164     virtual ~ScXMLSourceSQLContext();
165 
166     virtual SvXMLImportContext *CreateChildContext( sal_uInt16 nPrefix,
167                                      const ::rtl::OUString& rLocalName,
168                                      const ::com::sun::star::uno::Reference<
169                                         ::com::sun::star::xml::sax::XAttributeList>& xAttrList );
170 
171     virtual void EndElement();
172 };
173 
174 class ScXMLSourceTableContext : public SvXMLImportContext
175 {
176     ScXMLDatabaseRangeContext*  pDatabaseRangeContext;
177     rtl::OUString               sDBName;
178 
GetScImport() const179     const ScXMLImport& GetScImport() const { return (const ScXMLImport&)GetImport(); }
GetScImport()180     ScXMLImport& GetScImport() { return (ScXMLImport&)GetImport(); }
181 
182 public:
183 
184     ScXMLSourceTableContext( ScXMLImport& rImport, sal_uInt16 nPrfx,
185                         const ::rtl::OUString& rLName,
186                         const ::com::sun::star::uno::Reference<
187                                         ::com::sun::star::xml::sax::XAttributeList>& xAttrList,
188                                         ScXMLDatabaseRangeContext* pTempDatabaseRangeContext);
189 
190     virtual ~ScXMLSourceTableContext();
191 
192     virtual SvXMLImportContext *CreateChildContext( sal_uInt16 nPrefix,
193                                      const ::rtl::OUString& rLocalName,
194                                      const ::com::sun::star::uno::Reference<
195                                         ::com::sun::star::xml::sax::XAttributeList>& xAttrList );
196 
197     virtual void EndElement();
198 };
199 
200 class ScXMLSourceQueryContext : public SvXMLImportContext
201 {
202     ScXMLDatabaseRangeContext*  pDatabaseRangeContext;
203     rtl::OUString               sDBName;
204 
GetScImport() const205     const ScXMLImport& GetScImport() const { return (const ScXMLImport&)GetImport(); }
GetScImport()206     ScXMLImport& GetScImport() { return (ScXMLImport&)GetImport(); }
207 
208 public:
209 
210     ScXMLSourceQueryContext( ScXMLImport& rImport, sal_uInt16 nPrfx,
211                         const ::rtl::OUString& rLName,
212                         const ::com::sun::star::uno::Reference<
213                                         ::com::sun::star::xml::sax::XAttributeList>& xAttrList,
214                                         ScXMLDatabaseRangeContext* pTempDatabaseRangeContext);
215 
216     virtual ~ScXMLSourceQueryContext();
217 
218     virtual SvXMLImportContext *CreateChildContext( sal_uInt16 nPrefix,
219                                      const ::rtl::OUString& rLocalName,
220                                      const ::com::sun::star::uno::Reference<
221                                         ::com::sun::star::xml::sax::XAttributeList>& xAttrList );
222 
223     virtual void EndElement();
224 };
225 
226 class ScXMLConResContext : public SvXMLImportContext
227 {
228     ScXMLDatabaseRangeContext*  pDatabaseRangeContext;
229 
GetScImport() const230     const ScXMLImport& GetScImport() const { return (const ScXMLImport&)GetImport(); }
GetScImport()231     ScXMLImport& GetScImport() { return (ScXMLImport&)GetImport(); }
232 
233 public:
234 
235     ScXMLConResContext( ScXMLImport& rImport, sal_uInt16 nPrfx,
236                         const ::rtl::OUString& rLName,
237                         const ::com::sun::star::uno::Reference<
238                                         ::com::sun::star::xml::sax::XAttributeList>& xAttrList,
239                                         ScXMLDatabaseRangeContext* pTempDatabaseRangeContext);
240 
241     virtual ~ScXMLConResContext();
242 
243     virtual SvXMLImportContext *CreateChildContext( sal_uInt16 nPrefix,
244                                      const ::rtl::OUString& rLocalName,
245                                      const ::com::sun::star::uno::Reference<
246                                         ::com::sun::star::xml::sax::XAttributeList>& xAttrList );
247 
248     virtual void EndElement();
249 };
250 
251 class ScXMLSubTotalRulesContext : public SvXMLImportContext
252 {
253     ScXMLDatabaseRangeContext* pDatabaseRangeContext;
254 
GetScImport() const255     const ScXMLImport& GetScImport() const { return (const ScXMLImport&)GetImport(); }
GetScImport()256     ScXMLImport& GetScImport() { return (ScXMLImport&)GetImport(); }
257 
258 public:
259 
260     ScXMLSubTotalRulesContext( ScXMLImport& rImport, sal_uInt16 nPrfx,
261                         const ::rtl::OUString& rLName,
262                         const ::com::sun::star::uno::Reference<
263                                         ::com::sun::star::xml::sax::XAttributeList>& xAttrList,
264                                         ScXMLDatabaseRangeContext* pTempDatabaseRangeContext);
265 
266     virtual ~ScXMLSubTotalRulesContext();
267 
268     virtual SvXMLImportContext *CreateChildContext( sal_uInt16 nPrefix,
269                                      const ::rtl::OUString& rLocalName,
270                                      const ::com::sun::star::uno::Reference<
271                                         ::com::sun::star::xml::sax::XAttributeList>& xAttrList );
272 
273     virtual void EndElement();
274 };
275 
276 class ScXMLSortGroupsContext : public SvXMLImportContext
277 {
278     ScXMLDatabaseRangeContext* pDatabaseRangeContext;
279 
GetScImport() const280     const ScXMLImport& GetScImport() const { return (const ScXMLImport&)GetImport(); }
GetScImport()281     ScXMLImport& GetScImport() { return (ScXMLImport&)GetImport(); }
282 
283 public:
284 
285     ScXMLSortGroupsContext( ScXMLImport& rImport, sal_uInt16 nPrfx,
286                         const ::rtl::OUString& rLName,
287                         const ::com::sun::star::uno::Reference<
288                                         ::com::sun::star::xml::sax::XAttributeList>& xAttrList,
289                                         ScXMLDatabaseRangeContext* pTempDatabaseRangeContext);
290 
291     virtual ~ScXMLSortGroupsContext();
292 
293     virtual SvXMLImportContext *CreateChildContext( sal_uInt16 nPrefix,
294                                      const ::rtl::OUString& rLocalName,
295                                      const ::com::sun::star::uno::Reference<
296                                         ::com::sun::star::xml::sax::XAttributeList>& xAttrList );
297 
298     virtual void EndElement();
299 };
300 
301 class ScXMLSubTotalRuleContext : public SvXMLImportContext
302 {
303     ScXMLDatabaseRangeContext*  pDatabaseRangeContext;
304     ScSubTotalRule              aSubTotalRule;
305 
GetScImport() const306     const ScXMLImport& GetScImport() const { return (const ScXMLImport&)GetImport(); }
GetScImport()307     ScXMLImport& GetScImport() { return (ScXMLImport&)GetImport(); }
308 
309 public:
310 
311     ScXMLSubTotalRuleContext( ScXMLImport& rImport, sal_uInt16 nPrfx,
312                         const ::rtl::OUString& rLName,
313                         const ::com::sun::star::uno::Reference<
314                                         ::com::sun::star::xml::sax::XAttributeList>& xAttrList,
315                                         ScXMLDatabaseRangeContext* pTempDatabaseRangeContext);
316 
317     virtual ~ScXMLSubTotalRuleContext();
318 
319     virtual SvXMLImportContext *CreateChildContext( sal_uInt16 nPrefix,
320                                      const ::rtl::OUString& rLocalName,
321                                      const ::com::sun::star::uno::Reference<
322                                         ::com::sun::star::xml::sax::XAttributeList>& xAttrList );
323 
324     virtual void EndElement();
325 
AddSubTotalColumn(const com::sun::star::sheet::SubTotalColumn aSubTotalColumn)326     void AddSubTotalColumn(const com::sun::star::sheet::SubTotalColumn aSubTotalColumn)
327     { aSubTotalRule.aSubTotalColumns.realloc(aSubTotalRule.aSubTotalColumns.getLength() + 1);
328     aSubTotalRule.aSubTotalColumns[aSubTotalRule.aSubTotalColumns.getLength() - 1] = aSubTotalColumn; }
329 };
330 
331 class ScXMLSubTotalFieldContext : public SvXMLImportContext
332 {
333     ScXMLSubTotalRuleContext* pSubTotalRuleContext;
334     rtl::OUString sFieldNumber;
335     rtl::OUString sFunction;
336 
GetScImport() const337     const ScXMLImport& GetScImport() const { return (const ScXMLImport&)GetImport(); }
GetScImport()338     ScXMLImport& GetScImport() { return (ScXMLImport&)GetImport(); }
339 
340 public:
341 
342     ScXMLSubTotalFieldContext( ScXMLImport& rImport, sal_uInt16 nPrfx,
343                         const ::rtl::OUString& rLName,
344                         const ::com::sun::star::uno::Reference<
345                                         ::com::sun::star::xml::sax::XAttributeList>& xAttrList,
346                                         ScXMLSubTotalRuleContext* pSubTotalRuleContext);
347 
348     virtual ~ScXMLSubTotalFieldContext();
349 
350     virtual SvXMLImportContext *CreateChildContext( sal_uInt16 nPrefix,
351                                      const ::rtl::OUString& rLocalName,
352                                      const ::com::sun::star::uno::Reference<
353                                         ::com::sun::star::xml::sax::XAttributeList>& xAttrList );
354 
355     virtual void EndElement();
356 };
357 
358 #endif
359