Line data Source code
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 : #include <sal/config.h>
21 :
22 : #include <o3tl/ptr_container.hxx>
23 : #include <svl/zforlist.hxx>
24 : #include <sal/macros.h>
25 :
26 : #include <xmloff/nmspmap.hxx>
27 : #include <xmloff/xmlnmspe.hxx>
28 : #include <xmloff/i18nmap.hxx>
29 : #include <xmloff/xmltkmap.hxx>
30 : #include <xmloff/xmlictxt.hxx>
31 : #include <xmloff/xmlmetai.hxx>
32 : #include <sfx2/objsh.hxx>
33 : #include <xmloff/xmlnumfi.hxx>
34 : #include <xmloff/xmlscripti.hxx>
35 : #include <xmloff/XMLFontStylesContext.hxx>
36 : #include <xmloff/DocumentSettingsContext.hxx>
37 : #include <xmloff/xmluconv.hxx>
38 : #include <xmloff/numehelp.hxx>
39 : #include <xmloff/xmltoken.hxx>
40 : #include <xmloff/xmlerror.hxx>
41 :
42 : #include <sax/tools/converter.hxx>
43 :
44 : #include <svl/zformat.hxx>
45 : #include <svl/languageoptions.hxx>
46 : #include <editeng/editstat.hxx>
47 :
48 : #include "appluno.hxx"
49 : #include "xmlimprt.hxx"
50 : #include "document.hxx"
51 : #include "docsh.hxx"
52 : #include "docuno.hxx"
53 : #include "nameuno.hxx"
54 : #include "xmlbodyi.hxx"
55 : #include "xmlstyli.hxx"
56 : #include "ViewSettingsSequenceDefines.hxx"
57 :
58 : #include "patattr.hxx"
59 :
60 : #include "XMLConverter.hxx"
61 : #include "XMLDetectiveContext.hxx"
62 : #include "XMLTableShapeImportHelper.hxx"
63 : #include "XMLChangeTrackingImportHelper.hxx"
64 : #include "chgviset.hxx"
65 : #include "XMLStylesImportHelper.hxx"
66 : #include "sheetdata.hxx"
67 : #include "rangeutl.hxx"
68 : #include "postit.hxx"
69 : #include "formulaparserpool.hxx"
70 : #include "externalrefmgr.hxx"
71 : #include "editutil.hxx"
72 : #include "editattributemap.hxx"
73 : #include "documentimport.hxx"
74 : #include "pivotsource.hxx"
75 : #include <unonames.hxx>
76 : #include <numformat.hxx>
77 :
78 : #include <comphelper/extract.hxx>
79 :
80 : #include <com/sun/star/document/XDocumentPropertiesSupplier.hpp>
81 : #include <com/sun/star/frame/XModel.hpp>
82 : #include <com/sun/star/sheet/XSheetCellRange.hpp>
83 : #include <com/sun/star/sheet/XCellRangeAddressable.hpp>
84 : #include <com/sun/star/sheet/XSpreadsheetDocument.hpp>
85 : #include <com/sun/star/util/XMergeable.hpp>
86 : #include <com/sun/star/sheet/CellInsertMode.hpp>
87 : #include <com/sun/star/sheet/XCellRangeMovement.hpp>
88 : #include <com/sun/star/document/XActionLockable.hpp>
89 : #include <com/sun/star/util/NumberFormat.hpp>
90 : #include <com/sun/star/util/XNumberFormatTypes.hpp>
91 : #include <com/sun/star/sheet/XNamedRanges.hpp>
92 : #include <com/sun/star/sheet/NamedRangeFlag.hpp>
93 : #include <com/sun/star/sheet/XNamedRange.hpp>
94 : #include <com/sun/star/sheet/XLabelRanges.hpp>
95 : #include <com/sun/star/io/XSeekable.hpp>
96 : #include <com/sun/star/beans/XPropertySet.hpp>
97 :
98 : #include <memory>
99 : #include <utility>
100 :
101 : #define SC_LOCALE "Locale"
102 : #define SC_STANDARDFORMAT "StandardFormat"
103 : #define SC_CURRENCYSYMBOL "CurrencySymbol"
104 : #define SC_REPEAT_ROW "repeat-row"
105 : #define SC_FILTER "filter"
106 : #define SC_PRINT_RANGE "print-range"
107 :
108 : using namespace com::sun::star;
109 : using namespace ::xmloff::token;
110 : using namespace ::formula;
111 : using ::com::sun::star::uno::Reference;
112 : using ::com::sun::star::uno::UNO_QUERY;
113 :
114 216 : OUString SAL_CALL ScXMLImport_getImplementationName() throw()
115 : {
116 216 : return OUString( "com.sun.star.comp.Calc.XMLOasisImporter" );
117 : }
118 :
119 2 : uno::Sequence< OUString > SAL_CALL ScXMLImport_getSupportedServiceNames() throw()
120 : {
121 2 : const OUString aServiceName( ScXMLImport_getImplementationName() );
122 2 : return uno::Sequence< OUString > ( &aServiceName, 1 );
123 : }
124 :
125 30 : uno::Reference< uno::XInterface > SAL_CALL ScXMLImport_createInstance(
126 : const uno::Reference< lang::XMultiServiceFactory > & rSMgr ) throw( uno::Exception )
127 : {
128 : // #110680#
129 : // return (cppu::OWeakObject*)new ScXMLImport(IMPORT_ALL);
130 30 : return static_cast<cppu::OWeakObject*>(new ScXMLImport( comphelper::getComponentContext(rSMgr), ScXMLImport_getImplementationName(), SvXMLImportFlags::ALL ));
131 : }
132 :
133 390 : OUString SAL_CALL ScXMLImport_Meta_getImplementationName() throw()
134 : {
135 390 : return OUString( "com.sun.star.comp.Calc.XMLOasisMetaImporter" );
136 : }
137 :
138 32 : uno::Sequence< OUString > SAL_CALL ScXMLImport_Meta_getSupportedServiceNames() throw()
139 : {
140 32 : const OUString aServiceName( ScXMLImport_Meta_getImplementationName() );
141 32 : return uno::Sequence< OUString > ( &aServiceName, 1 );
142 : }
143 :
144 146 : uno::Reference< uno::XInterface > SAL_CALL ScXMLImport_Meta_createInstance(
145 : const uno::Reference< lang::XMultiServiceFactory > & rSMgr ) throw( uno::Exception )
146 : {
147 : // #110680#
148 : // return (cppu::OWeakObject*)new ScXMLImport(IMPORT_META);
149 146 : return static_cast<cppu::OWeakObject*>(new ScXMLImport( comphelper::getComponentContext(rSMgr), ScXMLImport_Meta_getImplementationName(), SvXMLImportFlags::META ));
150 : }
151 :
152 384 : OUString SAL_CALL ScXMLImport_Styles_getImplementationName() throw()
153 : {
154 384 : return OUString( "com.sun.star.comp.Calc.XMLOasisStylesImporter" );
155 : }
156 :
157 33 : uno::Sequence< OUString > SAL_CALL ScXMLImport_Styles_getSupportedServiceNames() throw()
158 : {
159 33 : const OUString aServiceName( ScXMLImport_Styles_getImplementationName() );
160 33 : return uno::Sequence< OUString > ( &aServiceName, 1 );
161 : }
162 :
163 170 : uno::Reference< uno::XInterface > SAL_CALL ScXMLImport_Styles_createInstance(
164 : const uno::Reference< lang::XMultiServiceFactory > & rSMgr ) throw( uno::Exception )
165 : {
166 : // #110680#
167 : // return (cppu::OWeakObject*)new ScXMLImport(SvXMLImportFlagsSTYLES|SvXMLImportFlags::AUTOSTYLES|SvXMLImportFlags::MASTERSTYLES|SvXMLImportFlags::FONTDECLS);
168 170 : return static_cast<cppu::OWeakObject*>(new ScXMLImport( comphelper::getComponentContext(rSMgr), ScXMLImport_Styles_getImplementationName(), SvXMLImportFlags::STYLES|SvXMLImportFlags::AUTOSTYLES|SvXMLImportFlags::MASTERSTYLES|SvXMLImportFlags::FONTDECLS));
169 : }
170 :
171 346 : OUString SAL_CALL ScXMLImport_Content_getImplementationName() throw()
172 : {
173 346 : return OUString( "com.sun.star.comp.Calc.XMLOasisContentImporter" );
174 : }
175 :
176 32 : uno::Sequence< OUString > SAL_CALL ScXMLImport_Content_getSupportedServiceNames() throw()
177 : {
178 32 : const OUString aServiceName( ScXMLImport_Content_getImplementationName() );
179 32 : return uno::Sequence< OUString > ( &aServiceName, 1 );
180 : }
181 :
182 167 : uno::Reference< uno::XInterface > SAL_CALL ScXMLImport_Content_createInstance(
183 : const uno::Reference< lang::XMultiServiceFactory > & rSMgr ) throw( uno::Exception )
184 : {
185 : // #110680#
186 : // return (cppu::OWeakObject*)new ScXMLImport(SvXMLImportFlags::META|SvXMLImportFlags::STYLES|SvXMLImportFlags::MASTERSTYLES|SvXMLImportFlags::AUTOSTYLES|SvXMLImportFlags::CONTENT|SvXMLImportFlags::SCRIPTS|SvXMLImportFlags::SETTINGS|SvXMLImportFlags::FONTDECLS);
187 167 : return static_cast<cppu::OWeakObject*>(new ScXMLImport( comphelper::getComponentContext(rSMgr), ScXMLImport_Content_getImplementationName(), SvXMLImportFlags::AUTOSTYLES|SvXMLImportFlags::CONTENT|SvXMLImportFlags::SCRIPTS|SvXMLImportFlags::FONTDECLS));
188 : }
189 :
190 319 : OUString SAL_CALL ScXMLImport_Settings_getImplementationName() throw()
191 : {
192 319 : return OUString( "com.sun.star.comp.Calc.XMLOasisSettingsImporter" );
193 : }
194 :
195 33 : uno::Sequence< OUString > SAL_CALL ScXMLImport_Settings_getSupportedServiceNames() throw()
196 : {
197 33 : const OUString aServiceName( ScXMLImport_Settings_getImplementationName() );
198 33 : return uno::Sequence< OUString > ( &aServiceName, 1 );
199 : }
200 :
201 170 : uno::Reference< uno::XInterface > SAL_CALL ScXMLImport_Settings_createInstance(
202 : const uno::Reference< lang::XMultiServiceFactory > & rSMgr ) throw( uno::Exception )
203 : {
204 : // #110680#
205 : // return (cppu::OWeakObject*)new ScXMLImport(SvXMLImportFlags::SETTINGS);
206 170 : return static_cast<cppu::OWeakObject*>(new ScXMLImport( comphelper::getComponentContext(rSMgr), ScXMLImport_Settings_getImplementationName(), SvXMLImportFlags::SETTINGS ));
207 : }
208 :
209 14719 : const SvXMLTokenMap& ScXMLImport::GetTableRowCellAttrTokenMap()
210 : {
211 : static const SvXMLTokenMapEntry aTableRowCellAttrTokenMap[] =
212 : {
213 : { XML_NAMESPACE_TABLE, XML_STYLE_NAME, XML_TOK_TABLE_ROW_CELL_ATTR_STYLE_NAME },
214 : { XML_NAMESPACE_TABLE, XML_CONTENT_VALIDATION_NAME, XML_TOK_TABLE_ROW_CELL_ATTR_CONTENT_VALIDATION_NAME },
215 : { XML_NAMESPACE_TABLE, XML_NUMBER_ROWS_SPANNED, XML_TOK_TABLE_ROW_CELL_ATTR_SPANNED_ROWS },
216 : { XML_NAMESPACE_TABLE, XML_NUMBER_COLUMNS_SPANNED, XML_TOK_TABLE_ROW_CELL_ATTR_SPANNED_COLS },
217 : { XML_NAMESPACE_TABLE, XML_NUMBER_MATRIX_COLUMNS_SPANNED, XML_TOK_TABLE_ROW_CELL_ATTR_SPANNED_MATRIX_COLS },
218 : { XML_NAMESPACE_TABLE, XML_NUMBER_MATRIX_ROWS_SPANNED, XML_TOK_TABLE_ROW_CELL_ATTR_SPANNED_MATRIX_ROWS },
219 : { XML_NAMESPACE_TABLE, XML_NUMBER_COLUMNS_REPEATED, XML_TOK_TABLE_ROW_CELL_ATTR_REPEATED },
220 : { XML_NAMESPACE_OFFICE, XML_VALUE_TYPE, XML_TOK_TABLE_ROW_CELL_ATTR_VALUE_TYPE },
221 : { XML_NAMESPACE_CALC_EXT, XML_VALUE_TYPE, XML_TOK_TABLE_ROW_CELL_ATTR_NEW_VALUE_TYPE },
222 : { XML_NAMESPACE_OFFICE, XML_VALUE, XML_TOK_TABLE_ROW_CELL_ATTR_VALUE },
223 : { XML_NAMESPACE_OFFICE, XML_DATE_VALUE, XML_TOK_TABLE_ROW_CELL_ATTR_DATE_VALUE },
224 : { XML_NAMESPACE_OFFICE, XML_TIME_VALUE, XML_TOK_TABLE_ROW_CELL_ATTR_TIME_VALUE },
225 : { XML_NAMESPACE_OFFICE, XML_STRING_VALUE, XML_TOK_TABLE_ROW_CELL_ATTR_STRING_VALUE },
226 : { XML_NAMESPACE_OFFICE, XML_BOOLEAN_VALUE, XML_TOK_TABLE_ROW_CELL_ATTR_BOOLEAN_VALUE },
227 : { XML_NAMESPACE_TABLE, XML_FORMULA, XML_TOK_TABLE_ROW_CELL_ATTR_FORMULA },
228 : { XML_NAMESPACE_OFFICE, XML_CURRENCY, XML_TOK_TABLE_ROW_CELL_ATTR_CURRENCY },
229 : XML_TOKEN_MAP_END
230 : };
231 :
232 14719 : if ( !pTableRowCellAttrTokenMap )
233 197 : pTableRowCellAttrTokenMap = new SvXMLTokenMap( aTableRowCellAttrTokenMap );
234 14719 : return *pTableRowCellAttrTokenMap;
235 : }
236 :
237 : // NB: virtually inherit so we can multiply inherit properly
238 : // in ScXMLFlatDocContext_Impl
239 : class ScXMLDocContext_Impl : public virtual SvXMLImportContext
240 : {
241 : protected:
242 4953 : ScXMLImport& GetScImport() { return static_cast<ScXMLImport&>(GetImport()); }
243 :
244 : public:
245 :
246 : ScXMLDocContext_Impl( ScXMLImport& rImport,
247 : sal_uInt16 nPrfx,
248 : const OUString& rLName,
249 : const uno::Reference<xml::sax::XAttributeList>& xAttrList );
250 : virtual ~ScXMLDocContext_Impl();
251 :
252 : virtual SvXMLImportContext *CreateChildContext( sal_uInt16 nPrefix,
253 : const OUString& rLocalName,
254 : const uno::Reference<xml::sax::XAttributeList>& xAttrList ) SAL_OVERRIDE;
255 : };
256 :
257 532 : ScXMLDocContext_Impl::ScXMLDocContext_Impl( ScXMLImport& rImport, sal_uInt16 nPrfx,
258 : const OUString& rLName,
259 : const uno::Reference<xml::sax::XAttributeList>& /* xAttrList */ ) :
260 532 : SvXMLImportContext( rImport, nPrfx, rLName )
261 : {
262 :
263 532 : }
264 :
265 1536 : ScXMLDocContext_Impl::~ScXMLDocContext_Impl()
266 : {
267 1536 : }
268 :
269 : // context for flat file xml format
270 : class ScXMLFlatDocContext_Impl
271 : : public ScXMLDocContext_Impl, public SvXMLMetaDocumentContext
272 : {
273 : public:
274 : ScXMLFlatDocContext_Impl( ScXMLImport& i_rImport,
275 : sal_uInt16 i_nPrefix, const OUString & i_rLName,
276 : const uno::Reference<xml::sax::XAttributeList>& i_xAttrList,
277 : const uno::Reference<document::XDocumentProperties>& i_xDocProps);
278 :
279 : virtual ~ScXMLFlatDocContext_Impl();
280 :
281 : virtual SvXMLImportContext *CreateChildContext(
282 : sal_uInt16 i_nPrefix, const OUString& i_rLocalName,
283 : const uno::Reference<xml::sax::XAttributeList>& i_xAttrList) SAL_OVERRIDE;
284 : };
285 :
286 30 : ScXMLFlatDocContext_Impl::ScXMLFlatDocContext_Impl( ScXMLImport& i_rImport,
287 : sal_uInt16 i_nPrefix, const OUString & i_rLName,
288 : const uno::Reference<xml::sax::XAttributeList>& i_xAttrList,
289 : const uno::Reference<document::XDocumentProperties>& i_xDocProps) :
290 : SvXMLImportContext(i_rImport, i_nPrefix, i_rLName),
291 : ScXMLDocContext_Impl(i_rImport, i_nPrefix, i_rLName, i_xAttrList),
292 : SvXMLMetaDocumentContext(i_rImport, i_nPrefix, i_rLName,
293 30 : i_xDocProps)
294 : {
295 30 : }
296 :
297 60 : ScXMLFlatDocContext_Impl::~ScXMLFlatDocContext_Impl() { }
298 :
299 182 : SvXMLImportContext *ScXMLFlatDocContext_Impl::CreateChildContext(
300 : sal_uInt16 i_nPrefix, const OUString& i_rLocalName,
301 : const uno::Reference<xml::sax::XAttributeList>& i_xAttrList)
302 : {
303 : // behave like meta base class iff we encounter office:meta
304 182 : const SvXMLTokenMap& rTokenMap = GetScImport().GetDocElemTokenMap();
305 182 : if ( XML_TOK_DOC_META == rTokenMap.Get( i_nPrefix, i_rLocalName ) ) {
306 : return SvXMLMetaDocumentContext::CreateChildContext(
307 30 : i_nPrefix, i_rLocalName, i_xAttrList );
308 : } else {
309 : return ScXMLDocContext_Impl::CreateChildContext(
310 152 : i_nPrefix, i_rLocalName, i_xAttrList );
311 : }
312 : }
313 :
314 : class ScXMLBodyContext_Impl : public SvXMLImportContext
315 : {
316 197 : ScXMLImport& GetScImport() { return static_cast<ScXMLImport&>(GetImport()); }
317 :
318 : public:
319 :
320 : ScXMLBodyContext_Impl( ScXMLImport& rImport, sal_uInt16 nPrfx,
321 : const OUString& rLName,
322 : const uno::Reference< xml::sax::XAttributeList > & xAttrList );
323 : virtual ~ScXMLBodyContext_Impl();
324 :
325 : virtual SvXMLImportContext *CreateChildContext( sal_uInt16 nPrefix,
326 : const OUString& rLocalName,
327 : const uno::Reference< xml::sax::XAttributeList > & xAttrList ) SAL_OVERRIDE;
328 : };
329 :
330 197 : ScXMLBodyContext_Impl::ScXMLBodyContext_Impl( ScXMLImport& rImport,
331 : sal_uInt16 nPrfx, const OUString& rLName,
332 : const uno::Reference< xml::sax::XAttributeList > & /* xAttrList */ ) :
333 197 : SvXMLImportContext( rImport, nPrfx, rLName )
334 : {
335 197 : }
336 :
337 394 : ScXMLBodyContext_Impl::~ScXMLBodyContext_Impl()
338 : {
339 394 : }
340 :
341 197 : SvXMLImportContext *ScXMLBodyContext_Impl::CreateChildContext(
342 : sal_uInt16 /* nPrefix */,
343 : const OUString& rLocalName,
344 : const uno::Reference< xml::sax::XAttributeList > & xAttrList )
345 : {
346 197 : return GetScImport().CreateBodyContext( rLocalName, xAttrList );
347 : }
348 :
349 1656 : SvXMLImportContext *ScXMLDocContext_Impl::CreateChildContext( sal_uInt16 nPrefix,
350 : const OUString& rLocalName,
351 : const uno::Reference<xml::sax::XAttributeList>& xAttrList )
352 : {
353 1656 : SvXMLImportContext *pContext(0);
354 :
355 1656 : const SvXMLTokenMap& rTokenMap(GetScImport().GetDocElemTokenMap());
356 1656 : switch( rTokenMap.Get( nPrefix, rLocalName ) )
357 : {
358 : case XML_TOK_DOC_FONTDECLS:
359 364 : if (GetScImport().getImportFlags() & SvXMLImportFlags::FONTDECLS)
360 364 : pContext = GetScImport().CreateFontDeclsContext(nPrefix, rLocalName, xAttrList);
361 364 : break;
362 : case XML_TOK_DOC_STYLES:
363 198 : if (GetScImport().getImportFlags() & SvXMLImportFlags::STYLES)
364 198 : pContext = GetScImport().CreateStylesContext( rLocalName, xAttrList, false);
365 198 : break;
366 : case XML_TOK_DOC_AUTOSTYLES:
367 364 : if (GetScImport().getImportFlags() & SvXMLImportFlags::AUTOSTYLES)
368 364 : pContext = GetScImport().CreateStylesContext( rLocalName, xAttrList, true);
369 364 : break;
370 : case XML_TOK_DOC_MASTERSTYLES:
371 197 : if (GetScImport().getImportFlags() & SvXMLImportFlags::MASTERSTYLES)
372 197 : pContext = new ScXMLMasterStylesContext( GetImport(), nPrefix, rLocalName,
373 197 : xAttrList );
374 197 : break;
375 : case XML_TOK_DOC_META:
376 : DBG_WARNING("XML_TOK_DOC_META: should not have come here, maybe document is invalid?");
377 0 : break;
378 : case XML_TOK_DOC_SCRIPTS:
379 168 : if (GetScImport().getImportFlags() & SvXMLImportFlags::SCRIPTS)
380 168 : pContext = GetScImport().CreateScriptContext( rLocalName );
381 168 : break;
382 : case XML_TOK_DOC_BODY:
383 197 : if (GetScImport().getImportFlags() & SvXMLImportFlags::CONTENT)
384 : pContext = new ScXMLBodyContext_Impl( GetScImport(), nPrefix,
385 197 : rLocalName, xAttrList );
386 197 : break;
387 : case XML_TOK_DOC_SETTINGS:
388 168 : if (GetScImport().getImportFlags() & SvXMLImportFlags::SETTINGS)
389 168 : pContext = new XMLDocumentSettingsContext(GetScImport(), nPrefix, rLocalName, xAttrList );
390 168 : break;
391 : }
392 :
393 1656 : if(!pContext)
394 0 : pContext = new SvXMLImportContext( GetImport(), nPrefix, rLocalName );
395 :
396 1656 : return pContext;
397 : }
398 :
399 1838 : const SvXMLTokenMap& ScXMLImport::GetDocElemTokenMap()
400 : {
401 1838 : if( !pDocElemTokenMap )
402 : {
403 : static const SvXMLTokenMapEntry aDocTokenMap[] =
404 : {
405 : { XML_NAMESPACE_OFFICE, XML_FONT_FACE_DECLS, XML_TOK_DOC_FONTDECLS },
406 : { XML_NAMESPACE_OFFICE, XML_STYLES, XML_TOK_DOC_STYLES },
407 : { XML_NAMESPACE_OFFICE, XML_AUTOMATIC_STYLES, XML_TOK_DOC_AUTOSTYLES },
408 : { XML_NAMESPACE_OFFICE, XML_MASTER_STYLES, XML_TOK_DOC_MASTERSTYLES },
409 : { XML_NAMESPACE_OFFICE, XML_META, XML_TOK_DOC_META },
410 : { XML_NAMESPACE_OFFICE, XML_SCRIPTS, XML_TOK_DOC_SCRIPTS },
411 : { XML_NAMESPACE_OFFICE, XML_BODY, XML_TOK_DOC_BODY },
412 : { XML_NAMESPACE_OFFICE, XML_SETTINGS, XML_TOK_DOC_SETTINGS },
413 : XML_TOKEN_MAP_END
414 : };
415 :
416 532 : pDocElemTokenMap = new SvXMLTokenMap( aDocTokenMap );
417 :
418 : } // if( !pDocElemTokenMap )
419 :
420 1838 : return *pDocElemTokenMap;
421 : }
422 :
423 524 : const SvXMLTokenMap& ScXMLImport::GetBodyElemTokenMap()
424 : {
425 524 : if( !pBodyElemTokenMap )
426 : {
427 : static const SvXMLTokenMapEntry aBodyTokenMap[] =
428 : {
429 : { XML_NAMESPACE_TABLE, XML_TRACKED_CHANGES, XML_TOK_BODY_TRACKED_CHANGES },
430 : { XML_NAMESPACE_TABLE, XML_CALCULATION_SETTINGS, XML_TOK_BODY_CALCULATION_SETTINGS },
431 : { XML_NAMESPACE_TABLE, XML_CONTENT_VALIDATIONS, XML_TOK_BODY_CONTENT_VALIDATIONS },
432 : { XML_NAMESPACE_TABLE, XML_LABEL_RANGES, XML_TOK_BODY_LABEL_RANGES },
433 : { XML_NAMESPACE_TABLE, XML_TABLE, XML_TOK_BODY_TABLE },
434 : { XML_NAMESPACE_TABLE, XML_NAMED_EXPRESSIONS, XML_TOK_BODY_NAMED_EXPRESSIONS },
435 : { XML_NAMESPACE_TABLE, XML_DATABASE_RANGES, XML_TOK_BODY_DATABASE_RANGES },
436 : { XML_NAMESPACE_TABLE, XML_DATABASE_RANGE, XML_TOK_BODY_DATABASE_RANGE },
437 : { XML_NAMESPACE_TABLE, XML_DATA_PILOT_TABLES, XML_TOK_BODY_DATA_PILOT_TABLES },
438 : { XML_NAMESPACE_TABLE, XML_CONSOLIDATION, XML_TOK_BODY_CONSOLIDATION },
439 : { XML_NAMESPACE_TABLE, XML_DDE_LINKS, XML_TOK_BODY_DDE_LINKS },
440 : { XML_NAMESPACE_CALC_EXT, XML_DATA_STREAM_SOURCE, XML_TOK_BODY_DATA_STREAM_SOURCE },
441 : XML_TOKEN_MAP_END
442 : };
443 :
444 197 : pBodyElemTokenMap = new SvXMLTokenMap( aBodyTokenMap );
445 : } // if( !pBodyElemTokenMap )
446 :
447 524 : return *pBodyElemTokenMap;
448 : }
449 :
450 2 : const SvXMLTokenMap& ScXMLImport::GetContentValidationsElemTokenMap()
451 : {
452 2 : if( !pContentValidationsElemTokenMap )
453 : {
454 : static const SvXMLTokenMapEntry aContentValidationsElemTokenMap[] =
455 : {
456 : { XML_NAMESPACE_TABLE, XML_CONTENT_VALIDATION, XML_TOK_CONTENT_VALIDATION },
457 : XML_TOKEN_MAP_END
458 : };
459 :
460 1 : pContentValidationsElemTokenMap = new SvXMLTokenMap( aContentValidationsElemTokenMap );
461 : } // if( !pContentValidationsElemTokenMap )
462 :
463 2 : return *pContentValidationsElemTokenMap;
464 : }
465 :
466 2 : const SvXMLTokenMap& ScXMLImport::GetContentValidationElemTokenMap()
467 : {
468 2 : if( !pContentValidationElemTokenMap )
469 : {
470 : static const SvXMLTokenMapEntry aContentValidationElemTokenMap[] =
471 : {
472 : { XML_NAMESPACE_TABLE, XML_HELP_MESSAGE, XML_TOK_CONTENT_VALIDATION_ELEM_HELP_MESSAGE },
473 : { XML_NAMESPACE_TABLE, XML_ERROR_MESSAGE, XML_TOK_CONTENT_VALIDATION_ELEM_ERROR_MESSAGE },
474 : { XML_NAMESPACE_TABLE, XML_ERROR_MACRO, XML_TOK_CONTENT_VALIDATION_ELEM_ERROR_MACRO },
475 : { XML_NAMESPACE_OFFICE, XML_EVENT_LISTENERS, XML_TOK_CONTENT_VALIDATION_ELEM_EVENT_LISTENERS },
476 : XML_TOKEN_MAP_END
477 : };
478 :
479 1 : pContentValidationElemTokenMap = new SvXMLTokenMap( aContentValidationElemTokenMap );
480 : } // if( !pContentValidationElemTokenMap )
481 :
482 2 : return *pContentValidationElemTokenMap;
483 : }
484 :
485 2 : const SvXMLTokenMap& ScXMLImport::GetContentValidationAttrTokenMap()
486 : {
487 2 : if( !pContentValidationAttrTokenMap )
488 : {
489 : static const SvXMLTokenMapEntry aContentValidationAttrTokenMap[] =
490 : {
491 : { XML_NAMESPACE_TABLE, XML_NAME, XML_TOK_CONTENT_VALIDATION_NAME },
492 : { XML_NAMESPACE_TABLE, XML_CONDITION, XML_TOK_CONTENT_VALIDATION_CONDITION },
493 : { XML_NAMESPACE_TABLE, XML_BASE_CELL_ADDRESS, XML_TOK_CONTENT_VALIDATION_BASE_CELL_ADDRESS },
494 : { XML_NAMESPACE_TABLE, XML_ALLOW_EMPTY_CELL, XML_TOK_CONTENT_VALIDATION_ALLOW_EMPTY_CELL },
495 : { XML_NAMESPACE_TABLE, XML_DISPLAY_LIST, XML_TOK_CONTENT_VALIDATION_DISPLAY_LIST },
496 : XML_TOKEN_MAP_END
497 : };
498 :
499 1 : pContentValidationAttrTokenMap = new SvXMLTokenMap( aContentValidationAttrTokenMap );
500 : } // if( !pContentValidationAttrTokenMap )
501 :
502 2 : return *pContentValidationAttrTokenMap;
503 : }
504 :
505 2 : const SvXMLTokenMap& ScXMLImport::GetContentValidationMessageElemTokenMap()
506 : {
507 2 : if( !pContentValidationMessageElemTokenMap )
508 : {
509 : static const SvXMLTokenMapEntry aContentValidationMessageElemTokenMap[] =
510 : {
511 : { XML_NAMESPACE_TEXT, XML_P, XML_TOK_P },
512 : XML_TOKEN_MAP_END
513 : };
514 :
515 1 : pContentValidationMessageElemTokenMap = new SvXMLTokenMap( aContentValidationMessageElemTokenMap );
516 : } // if( !pContentValidationMessageElemTokenMap )
517 :
518 2 : return *pContentValidationMessageElemTokenMap;
519 : }
520 :
521 0 : const SvXMLTokenMap& ScXMLImport::GetContentValidationHelpMessageAttrTokenMap()
522 : {
523 0 : if( !pContentValidationHelpMessageAttrTokenMap )
524 : {
525 : static const SvXMLTokenMapEntry aContentValidationHelpMessageAttrTokenMap[] =
526 : {
527 : { XML_NAMESPACE_TABLE, XML_TITLE, XML_TOK_HELP_MESSAGE_ATTR_TITLE },
528 : { XML_NAMESPACE_TABLE, XML_DISPLAY, XML_TOK_HELP_MESSAGE_ATTR_DISPLAY },
529 : XML_TOKEN_MAP_END
530 : };
531 :
532 0 : pContentValidationHelpMessageAttrTokenMap = new SvXMLTokenMap( aContentValidationHelpMessageAttrTokenMap );
533 : } // if( !pContentValidationHelpMessageAttrTokenMap )
534 :
535 0 : return *pContentValidationHelpMessageAttrTokenMap;
536 : }
537 :
538 2 : const SvXMLTokenMap& ScXMLImport::GetContentValidationErrorMessageAttrTokenMap()
539 : {
540 2 : if( !pContentValidationErrorMessageAttrTokenMap )
541 : {
542 : static const SvXMLTokenMapEntry aContentValidationErrorMessageAttrTokenMap[] =
543 : {
544 : { XML_NAMESPACE_TABLE, XML_TITLE, XML_TOK_ERROR_MESSAGE_ATTR_TITLE },
545 : { XML_NAMESPACE_TABLE, XML_DISPLAY, XML_TOK_ERROR_MESSAGE_ATTR_DISPLAY },
546 : { XML_NAMESPACE_TABLE, XML_MESSAGE_TYPE, XML_TOK_ERROR_MESSAGE_ATTR_MESSAGE_TYPE },
547 : XML_TOKEN_MAP_END
548 : };
549 :
550 1 : pContentValidationErrorMessageAttrTokenMap = new SvXMLTokenMap( aContentValidationErrorMessageAttrTokenMap );
551 : } // if( !pContentValidationErrorMessageAttrTokenMap )
552 :
553 2 : return *pContentValidationErrorMessageAttrTokenMap;
554 : }
555 :
556 0 : const SvXMLTokenMap& ScXMLImport::GetContentValidationErrorMacroAttrTokenMap()
557 : {
558 0 : if( !pContentValidationErrorMacroAttrTokenMap )
559 : {
560 : static const SvXMLTokenMapEntry aContentValidationErrorMacroAttrTokenMap[] =
561 : {
562 : { XML_NAMESPACE_TABLE, XML_NAME, XML_TOK_ERROR_MACRO_ATTR_NAME },
563 : { XML_NAMESPACE_TABLE, XML_EXECUTE, XML_TOK_ERROR_MACRO_ATTR_EXECUTE },
564 : XML_TOKEN_MAP_END
565 : };
566 :
567 0 : pContentValidationErrorMacroAttrTokenMap = new SvXMLTokenMap( aContentValidationErrorMacroAttrTokenMap );
568 : } // if( !pContentValidationErrorMacroAttrTokenMap )
569 :
570 0 : return *pContentValidationErrorMacroAttrTokenMap;
571 : }
572 :
573 88 : const SvXMLTokenMap& ScXMLImport::GetCondFormatsTokenMap()
574 : {
575 88 : if( !pCondFormatsTokenMap )
576 : {
577 : static const SvXMLTokenMapEntry aCondFormatsElemTokenMap[] =
578 : {
579 : { XML_NAMESPACE_CALC_EXT, XML_CONDITIONAL_FORMAT, XML_TOK_CONDFORMATS_CONDFORMAT },
580 : XML_TOKEN_MAP_END
581 : };
582 :
583 15 : pCondFormatsTokenMap = new SvXMLTokenMap( aCondFormatsElemTokenMap );
584 : }
585 :
586 88 : return *pCondFormatsTokenMap;
587 : }
588 :
589 130 : const SvXMLTokenMap& ScXMLImport::GetCondFormatTokenMap()
590 : {
591 130 : if( !pCondFormatTokenMap )
592 : {
593 : static const SvXMLTokenMapEntry aCondFormatElemTokenMap[] =
594 : {
595 : { XML_NAMESPACE_CALC_EXT, XML_COLOR_SCALE, XML_TOK_CONDFORMAT_COLORSCALE },
596 : { XML_NAMESPACE_CALC_EXT, XML_DATA_BAR, XML_TOK_CONDFORMAT_DATABAR },
597 : { XML_NAMESPACE_CALC_EXT, XML_CONDITION, XML_TOK_CONDFORMAT_CONDITION },
598 : { XML_NAMESPACE_CALC_EXT, XML_ICON_SET, XML_TOK_CONDFORMAT_ICONSET },
599 : { XML_NAMESPACE_CALC_EXT, XML_DATE_IS, XML_TOK_CONDFORMAT_DATE },
600 : XML_TOKEN_MAP_END
601 : };
602 :
603 15 : pCondFormatTokenMap = new SvXMLTokenMap( aCondFormatElemTokenMap );
604 : }
605 :
606 130 : return *pCondFormatTokenMap;
607 : }
608 :
609 88 : const SvXMLTokenMap& ScXMLImport::GetCondFormatAttrMap()
610 : {
611 88 : if( !pCondFormatAttrMap )
612 : {
613 : static const SvXMLTokenMapEntry aCondFormatAttrTokenMap[] =
614 : {
615 : { XML_NAMESPACE_CALC_EXT, XML_TARGET_RANGE_ADDRESS, XML_TOK_CONDFORMAT_TARGET_RANGE },
616 : XML_TOKEN_MAP_END
617 : };
618 :
619 15 : pCondFormatAttrMap = new SvXMLTokenMap( aCondFormatAttrTokenMap );
620 : }
621 :
622 88 : return *pCondFormatAttrMap;
623 : }
624 :
625 4 : const SvXMLTokenMap& ScXMLImport::GetCondDateAttrMap()
626 : {
627 4 : if( !pCondDateAttrMap )
628 : {
629 : static const SvXMLTokenMapEntry aCondDateAttrTokenMap[] =
630 : {
631 : { XML_NAMESPACE_CALC_EXT, XML_DATE, XML_TOK_COND_DATE_VALUE },
632 : { XML_NAMESPACE_CALC_EXT, XML_STYLE, XML_TOK_COND_DATE_STYLE },
633 : XML_TOKEN_MAP_END
634 : };
635 :
636 2 : pCondDateAttrMap = new SvXMLTokenMap( aCondDateAttrTokenMap );
637 : }
638 :
639 4 : return *pCondDateAttrMap;
640 : }
641 :
642 69 : const SvXMLTokenMap& ScXMLImport::GetConditionAttrMap()
643 : {
644 69 : if( !pConditionAttrMap )
645 : {
646 : static const SvXMLTokenMapEntry aConditionAttrTokenMap[] =
647 : {
648 : { XML_NAMESPACE_CALC_EXT, XML_VALUE, XML_TOK_CONDITION_VALUE },
649 : { XML_NAMESPACE_CALC_EXT, XML_APPLY_STYLE_NAME, XML_TOK_CONDITION_APPLY_STYLE_NAME },
650 : { XML_NAMESPACE_CALC_EXT, XML_BASE_CELL_ADDRESS, XML_TOK_CONDITION_BASE_CELL_ADDRESS },
651 : XML_TOKEN_MAP_END
652 : };
653 :
654 9 : pConditionAttrMap = new SvXMLTokenMap( aConditionAttrTokenMap );
655 : }
656 :
657 69 : return *pConditionAttrMap;
658 : }
659 :
660 73 : const SvXMLTokenMap& ScXMLImport::GetColorScaleTokenMap()
661 : {
662 73 : if( !pColorScaleTokenMap )
663 : {
664 : static const SvXMLTokenMapEntry aColorScaleElemTokenMap[] =
665 : {
666 : { XML_NAMESPACE_CALC_EXT, XML_COLOR_SCALE_ENTRY, XML_TOK_COLORSCALE_COLORSCALEENTRY },
667 : XML_TOKEN_MAP_END
668 : };
669 :
670 5 : pColorScaleTokenMap = new SvXMLTokenMap( aColorScaleElemTokenMap );
671 : }
672 :
673 73 : return *pColorScaleTokenMap;
674 : }
675 :
676 73 : const SvXMLTokenMap& ScXMLImport::GetColorScaleEntryAttrMap()
677 : {
678 73 : if( !pColorScaleEntryAttrTokenMap )
679 : {
680 : static const SvXMLTokenMapEntry aColorScaleAttrTokenMap[] =
681 : {
682 : { XML_NAMESPACE_CALC_EXT, XML_TYPE, XML_TOK_COLORSCALEENTRY_TYPE },
683 : { XML_NAMESPACE_CALC_EXT, XML_VALUE, XML_TOK_COLORSCALEENTRY_VALUE },
684 : { XML_NAMESPACE_CALC_EXT, XML_COLOR, XML_TOK_COLORSCALEENTRY_COLOR },
685 : XML_TOKEN_MAP_END
686 : };
687 :
688 5 : pColorScaleEntryAttrTokenMap = new SvXMLTokenMap( aColorScaleAttrTokenMap );
689 : }
690 :
691 73 : return *pColorScaleEntryAttrTokenMap;
692 : }
693 :
694 60 : const SvXMLTokenMap& ScXMLImport::GetFormattingTokenMap()
695 : {
696 60 : if( !pDataBarTokenMap )
697 : {
698 : static const SvXMLTokenMapEntry aDataBarElemTokenMap[] =
699 : {
700 : { XML_NAMESPACE_CALC_EXT, XML_DATA_BAR_ENTRY, XML_TOK_DATABAR_DATABARENTRY },
701 : { XML_NAMESPACE_CALC_EXT, XML_FORMATTING_ENTRY, XML_TOK_FORMATTING_ENTRY },
702 : XML_TOKEN_MAP_END
703 : };
704 :
705 5 : pDataBarTokenMap = new SvXMLTokenMap( aDataBarElemTokenMap );
706 : }
707 :
708 60 : return *pDataBarTokenMap;
709 : }
710 :
711 27 : const SvXMLTokenMap& ScXMLImport::GetDataBarAttrMap()
712 : {
713 27 : if( !pDataBarAttrMap )
714 : {
715 : static const SvXMLTokenMapEntry aDataBarAttrTokenMap[] =
716 : {
717 : { XML_NAMESPACE_CALC_EXT, XML_POSITIVE_COLOR, XML_TOK_DATABAR_POSITIVE_COLOR },
718 : { XML_NAMESPACE_CALC_EXT, XML_NEGATIVE_COLOR, XML_TOK_DATABAR_NEGATIVE_COLOR },
719 : { XML_NAMESPACE_CALC_EXT, XML_GRADIENT, XML_TOK_DATABAR_GRADIENT },
720 : { XML_NAMESPACE_CALC_EXT, XML_AXIS_POSITION, XML_TOK_DATABAR_AXISPOSITION },
721 : { XML_NAMESPACE_CALC_EXT, XML_SHOW_VALUE, XML_TOK_DATABAR_SHOWVALUE },
722 : { XML_NAMESPACE_CALC_EXT, XML_AXIS_COLOR, XML_TOK_DATABAR_AXISCOLOR },
723 : { XML_NAMESPACE_CALC_EXT, XML_MIN_LENGTH, XML_TOK_DATABAR_MINLENGTH },
724 : { XML_NAMESPACE_CALC_EXT, XML_MAX_LENGTH, XML_TOK_DATABAR_MAXLENGTH },
725 : XML_TOKEN_MAP_END
726 : };
727 :
728 5 : pDataBarAttrMap = new SvXMLTokenMap( aDataBarAttrTokenMap );
729 : }
730 :
731 27 : return *pDataBarAttrMap;
732 : }
733 :
734 2 : const SvXMLTokenMap& ScXMLImport::GetIconSetAttrMap()
735 : {
736 2 : if( !pIconSetAttrMap )
737 : {
738 : static const SvXMLTokenMapEntry aIconSetAttrTokenMap[] =
739 : {
740 : { XML_NAMESPACE_CALC_EXT, XML_ICON_SET_TYPE, XML_TOK_ICONSET_TYPE },
741 : { XML_NAMESPACE_CALC_EXT, XML_SHOW_VALUE, XML_TOK_ICONSET_SHOWVALUE },
742 : XML_TOKEN_MAP_END
743 : };
744 :
745 2 : pIconSetAttrMap = new SvXMLTokenMap( aIconSetAttrTokenMap );
746 : }
747 :
748 2 : return *pIconSetAttrMap;
749 : }
750 :
751 60 : const SvXMLTokenMap& ScXMLImport::GetDataBarEntryAttrMap()
752 : {
753 60 : if( !pFormattingEntryAttrMap )
754 : {
755 : static const SvXMLTokenMapEntry aDataBarAttrEntryTokenMap[] =
756 : {
757 : { XML_NAMESPACE_CALC_EXT, XML_TYPE, XML_TOK_DATABARENTRY_TYPE },
758 : { XML_NAMESPACE_CALC_EXT, XML_VALUE, XML_TOK_DATABARENTRY_VALUE },
759 : XML_TOKEN_MAP_END
760 : };
761 :
762 5 : pFormattingEntryAttrMap = new SvXMLTokenMap( aDataBarAttrEntryTokenMap );
763 : }
764 :
765 60 : return *pFormattingEntryAttrMap;
766 : }
767 :
768 0 : const SvXMLTokenMap& ScXMLImport::GetLabelRangesElemTokenMap()
769 : {
770 0 : if( !pLabelRangesElemTokenMap )
771 : {
772 : static const SvXMLTokenMapEntry aLabelRangesElemTokenMap[] =
773 : {
774 : { XML_NAMESPACE_TABLE, XML_LABEL_RANGE, XML_TOK_LABEL_RANGE_ELEM },
775 : XML_TOKEN_MAP_END
776 : };
777 :
778 0 : pLabelRangesElemTokenMap = new SvXMLTokenMap( aLabelRangesElemTokenMap );
779 : } // if( !pLabelRangesElemTokenMap )
780 :
781 0 : return *pLabelRangesElemTokenMap;
782 : }
783 :
784 0 : const SvXMLTokenMap& ScXMLImport::GetLabelRangeAttrTokenMap()
785 : {
786 0 : if( !pLabelRangeAttrTokenMap )
787 : {
788 : static const SvXMLTokenMapEntry aLabelRangeAttrTokenMap[] =
789 : {
790 : { XML_NAMESPACE_TABLE, XML_LABEL_CELL_RANGE_ADDRESS, XML_TOK_LABEL_RANGE_ATTR_LABEL_RANGE },
791 : { XML_NAMESPACE_TABLE, XML_DATA_CELL_RANGE_ADDRESS, XML_TOK_LABEL_RANGE_ATTR_DATA_RANGE },
792 : { XML_NAMESPACE_TABLE, XML_ORIENTATION, XML_TOK_LABEL_RANGE_ATTR_ORIENTATION },
793 : XML_TOKEN_MAP_END
794 : };
795 :
796 0 : pLabelRangeAttrTokenMap = new SvXMLTokenMap( aLabelRangeAttrTokenMap );
797 : } // if( !pLabelRangeAttrTokenMap )
798 :
799 0 : return *pLabelRangeAttrTokenMap;
800 : }
801 :
802 5370 : const SvXMLTokenMap& ScXMLImport::GetTableElemTokenMap()
803 : {
804 5370 : if( !pTableElemTokenMap )
805 : {
806 : static const SvXMLTokenMapEntry aTableTokenMap[] =
807 : {
808 : { XML_NAMESPACE_TABLE, XML_NAMED_EXPRESSIONS, XML_TOK_TABLE_NAMED_EXPRESSIONS },
809 : { XML_NAMESPACE_TABLE, XML_TABLE_COLUMN_GROUP, XML_TOK_TABLE_COL_GROUP },
810 : { XML_NAMESPACE_TABLE, XML_TABLE_HEADER_COLUMNS, XML_TOK_TABLE_HEADER_COLS },
811 : { XML_NAMESPACE_TABLE, XML_TABLE_COLUMNS, XML_TOK_TABLE_COLS },
812 : { XML_NAMESPACE_TABLE, XML_TABLE_COLUMN, XML_TOK_TABLE_COL },
813 : { XML_NAMESPACE_TABLE, XML_TABLE_PROTECTION, XML_TOK_TABLE_PROTECTION },
814 : { XML_NAMESPACE_LO_EXT, XML_TABLE_PROTECTION, XML_TOK_TABLE_PROTECTION_EXT },
815 : { XML_NAMESPACE_OFFICE_EXT, XML_TABLE_PROTECTION, XML_TOK_TABLE_PROTECTION_EXT },
816 : { XML_NAMESPACE_TABLE, XML_TABLE_ROW_GROUP, XML_TOK_TABLE_ROW_GROUP },
817 : { XML_NAMESPACE_TABLE, XML_TABLE_HEADER_ROWS, XML_TOK_TABLE_HEADER_ROWS },
818 : { XML_NAMESPACE_TABLE, XML_TABLE_ROWS, XML_TOK_TABLE_ROWS },
819 : { XML_NAMESPACE_TABLE, XML_TABLE_ROW, XML_TOK_TABLE_ROW },
820 : { XML_NAMESPACE_TABLE, XML_TABLE_SOURCE, XML_TOK_TABLE_SOURCE },
821 : { XML_NAMESPACE_TABLE, XML_SCENARIO, XML_TOK_TABLE_SCENARIO },
822 : { XML_NAMESPACE_TABLE, XML_SHAPES, XML_TOK_TABLE_SHAPES },
823 : { XML_NAMESPACE_OFFICE, XML_FORMS, XML_TOK_TABLE_FORMS },
824 : { XML_NAMESPACE_OFFICE, XML_EVENT_LISTENERS, XML_TOK_TABLE_EVENT_LISTENERS },
825 : { XML_NAMESPACE_OFFICE_EXT, XML_EVENT_LISTENERS, XML_TOK_TABLE_EVENT_LISTENERS_EXT },
826 : { XML_NAMESPACE_CALC_EXT, XML_CONDITIONAL_FORMATS, XML_TOK_TABLE_CONDFORMATS },
827 : XML_TOKEN_MAP_END
828 : };
829 :
830 197 : pTableElemTokenMap = new SvXMLTokenMap( aTableTokenMap );
831 : } // if( !pTableElemTokenMap )
832 :
833 5370 : return *pTableElemTokenMap;
834 : }
835 :
836 2 : const SvXMLTokenMap& ScXMLImport::GetTableProtectionAttrTokenMap()
837 : {
838 2 : if (!pTableProtectionElemTokenMap)
839 : {
840 : static const SvXMLTokenMapEntry aTableProtectionTokenMap[] =
841 : {
842 : { XML_NAMESPACE_TABLE, XML_SELECT_PROTECTED_CELLS, XML_TOK_TABLE_SELECT_PROTECTED_CELLS },
843 : { XML_NAMESPACE_TABLE, XML_SELECT_UNPROTECTED_CELLS, XML_TOK_TABLE_SELECT_UNPROTECTED_CELLS },
844 : { XML_NAMESPACE_OFFICE_EXT, XML_SELECT_PROTECTED_CELLS, XML_TOK_TABLE_SELECT_PROTECTED_CELLS_EXT },
845 : { XML_NAMESPACE_LO_EXT, XML_SELECT_PROTECTED_CELLS, XML_TOK_TABLE_SELECT_PROTECTED_CELLS_EXT },
846 : { XML_NAMESPACE_OFFICE_EXT, XML_SELECT_UNPROTECTED_CELLS, XML_TOK_TABLE_SELECT_UNPROTECTED_CELLS_EXT },
847 : { XML_NAMESPACE_LO_EXT, XML_SELECT_UNPROTECTED_CELLS, XML_TOK_TABLE_SELECT_UNPROTECTED_CELLS_EXT },
848 : XML_TOKEN_MAP_END
849 : };
850 2 : pTableProtectionElemTokenMap = new SvXMLTokenMap(aTableProtectionTokenMap);
851 : }
852 :
853 2 : return *pTableProtectionElemTokenMap;
854 : }
855 :
856 26 : const SvXMLTokenMap& ScXMLImport::GetTableRowsElemTokenMap()
857 : {
858 26 : if( !pTableRowsElemTokenMap )
859 : {
860 : static const SvXMLTokenMapEntry aTableRowsElemTokenMap[] =
861 : {
862 : { XML_NAMESPACE_TABLE, XML_TABLE_ROW_GROUP, XML_TOK_TABLE_ROWS_ROW_GROUP },
863 : { XML_NAMESPACE_TABLE, XML_TABLE_HEADER_ROWS, XML_TOK_TABLE_ROWS_HEADER_ROWS },
864 : { XML_NAMESPACE_TABLE, XML_TABLE_ROWS, XML_TOK_TABLE_ROWS_ROWS },
865 : { XML_NAMESPACE_TABLE, XML_TABLE_ROW, XML_TOK_TABLE_ROWS_ROW },
866 : XML_TOKEN_MAP_END
867 : };
868 :
869 3 : pTableRowsElemTokenMap = new SvXMLTokenMap( aTableRowsElemTokenMap );
870 : } // if( !pTableRowsElemTokenMap )
871 :
872 26 : return *pTableRowsElemTokenMap;
873 : }
874 :
875 20 : const SvXMLTokenMap& ScXMLImport::GetTableColsElemTokenMap()
876 : {
877 20 : if( !pTableColsElemTokenMap )
878 : {
879 : static const SvXMLTokenMapEntry aTableColsElemTokenMap[] =
880 : {
881 : { XML_NAMESPACE_TABLE, XML_TABLE_COLUMN_GROUP, XML_TOK_TABLE_COLS_COL_GROUP },
882 : { XML_NAMESPACE_TABLE, XML_TABLE_HEADER_COLUMNS, XML_TOK_TABLE_COLS_HEADER_COLS },
883 : { XML_NAMESPACE_TABLE, XML_TABLE_COLUMNS, XML_TOK_TABLE_COLS_COLS },
884 : { XML_NAMESPACE_TABLE, XML_TABLE_COLUMN, XML_TOK_TABLE_COLS_COL },
885 : XML_TOKEN_MAP_END
886 : };
887 :
888 2 : pTableColsElemTokenMap = new SvXMLTokenMap( aTableColsElemTokenMap );
889 : } // if( !pTableColsElemTokenMap )
890 :
891 20 : return *pTableColsElemTokenMap;
892 : }
893 :
894 337 : const SvXMLTokenMap& ScXMLImport::GetTableAttrTokenMap()
895 : {
896 337 : if( !pTableAttrTokenMap )
897 : {
898 : static const SvXMLTokenMapEntry aTableAttrTokenMap[] =
899 : {
900 : { XML_NAMESPACE_TABLE, XML_NAME, XML_TOK_TABLE_NAME },
901 : { XML_NAMESPACE_TABLE, XML_STYLE_NAME, XML_TOK_TABLE_STYLE_NAME },
902 : { XML_NAMESPACE_TABLE, XML_PROTECTED, XML_TOK_TABLE_PROTECTED },
903 : { XML_NAMESPACE_TABLE, XML_PRINT_RANGES, XML_TOK_TABLE_PRINT_RANGES },
904 : { XML_NAMESPACE_TABLE, XML_PROTECTION_KEY, XML_TOK_TABLE_PASSWORD },
905 : { XML_NAMESPACE_TABLE, XML_PROTECTION_KEY_DIGEST_ALGORITHM, XML_TOK_TABLE_PASSHASH },
906 : { XML_NAMESPACE_TABLE, XML_PROTECTION_KEY_DIGEST_ALGORITHM_2, XML_TOK_TABLE_PASSHASH_2 },
907 : { XML_NAMESPACE_LO_EXT, XML_PROTECTION_KEY_DIGEST_ALGORITHM_2, XML_TOK_TABLE_PASSHASH_2 },
908 : { XML_NAMESPACE_TABLE, XML_PRINT, XML_TOK_TABLE_PRINT },
909 : XML_TOKEN_MAP_END
910 : };
911 :
912 197 : pTableAttrTokenMap = new SvXMLTokenMap( aTableAttrTokenMap );
913 : } // if( !pTableAttrTokenMap )
914 :
915 337 : return *pTableAttrTokenMap;
916 : }
917 :
918 0 : const SvXMLTokenMap& ScXMLImport::GetTableScenarioAttrTokenMap()
919 : {
920 0 : if( !pTableScenarioAttrTokenMap )
921 : {
922 : static const SvXMLTokenMapEntry aTableScenarioAttrTokenMap[] =
923 : {
924 : { XML_NAMESPACE_TABLE, XML_DISPLAY_BORDER, XML_TOK_TABLE_SCENARIO_ATTR_DISPLAY_BORDER },
925 : { XML_NAMESPACE_TABLE, XML_BORDER_COLOR, XML_TOK_TABLE_SCENARIO_ATTR_BORDER_COLOR },
926 : { XML_NAMESPACE_TABLE, XML_COPY_BACK, XML_TOK_TABLE_SCENARIO_ATTR_COPY_BACK },
927 : { XML_NAMESPACE_TABLE, XML_COPY_STYLES, XML_TOK_TABLE_SCENARIO_ATTR_COPY_STYLES },
928 : { XML_NAMESPACE_TABLE, XML_COPY_FORMULAS, XML_TOK_TABLE_SCENARIO_ATTR_COPY_FORMULAS },
929 : { XML_NAMESPACE_TABLE, XML_IS_ACTIVE, XML_TOK_TABLE_SCENARIO_ATTR_IS_ACTIVE },
930 : { XML_NAMESPACE_TABLE, XML_SCENARIO_RANGES, XML_TOK_TABLE_SCENARIO_ATTR_SCENARIO_RANGES },
931 : { XML_NAMESPACE_TABLE, XML_COMMENT, XML_TOK_TABLE_SCENARIO_ATTR_COMMENT },
932 : { XML_NAMESPACE_TABLE, XML_PROTECTED, XML_TOK_TABLE_SCENARIO_ATTR_PROTECTED },
933 : XML_TOKEN_MAP_END
934 : };
935 :
936 0 : pTableScenarioAttrTokenMap = new SvXMLTokenMap( aTableScenarioAttrTokenMap );
937 : } // if( !pTableScenarioAttrTokenMap )
938 :
939 0 : return *pTableScenarioAttrTokenMap;
940 : }
941 :
942 1310 : const SvXMLTokenMap& ScXMLImport::GetTableColAttrTokenMap()
943 : {
944 1310 : if( !pTableColAttrTokenMap )
945 : {
946 : static const SvXMLTokenMapEntry aTableColAttrTokenMap[] =
947 : {
948 : { XML_NAMESPACE_TABLE, XML_STYLE_NAME, XML_TOK_TABLE_COL_ATTR_STYLE_NAME },
949 : { XML_NAMESPACE_TABLE, XML_NUMBER_COLUMNS_REPEATED, XML_TOK_TABLE_COL_ATTR_REPEATED },
950 : { XML_NAMESPACE_TABLE, XML_VISIBILITY, XML_TOK_TABLE_COL_ATTR_VISIBILITY },
951 : { XML_NAMESPACE_TABLE, XML_DEFAULT_CELL_STYLE_NAME, XML_TOK_TABLE_COL_ATTR_DEFAULT_CELL_STYLE_NAME },
952 : XML_TOKEN_MAP_END
953 : };
954 :
955 196 : pTableColAttrTokenMap = new SvXMLTokenMap( aTableColAttrTokenMap );
956 : } // if( !pTableColAttrTokenMap )
957 :
958 1310 : return *pTableColAttrTokenMap;
959 : }
960 :
961 14719 : const SvXMLTokenMap& ScXMLImport::GetTableRowElemTokenMap()
962 : {
963 14719 : if( !pTableRowElemTokenMap )
964 : {
965 : static const SvXMLTokenMapEntry aTableRowTokenMap[] =
966 : {
967 : { XML_NAMESPACE_TABLE, XML_TABLE_CELL, XML_TOK_TABLE_ROW_CELL },
968 : { XML_NAMESPACE_TABLE, XML_COVERED_TABLE_CELL, XML_TOK_TABLE_ROW_COVERED_CELL },
969 : XML_TOKEN_MAP_END
970 : };
971 :
972 197 : pTableRowElemTokenMap = new SvXMLTokenMap( aTableRowTokenMap );
973 : } // if( !pTableRowElemTokenMap )
974 :
975 14719 : return *pTableRowElemTokenMap;
976 : }
977 :
978 3955 : const SvXMLTokenMap& ScXMLImport::GetTableRowAttrTokenMap()
979 : {
980 3955 : if( !pTableRowAttrTokenMap )
981 : {
982 : static const SvXMLTokenMapEntry aTableRowAttrTokenMap[] =
983 : {
984 : { XML_NAMESPACE_TABLE, XML_STYLE_NAME, XML_TOK_TABLE_ROW_ATTR_STYLE_NAME },
985 : { XML_NAMESPACE_TABLE, XML_VISIBILITY, XML_TOK_TABLE_ROW_ATTR_VISIBILITY },
986 : { XML_NAMESPACE_TABLE, XML_NUMBER_ROWS_REPEATED, XML_TOK_TABLE_ROW_ATTR_REPEATED },
987 : { XML_NAMESPACE_TABLE, XML_DEFAULT_CELL_STYLE_NAME, XML_TOK_TABLE_ROW_ATTR_DEFAULT_CELL_STYLE_NAME },
988 : // { XML_NAMESPACE_TABLE, XML_USE_OPTIMAL_HEIGHT, XML_TOK_TABLE_ROW_ATTR_USE_OPTIMAL_HEIGHT },
989 : XML_TOKEN_MAP_END
990 : };
991 :
992 197 : pTableRowAttrTokenMap = new SvXMLTokenMap( aTableRowAttrTokenMap );
993 : } // if( !pTableRowAttrTokenMap )
994 :
995 3955 : return *pTableRowAttrTokenMap;
996 : }
997 :
998 9040 : const SvXMLTokenMap& ScXMLImport::GetTableRowCellElemTokenMap()
999 : {
1000 9040 : if( !pTableRowCellElemTokenMap )
1001 : {
1002 : static const SvXMLTokenMapEntry aTableRowCellTokenMap[] =
1003 : {
1004 : { XML_NAMESPACE_TEXT, XML_P, XML_TOK_TABLE_ROW_CELL_P },
1005 : { XML_NAMESPACE_TABLE, XML_SUB_TABLE, XML_TOK_TABLE_ROW_CELL_TABLE },
1006 : { XML_NAMESPACE_OFFICE, XML_ANNOTATION, XML_TOK_TABLE_ROW_CELL_ANNOTATION },
1007 : { XML_NAMESPACE_TABLE, XML_DETECTIVE, XML_TOK_TABLE_ROW_CELL_DETECTIVE },
1008 : { XML_NAMESPACE_TABLE, XML_CELL_RANGE_SOURCE, XML_TOK_TABLE_ROW_CELL_CELL_RANGE_SOURCE },
1009 : XML_TOKEN_MAP_END
1010 : };
1011 :
1012 163 : pTableRowCellElemTokenMap = new SvXMLTokenMap( aTableRowCellTokenMap );
1013 : } // if( !pTableRowCellElemTokenMap )
1014 :
1015 9040 : return *pTableRowCellElemTokenMap;
1016 : }
1017 :
1018 16 : const SvXMLTokenMap& ScXMLImport::GetTableAnnotationAttrTokenMap()
1019 : {
1020 16 : if( !pTableAnnotationAttrTokenMap )
1021 : {
1022 : static const SvXMLTokenMapEntry aTableAnnotationAttrTokenMap[] =
1023 : {
1024 : { XML_NAMESPACE_OFFICE, XML_AUTHOR, XML_TOK_TABLE_ANNOTATION_ATTR_AUTHOR },
1025 : { XML_NAMESPACE_OFFICE, XML_CREATE_DATE, XML_TOK_TABLE_ANNOTATION_ATTR_CREATE_DATE },
1026 : { XML_NAMESPACE_OFFICE, XML_CREATE_DATE_STRING, XML_TOK_TABLE_ANNOTATION_ATTR_CREATE_DATE_STRING },
1027 : { XML_NAMESPACE_OFFICE, XML_DISPLAY, XML_TOK_TABLE_ANNOTATION_ATTR_DISPLAY },
1028 : { XML_NAMESPACE_SVG, XML_X, XML_TOK_TABLE_ANNOTATION_ATTR_X },
1029 : { XML_NAMESPACE_SVG, XML_Y, XML_TOK_TABLE_ANNOTATION_ATTR_Y },
1030 : XML_TOKEN_MAP_END
1031 : };
1032 :
1033 13 : pTableAnnotationAttrTokenMap = new SvXMLTokenMap( aTableAnnotationAttrTokenMap );
1034 : } // if( !pTableAnnotationAttrTokenMap )
1035 :
1036 16 : return *pTableAnnotationAttrTokenMap;
1037 : }
1038 :
1039 10 : const SvXMLTokenMap& ScXMLImport::GetDetectiveElemTokenMap()
1040 : {
1041 10 : if( !pDetectiveElemTokenMap )
1042 : {
1043 : static const SvXMLTokenMapEntry aDetectiveElemTokenMap[]=
1044 : {
1045 : { XML_NAMESPACE_TABLE, XML_HIGHLIGHTED_RANGE, XML_TOK_DETECTIVE_ELEM_HIGHLIGHTED },
1046 : { XML_NAMESPACE_TABLE, XML_OPERATION, XML_TOK_DETECTIVE_ELEM_OPERATION },
1047 : XML_TOKEN_MAP_END
1048 : };
1049 :
1050 5 : pDetectiveElemTokenMap = new SvXMLTokenMap( aDetectiveElemTokenMap );
1051 : } // if( !pDetectiveElemTokenMap )
1052 :
1053 10 : return *pDetectiveElemTokenMap;
1054 : }
1055 :
1056 0 : const SvXMLTokenMap& ScXMLImport::GetDetectiveHighlightedAttrTokenMap()
1057 : {
1058 0 : if( !pDetectiveHighlightedAttrTokenMap )
1059 : {
1060 : static const SvXMLTokenMapEntry aDetectiveHighlightedAttrTokenMap[]=
1061 : {
1062 : { XML_NAMESPACE_TABLE, XML_CELL_RANGE_ADDRESS, XML_TOK_DETECTIVE_HIGHLIGHTED_ATTR_CELL_RANGE },
1063 : { XML_NAMESPACE_TABLE, XML_DIRECTION, XML_TOK_DETECTIVE_HIGHLIGHTED_ATTR_DIRECTION },
1064 : { XML_NAMESPACE_TABLE, XML_CONTAINS_ERROR, XML_TOK_DETECTIVE_HIGHLIGHTED_ATTR_CONTAINS_ERROR },
1065 : { XML_NAMESPACE_TABLE, XML_MARKED_INVALID, XML_TOK_DETECTIVE_HIGHLIGHTED_ATTR_MARKED_INVALID },
1066 : XML_TOKEN_MAP_END
1067 : };
1068 :
1069 0 : pDetectiveHighlightedAttrTokenMap = new SvXMLTokenMap( aDetectiveHighlightedAttrTokenMap );
1070 : } // if( !pDetectiveHighlightedAttrTokenMap )
1071 :
1072 0 : return *pDetectiveHighlightedAttrTokenMap;
1073 : }
1074 :
1075 10 : const SvXMLTokenMap& ScXMLImport::GetDetectiveOperationAttrTokenMap()
1076 : {
1077 10 : if( !pDetectiveOperationAttrTokenMap )
1078 : {
1079 : static const SvXMLTokenMapEntry aDetectiveOperationAttrTokenMap[]=
1080 : {
1081 : { XML_NAMESPACE_TABLE, XML_NAME, XML_TOK_DETECTIVE_OPERATION_ATTR_NAME },
1082 : { XML_NAMESPACE_TABLE, XML_INDEX, XML_TOK_DETECTIVE_OPERATION_ATTR_INDEX },
1083 : XML_TOKEN_MAP_END
1084 : };
1085 :
1086 5 : pDetectiveOperationAttrTokenMap = new SvXMLTokenMap( aDetectiveOperationAttrTokenMap );
1087 : } // if( !pDetectiveOperationAttrTokenMap )
1088 :
1089 10 : return *pDetectiveOperationAttrTokenMap;
1090 : }
1091 :
1092 0 : const SvXMLTokenMap& ScXMLImport::GetTableCellRangeSourceAttrTokenMap()
1093 : {
1094 0 : if( !pTableCellRangeSourceAttrTokenMap )
1095 : {
1096 : static const SvXMLTokenMapEntry aTableCellRangeSourceAttrTokenMap[] =
1097 : {
1098 : { XML_NAMESPACE_TABLE, XML_NAME, XML_TOK_TABLE_CELL_RANGE_SOURCE_ATTR_NAME },
1099 : { XML_NAMESPACE_XLINK, XML_HREF, XML_TOK_TABLE_CELL_RANGE_SOURCE_ATTR_HREF },
1100 : { XML_NAMESPACE_TABLE, XML_FILTER_NAME, XML_TOK_TABLE_CELL_RANGE_SOURCE_ATTR_FILTER_NAME },
1101 : { XML_NAMESPACE_TABLE, XML_FILTER_OPTIONS, XML_TOK_TABLE_CELL_RANGE_SOURCE_ATTR_FILTER_OPTIONS },
1102 : { XML_NAMESPACE_TABLE, XML_LAST_COLUMN_SPANNED, XML_TOK_TABLE_CELL_RANGE_SOURCE_ATTR_LAST_COLUMN },
1103 : { XML_NAMESPACE_TABLE, XML_LAST_ROW_SPANNED, XML_TOK_TABLE_CELL_RANGE_SOURCE_ATTR_LAST_ROW },
1104 : { XML_NAMESPACE_TABLE, XML_REFRESH_DELAY, XML_TOK_TABLE_CELL_RANGE_SOURCE_ATTR_REFRESH_DELAY },
1105 : XML_TOKEN_MAP_END
1106 : };
1107 :
1108 0 : pTableCellRangeSourceAttrTokenMap = new SvXMLTokenMap( aTableCellRangeSourceAttrTokenMap );
1109 : } // if( !pTableCellRangeSourceAttrTokenMap )
1110 :
1111 0 : return *pTableCellRangeSourceAttrTokenMap;
1112 : }
1113 :
1114 76 : const SvXMLTokenMap& ScXMLImport::GetNamedExpressionsElemTokenMap()
1115 : {
1116 76 : if( !pNamedExpressionsElemTokenMap )
1117 : {
1118 : static const SvXMLTokenMapEntry aNamedExpressionsTokenMap[] =
1119 : {
1120 : { XML_NAMESPACE_TABLE, XML_NAMED_RANGE, XML_TOK_NAMED_EXPRESSIONS_NAMED_RANGE },
1121 : { XML_NAMESPACE_TABLE, XML_NAMED_EXPRESSION, XML_TOK_NAMED_EXPRESSIONS_NAMED_EXPRESSION },
1122 : XML_TOKEN_MAP_END
1123 : };
1124 :
1125 11 : pNamedExpressionsElemTokenMap = new SvXMLTokenMap( aNamedExpressionsTokenMap );
1126 : } // if( !pNamedExpressionsElemTokenMap )
1127 :
1128 76 : return *pNamedExpressionsElemTokenMap;
1129 : }
1130 :
1131 51 : const SvXMLTokenMap& ScXMLImport::GetNamedRangeAttrTokenMap()
1132 : {
1133 51 : if( !pNamedRangeAttrTokenMap )
1134 : {
1135 : static const SvXMLTokenMapEntry aNamedRangeAttrTokenMap[] =
1136 : {
1137 : { XML_NAMESPACE_TABLE, XML_NAME, XML_TOK_NAMED_RANGE_ATTR_NAME },
1138 : { XML_NAMESPACE_TABLE, XML_CELL_RANGE_ADDRESS, XML_TOK_NAMED_RANGE_ATTR_CELL_RANGE_ADDRESS },
1139 : { XML_NAMESPACE_TABLE, XML_BASE_CELL_ADDRESS, XML_TOK_NAMED_RANGE_ATTR_BASE_CELL_ADDRESS },
1140 : { XML_NAMESPACE_TABLE, XML_RANGE_USABLE_AS, XML_TOK_NAMED_RANGE_ATTR_RANGE_USABLE_AS },
1141 : XML_TOKEN_MAP_END
1142 : };
1143 :
1144 11 : pNamedRangeAttrTokenMap = new SvXMLTokenMap( aNamedRangeAttrTokenMap );
1145 : } // if( !pNamedRangeAttrTokenMap )
1146 :
1147 51 : return *pNamedRangeAttrTokenMap;
1148 : }
1149 :
1150 25 : const SvXMLTokenMap& ScXMLImport::GetNamedExpressionAttrTokenMap()
1151 : {
1152 25 : if( !pNamedExpressionAttrTokenMap )
1153 : {
1154 : static const SvXMLTokenMapEntry aNamedExpressionAttrTokenMap[] =
1155 : {
1156 : { XML_NAMESPACE_TABLE, XML_NAME, XML_TOK_NAMED_EXPRESSION_ATTR_NAME },
1157 : { XML_NAMESPACE_TABLE, XML_BASE_CELL_ADDRESS, XML_TOK_NAMED_EXPRESSION_ATTR_BASE_CELL_ADDRESS },
1158 : { XML_NAMESPACE_TABLE, XML_EXPRESSION, XML_TOK_NAMED_EXPRESSION_ATTR_EXPRESSION },
1159 : XML_TOKEN_MAP_END
1160 : };
1161 :
1162 2 : pNamedExpressionAttrTokenMap = new SvXMLTokenMap( aNamedExpressionAttrTokenMap );
1163 : } // if( !pNamedExpressionAttrTokenMap )
1164 :
1165 25 : return *pNamedExpressionAttrTokenMap;
1166 : }
1167 :
1168 19 : const SvXMLTokenMap& ScXMLImport::GetDatabaseRangesElemTokenMap()
1169 : {
1170 19 : if( !pDatabaseRangesElemTokenMap )
1171 : {
1172 : static const SvXMLTokenMapEntry aDatabaseRangesTokenMap[] =
1173 : {
1174 : { XML_NAMESPACE_TABLE, XML_DATABASE_RANGE, XML_TOK_DATABASE_RANGE },
1175 : XML_TOKEN_MAP_END
1176 : };
1177 :
1178 7 : pDatabaseRangesElemTokenMap = new SvXMLTokenMap( aDatabaseRangesTokenMap );
1179 : } // if( !pDatabaseRangesElemTokenMap )
1180 :
1181 19 : return *pDatabaseRangesElemTokenMap;
1182 : }
1183 :
1184 6 : const SvXMLTokenMap& ScXMLImport::GetDatabaseRangeElemTokenMap()
1185 : {
1186 6 : if( !pDatabaseRangeElemTokenMap )
1187 : {
1188 : static const SvXMLTokenMapEntry aDatabaseRangeTokenMap[] =
1189 : {
1190 : { XML_NAMESPACE_TABLE, XML_DATABASE_SOURCE_SQL, XML_TOK_DATABASE_RANGE_SOURCE_SQL },
1191 : { XML_NAMESPACE_TABLE, XML_DATABASE_SOURCE_TABLE, XML_TOK_DATABASE_RANGE_SOURCE_TABLE },
1192 : { XML_NAMESPACE_TABLE, XML_DATABASE_SOURCE_QUERY, XML_TOK_DATABASE_RANGE_SOURCE_QUERY },
1193 : { XML_NAMESPACE_TABLE, XML_FILTER, XML_TOK_FILTER },
1194 : { XML_NAMESPACE_TABLE, XML_SORT, XML_TOK_SORT },
1195 : { XML_NAMESPACE_TABLE, XML_SUBTOTAL_RULES, XML_TOK_DATABASE_RANGE_SUBTOTAL_RULES },
1196 : XML_TOKEN_MAP_END
1197 : };
1198 :
1199 4 : pDatabaseRangeElemTokenMap = new SvXMLTokenMap( aDatabaseRangeTokenMap );
1200 : } // if( !pDatabaseRangeElemTokenMap )
1201 :
1202 6 : return *pDatabaseRangeElemTokenMap;
1203 : }
1204 :
1205 19 : const SvXMLTokenMap& ScXMLImport::GetDatabaseRangeAttrTokenMap()
1206 : {
1207 19 : if( !pDatabaseRangeAttrTokenMap )
1208 : {
1209 : static const SvXMLTokenMapEntry aDatabaseRangeAttrTokenMap[] =
1210 : {
1211 : { XML_NAMESPACE_TABLE, XML_NAME, XML_TOK_DATABASE_RANGE_ATTR_NAME },
1212 : { XML_NAMESPACE_TABLE, XML_IS_SELECTION, XML_TOK_DATABASE_RANGE_ATTR_IS_SELECTION },
1213 : { XML_NAMESPACE_TABLE, XML_ON_UPDATE_KEEP_STYLES, XML_TOK_DATABASE_RANGE_ATTR_ON_UPDATE_KEEP_STYLES },
1214 : { XML_NAMESPACE_TABLE, XML_ON_UPDATE_KEEP_SIZE, XML_TOK_DATABASE_RANGE_ATTR_ON_UPDATE_KEEP_SIZE },
1215 : { XML_NAMESPACE_TABLE, XML_HAS_PERSISTENT_DATA, XML_TOK_DATABASE_RANGE_ATTR_HAS_PERSISTENT_DATA },
1216 : { XML_NAMESPACE_TABLE, XML_ORIENTATION, XML_TOK_DATABASE_RANGE_ATTR_ORIENTATION },
1217 : { XML_NAMESPACE_TABLE, XML_CONTAINS_HEADER, XML_TOK_DATABASE_RANGE_ATTR_CONTAINS_HEADER },
1218 : { XML_NAMESPACE_TABLE, XML_DISPLAY_FILTER_BUTTONS, XML_TOK_DATABASE_RANGE_ATTR_DISPLAY_FILTER_BUTTONS },
1219 : { XML_NAMESPACE_TABLE, XML_TARGET_RANGE_ADDRESS, XML_TOK_DATABASE_RANGE_ATTR_TARGET_RANGE_ADDRESS },
1220 : { XML_NAMESPACE_TABLE, XML_REFRESH_DELAY, XML_TOK_DATABASE_RANGE_ATTR_REFRESH_DELAY },
1221 : XML_TOKEN_MAP_END
1222 : };
1223 :
1224 7 : pDatabaseRangeAttrTokenMap = new SvXMLTokenMap( aDatabaseRangeAttrTokenMap );
1225 : } // if( !pDatabaseRangeAttrTokenMap )
1226 :
1227 19 : return *pDatabaseRangeAttrTokenMap;
1228 : }
1229 :
1230 0 : const SvXMLTokenMap& ScXMLImport::GetDatabaseRangeSourceSQLAttrTokenMap()
1231 : {
1232 0 : if( !pDatabaseRangeSourceSQLAttrTokenMap )
1233 : {
1234 : static const SvXMLTokenMapEntry aDatabaseRangeSourceSQLAttrTokenMap[] =
1235 : {
1236 : { XML_NAMESPACE_TABLE, XML_DATABASE_NAME, XML_TOK_SOURCE_SQL_ATTR_DATABASE_NAME },
1237 : { XML_NAMESPACE_XLINK, XML_HREF, XML_TOK_SOURCE_SQL_ATTR_HREF },
1238 : { XML_NAMESPACE_TABLE, XML_CONNECTION_RESOURCE, XML_TOK_SOURCE_SQL_ATTR_CONNECTION_RESOURCE},
1239 : { XML_NAMESPACE_TABLE, XML_SQL_STATEMENT, XML_TOK_SOURCE_SQL_ATTR_SQL_STATEMENT },
1240 : { XML_NAMESPACE_TABLE, XML_PARSE_SQL_STATEMENT, XML_TOK_SOURCE_SQL_ATTR_PARSE_SQL_STATEMENT },
1241 : XML_TOKEN_MAP_END
1242 : };
1243 :
1244 0 : pDatabaseRangeSourceSQLAttrTokenMap = new SvXMLTokenMap( aDatabaseRangeSourceSQLAttrTokenMap );
1245 : } // if( !pDatabaseRangeSourceSQLAttrTokenMap )
1246 :
1247 0 : return *pDatabaseRangeSourceSQLAttrTokenMap;
1248 : }
1249 :
1250 1 : const SvXMLTokenMap& ScXMLImport::GetDatabaseRangeSourceTableAttrTokenMap()
1251 : {
1252 1 : if( !pDatabaseRangeSourceTableAttrTokenMap )
1253 : {
1254 : static const SvXMLTokenMapEntry aDatabaseRangeSourceTableAttrTokenMap[] =
1255 : {
1256 : { XML_NAMESPACE_TABLE, XML_DATABASE_NAME, XML_TOK_SOURCE_TABLE_ATTR_DATABASE_NAME },
1257 : { XML_NAMESPACE_XLINK, XML_HREF, XML_TOK_SOURCE_TABLE_ATTR_HREF },
1258 : { XML_NAMESPACE_TABLE, XML_CONNECTION_RESOURCE, XML_TOK_SOURCE_TABLE_ATTR_CONNECTION_RESOURCE },
1259 : { XML_NAMESPACE_TABLE, XML_TABLE_NAME, XML_TOK_SOURCE_TABLE_ATTR_TABLE_NAME },
1260 : { XML_NAMESPACE_TABLE, XML_DATABASE_TABLE_NAME, XML_TOK_SOURCE_TABLE_ATTR_TABLE_NAME },
1261 : XML_TOKEN_MAP_END
1262 : };
1263 :
1264 1 : pDatabaseRangeSourceTableAttrTokenMap = new SvXMLTokenMap( aDatabaseRangeSourceTableAttrTokenMap );
1265 : } // if( !pDatabaseRangeSourceTableAttrTokenMap )
1266 :
1267 1 : return *pDatabaseRangeSourceTableAttrTokenMap;
1268 : }
1269 :
1270 0 : const SvXMLTokenMap& ScXMLImport::GetDatabaseRangeSourceQueryAttrTokenMap()
1271 : {
1272 0 : if( !pDatabaseRangeSourceQueryAttrTokenMap )
1273 : {
1274 : static const SvXMLTokenMapEntry aDatabaseRangeSourceQueryAttrTokenMap[] =
1275 : {
1276 : { XML_NAMESPACE_TABLE, XML_DATABASE_NAME, XML_TOK_SOURCE_QUERY_ATTR_DATABASE_NAME },
1277 : { XML_NAMESPACE_XLINK, XML_HREF, XML_TOK_SOURCE_QUERY_ATTR_HREF },
1278 : { XML_NAMESPACE_TABLE, XML_CONNECTION_RESOURCE, XML_TOK_SOURCE_QUERY_ATTR_CONNECTION_RESOURCE },
1279 : { XML_NAMESPACE_TABLE, XML_QUERY_NAME, XML_TOK_SOURCE_QUERY_ATTR_QUERY_NAME },
1280 : XML_TOKEN_MAP_END
1281 : };
1282 :
1283 0 : pDatabaseRangeSourceQueryAttrTokenMap = new SvXMLTokenMap( aDatabaseRangeSourceQueryAttrTokenMap );
1284 : } // if( !pDatabaseRangeSourceQueryAttrTokenMap )
1285 :
1286 0 : return *pDatabaseRangeSourceQueryAttrTokenMap;
1287 : }
1288 :
1289 12 : const SvXMLTokenMap& ScXMLImport::GetFilterElemTokenMap()
1290 : {
1291 12 : if( !pFilterElemTokenMap )
1292 : {
1293 : static const SvXMLTokenMapEntry aFilterTokenMap[] =
1294 : {
1295 : { XML_NAMESPACE_TABLE, XML_FILTER_AND, XML_TOK_FILTER_AND },
1296 : { XML_NAMESPACE_TABLE, XML_FILTER_OR, XML_TOK_FILTER_OR },
1297 : { XML_NAMESPACE_TABLE, XML_FILTER_CONDITION, XML_TOK_FILTER_CONDITION },
1298 : XML_TOKEN_MAP_END
1299 : };
1300 :
1301 3 : pFilterElemTokenMap = new SvXMLTokenMap( aFilterTokenMap );
1302 : } // if( !pFilterElemTokenMap )
1303 :
1304 12 : return *pFilterElemTokenMap;
1305 : }
1306 :
1307 5 : const SvXMLTokenMap& ScXMLImport::GetFilterAttrTokenMap()
1308 : {
1309 5 : if( !pFilterAttrTokenMap )
1310 : {
1311 : static const SvXMLTokenMapEntry aFilterAttrTokenMap[] =
1312 : {
1313 : { XML_NAMESPACE_TABLE, XML_TARGET_RANGE_ADDRESS, XML_TOK_FILTER_ATTR_TARGET_RANGE_ADDRESS },
1314 : { XML_NAMESPACE_TABLE, XML_CONDITION_SOURCE_RANGE_ADDRESS, XML_TOK_FILTER_ATTR_CONDITION_SOURCE_RANGE_ADDRESS },
1315 : { XML_NAMESPACE_TABLE, XML_CONDITION_SOURCE, XML_TOK_FILTER_ATTR_CONDITION_SOURCE },
1316 : { XML_NAMESPACE_TABLE, XML_DISPLAY_DUPLICATES, XML_TOK_FILTER_ATTR_DISPLAY_DUPLICATES },
1317 : XML_TOKEN_MAP_END
1318 : };
1319 :
1320 3 : pFilterAttrTokenMap = new SvXMLTokenMap( aFilterAttrTokenMap );
1321 : } // if( !pFilterAttrTokenMap )
1322 :
1323 5 : return *pFilterAttrTokenMap;
1324 : }
1325 :
1326 8 : const SvXMLTokenMap& ScXMLImport::GetFilterConditionElemTokenMap()
1327 : {
1328 8 : if( !pFilterConditionElemTokenMap )
1329 : {
1330 : static const SvXMLTokenMapEntry aTokenMap[] =
1331 : {
1332 : { XML_NAMESPACE_TABLE, XML_FILTER_SET_ITEM, XML_TOK_CONDITION_FILTER_SET_ITEM },
1333 : XML_TOKEN_MAP_END
1334 : };
1335 :
1336 1 : pFilterConditionElemTokenMap = new SvXMLTokenMap( aTokenMap );
1337 : }
1338 :
1339 8 : return *pFilterConditionElemTokenMap;
1340 : }
1341 :
1342 7 : const SvXMLTokenMap& ScXMLImport::GetFilterConditionAttrTokenMap()
1343 : {
1344 7 : if( !pFilterConditionAttrTokenMap )
1345 : {
1346 : static const SvXMLTokenMapEntry aFilterConditionAttrTokenMap[] =
1347 : {
1348 : { XML_NAMESPACE_TABLE, XML_FIELD_NUMBER, XML_TOK_CONDITION_ATTR_FIELD_NUMBER },
1349 : { XML_NAMESPACE_TABLE, XML_CASE_SENSITIVE, XML_TOK_CONDITION_ATTR_CASE_SENSITIVE },
1350 : { XML_NAMESPACE_TABLE, XML_DATA_TYPE, XML_TOK_CONDITION_ATTR_DATA_TYPE },
1351 : { XML_NAMESPACE_TABLE, XML_VALUE, XML_TOK_CONDITION_ATTR_VALUE },
1352 : { XML_NAMESPACE_TABLE, XML_OPERATOR, XML_TOK_CONDITION_ATTR_OPERATOR },
1353 : XML_TOKEN_MAP_END
1354 : };
1355 :
1356 3 : pFilterConditionAttrTokenMap = new SvXMLTokenMap( aFilterConditionAttrTokenMap );
1357 : } // if( !pFilterConditionAttrTokenMap )
1358 :
1359 7 : return *pFilterConditionAttrTokenMap;
1360 : }
1361 :
1362 8 : const SvXMLTokenMap& ScXMLImport::GetFilterSetItemAttrTokenMap()
1363 : {
1364 8 : if( !pFilterSetItemAttrTokenMap )
1365 : {
1366 : static const SvXMLTokenMapEntry aTokenMap[] =
1367 : {
1368 : { XML_NAMESPACE_TABLE, XML_VALUE, XML_TOK_FILTER_SET_ITEM_ATTR_VALUE },
1369 : XML_TOKEN_MAP_END
1370 : };
1371 :
1372 1 : pFilterSetItemAttrTokenMap = new SvXMLTokenMap( aTokenMap );
1373 : }
1374 :
1375 8 : return *pFilterSetItemAttrTokenMap;
1376 : }
1377 :
1378 1 : const SvXMLTokenMap& ScXMLImport::GetSortElemTokenMap()
1379 : {
1380 1 : if( !pSortElemTokenMap )
1381 : {
1382 : static const SvXMLTokenMapEntry aSortTokenMap[] =
1383 : {
1384 : { XML_NAMESPACE_TABLE, XML_SORT_BY, XML_TOK_SORT_SORT_BY },
1385 : XML_TOKEN_MAP_END
1386 : };
1387 :
1388 1 : pSortElemTokenMap = new SvXMLTokenMap( aSortTokenMap );
1389 : } // if( !pSortElemTokenMap )
1390 :
1391 1 : return *pSortElemTokenMap;
1392 : }
1393 :
1394 1 : const SvXMLTokenMap& ScXMLImport::GetSortAttrTokenMap()
1395 : {
1396 1 : if( !pSortAttrTokenMap )
1397 : {
1398 : static const SvXMLTokenMapEntry aSortAttrTokenMap[] =
1399 : {
1400 : { XML_NAMESPACE_TABLE, XML_BIND_STYLES_TO_CONTENT, XML_TOK_SORT_ATTR_BIND_STYLES_TO_CONTENT },
1401 : { XML_NAMESPACE_TABLE, XML_TARGET_RANGE_ADDRESS, XML_TOK_SORT_ATTR_TARGET_RANGE_ADDRESS },
1402 : { XML_NAMESPACE_TABLE, XML_CASE_SENSITIVE, XML_TOK_SORT_ATTR_CASE_SENSITIVE },
1403 : { XML_NAMESPACE_TABLE, XML_RFC_LANGUAGE_TAG, XML_TOK_SORT_ATTR_RFC_LANGUAGE_TAG },
1404 : { XML_NAMESPACE_TABLE, XML_LANGUAGE, XML_TOK_SORT_ATTR_LANGUAGE },
1405 : { XML_NAMESPACE_TABLE, XML_SCRIPT, XML_TOK_SORT_ATTR_SCRIPT },
1406 : { XML_NAMESPACE_TABLE, XML_COUNTRY, XML_TOK_SORT_ATTR_COUNTRY },
1407 : { XML_NAMESPACE_TABLE, XML_ALGORITHM, XML_TOK_SORT_ATTR_ALGORITHM },
1408 : XML_TOKEN_MAP_END
1409 : };
1410 :
1411 1 : pSortAttrTokenMap = new SvXMLTokenMap( aSortAttrTokenMap );
1412 : } // if( !pSortAttrTokenMap )
1413 :
1414 1 : return *pSortAttrTokenMap;
1415 : }
1416 :
1417 1 : const SvXMLTokenMap& ScXMLImport::GetSortSortByAttrTokenMap()
1418 : {
1419 1 : if( !pSortSortByAttrTokenMap )
1420 : {
1421 : static const SvXMLTokenMapEntry aSortSortByAttrTokenMap[] =
1422 : {
1423 : { XML_NAMESPACE_TABLE, XML_FIELD_NUMBER, XML_TOK_SORT_BY_ATTR_FIELD_NUMBER },
1424 : { XML_NAMESPACE_TABLE, XML_DATA_TYPE, XML_TOK_SORT_BY_ATTR_DATA_TYPE },
1425 : { XML_NAMESPACE_TABLE, XML_ORDER, XML_TOK_SORT_BY_ATTR_ORDER },
1426 : XML_TOKEN_MAP_END
1427 : };
1428 :
1429 1 : pSortSortByAttrTokenMap = new SvXMLTokenMap( aSortSortByAttrTokenMap );
1430 : } // if( !pSortSortByAttrTokenMap )
1431 :
1432 1 : return *pSortSortByAttrTokenMap;
1433 : }
1434 :
1435 0 : const SvXMLTokenMap& ScXMLImport::GetDatabaseRangeSubTotalRulesElemTokenMap()
1436 : {
1437 0 : if( !pDatabaseRangeSubTotalRulesElemTokenMap )
1438 : {
1439 : static const SvXMLTokenMapEntry aDatabaseRangeSubTotalRulesTokenMap[] =
1440 : {
1441 : { XML_NAMESPACE_TABLE, XML_SORT_GROUPS, XML_TOK_SUBTOTAL_RULES_SORT_GROUPS },
1442 : { XML_NAMESPACE_TABLE, XML_SUBTOTAL_RULE, XML_TOK_SUBTOTAL_RULES_SUBTOTAL_RULE },
1443 : XML_TOKEN_MAP_END
1444 : };
1445 :
1446 0 : pDatabaseRangeSubTotalRulesElemTokenMap = new SvXMLTokenMap( aDatabaseRangeSubTotalRulesTokenMap );
1447 : } // if( !pDatabaseRangeSubTotalRulesElemTokenMap )
1448 :
1449 0 : return *pDatabaseRangeSubTotalRulesElemTokenMap;
1450 : }
1451 :
1452 0 : const SvXMLTokenMap& ScXMLImport::GetDatabaseRangeSubTotalRulesAttrTokenMap()
1453 : {
1454 0 : if( !pDatabaseRangeSubTotalRulesAttrTokenMap )
1455 : {
1456 : static const SvXMLTokenMapEntry aDatabaseRangeSubTotalRulesAttrTokenMap[] =
1457 : {
1458 : { XML_NAMESPACE_TABLE, XML_BIND_STYLES_TO_CONTENT, XML_TOK_SUBTOTAL_RULES_ATTR_BIND_STYLES_TO_CONTENT },
1459 : { XML_NAMESPACE_TABLE, XML_CASE_SENSITIVE, XML_TOK_SUBTOTAL_RULES_ATTR_CASE_SENSITIVE },
1460 : { XML_NAMESPACE_TABLE, XML_PAGE_BREAKS_ON_GROUP_CHANGE, XML_TOK_SUBTOTAL_RULES_ATTR_PAGE_BREAKS_ON_GROUP_CHANGE },
1461 : XML_TOKEN_MAP_END
1462 : };
1463 :
1464 0 : pDatabaseRangeSubTotalRulesAttrTokenMap = new SvXMLTokenMap( aDatabaseRangeSubTotalRulesAttrTokenMap );
1465 : } // if( !pDatabaseRangeSubTotalRulesAttrTokenMap )
1466 :
1467 0 : return *pDatabaseRangeSubTotalRulesAttrTokenMap;
1468 : }
1469 :
1470 0 : const SvXMLTokenMap& ScXMLImport::GetSubTotalRulesSortGroupsAttrTokenMap()
1471 : {
1472 0 : if( !pSubTotalRulesSortGroupsAttrTokenMap )
1473 : {
1474 : static const SvXMLTokenMapEntry aSubTotalRulesSortGroupsAttrTokenMap[] =
1475 : {
1476 : { XML_NAMESPACE_TABLE, XML_DATA_TYPE, XML_TOK_SORT_GROUPS_ATTR_DATA_TYPE },
1477 : { XML_NAMESPACE_TABLE, XML_ORDER, XML_TOK_SORT_GROUPS_ATTR_ORDER },
1478 : XML_TOKEN_MAP_END
1479 : };
1480 :
1481 0 : pSubTotalRulesSortGroupsAttrTokenMap = new SvXMLTokenMap( aSubTotalRulesSortGroupsAttrTokenMap );
1482 : } // if( !pSubTotalRulesSortGroupsAttrTokenMap )
1483 :
1484 0 : return *pSubTotalRulesSortGroupsAttrTokenMap;
1485 : }
1486 :
1487 0 : const SvXMLTokenMap& ScXMLImport::GetSubTotalRulesSubTotalRuleElemTokenMap()
1488 : {
1489 0 : if( !pSubTotalRulesSubTotalRuleElemTokenMap )
1490 : {
1491 : static const SvXMLTokenMapEntry aSubTotalRulesSubTotalRuleTokenMap[] =
1492 : {
1493 : { XML_NAMESPACE_TABLE, XML_SUBTOTAL_FIELD, XML_TOK_SUBTOTAL_RULE_SUBTOTAL_FIELD },
1494 : XML_TOKEN_MAP_END
1495 : };
1496 :
1497 0 : pSubTotalRulesSubTotalRuleElemTokenMap = new SvXMLTokenMap( aSubTotalRulesSubTotalRuleTokenMap );
1498 : } // if( !pSubTotalRulesSubTotalRuleElemTokenMap )
1499 :
1500 0 : return *pSubTotalRulesSubTotalRuleElemTokenMap;
1501 : }
1502 :
1503 0 : const SvXMLTokenMap& ScXMLImport::GetSubTotalRulesSubTotalRuleAttrTokenMap()
1504 : {
1505 0 : if( !pSubTotalRulesSubTotalRuleAttrTokenMap )
1506 : {
1507 : static const SvXMLTokenMapEntry aSubTotalRulesSubTotalRuleAttrTokenMap[] =
1508 : {
1509 : { XML_NAMESPACE_TABLE, XML_GROUP_BY_FIELD_NUMBER, XML_TOK_SUBTOTAL_RULE_ATTR_GROUP_BY_FIELD_NUMBER },
1510 : XML_TOKEN_MAP_END
1511 : };
1512 :
1513 0 : pSubTotalRulesSubTotalRuleAttrTokenMap = new SvXMLTokenMap( aSubTotalRulesSubTotalRuleAttrTokenMap );
1514 : } // if( !pSubTotalRulesSubTotalRuleAttrTokenMap )
1515 :
1516 0 : return *pSubTotalRulesSubTotalRuleAttrTokenMap;
1517 : }
1518 :
1519 0 : const SvXMLTokenMap& ScXMLImport::GetSubTotalRuleSubTotalFieldAttrTokenMap()
1520 : {
1521 0 : if( !pSubTotalRuleSubTotalFieldAttrTokenMap )
1522 : {
1523 : static const SvXMLTokenMapEntry aSubTotalRuleSubTotalFieldAttrTokenMap[] =
1524 : {
1525 : { XML_NAMESPACE_TABLE, XML_FIELD_NUMBER, XML_TOK_SUBTOTAL_FIELD_ATTR_FIELD_NUMBER },
1526 : { XML_NAMESPACE_TABLE, XML_FUNCTION, XML_TOK_SUBTOTAL_FIELD_ATTR_FUNCTION },
1527 : XML_TOKEN_MAP_END
1528 : };
1529 :
1530 0 : pSubTotalRuleSubTotalFieldAttrTokenMap = new SvXMLTokenMap( aSubTotalRuleSubTotalFieldAttrTokenMap );
1531 : } // if( !pSubTotalRuleSubTotalFieldAttrTokenMap )
1532 :
1533 0 : return *pSubTotalRuleSubTotalFieldAttrTokenMap;
1534 : }
1535 :
1536 11 : const SvXMLTokenMap& ScXMLImport::GetDataPilotTablesElemTokenMap()
1537 : {
1538 11 : if( !pDataPilotTablesElemTokenMap )
1539 : {
1540 : static const SvXMLTokenMapEntry aDataPilotTablesElemTokenMap[] =
1541 : {
1542 : { XML_NAMESPACE_TABLE, XML_DATA_PILOT_TABLE, XML_TOK_DATA_PILOT_TABLE },
1543 : XML_TOKEN_MAP_END
1544 : };
1545 :
1546 7 : pDataPilotTablesElemTokenMap = new SvXMLTokenMap( aDataPilotTablesElemTokenMap );
1547 : } // if( !pDataPilotTablesElemTokenMap )
1548 :
1549 11 : return *pDataPilotTablesElemTokenMap;
1550 : }
1551 :
1552 11 : const SvXMLTokenMap& ScXMLImport::GetDataPilotTableAttrTokenMap()
1553 : {
1554 11 : if( !pDataPilotTableAttrTokenMap )
1555 : {
1556 : static const SvXMLTokenMapEntry aDataPilotTableAttrTokenMap[] =
1557 : {
1558 : { XML_NAMESPACE_TABLE, XML_NAME, XML_TOK_DATA_PILOT_TABLE_ATTR_NAME },
1559 : { XML_NAMESPACE_TABLE, XML_APPLICATION_DATA, XML_TOK_DATA_PILOT_TABLE_ATTR_APPLICATION_DATA },
1560 : { XML_NAMESPACE_TABLE, XML_GRAND_TOTAL, XML_TOK_DATA_PILOT_TABLE_ATTR_GRAND_TOTAL },
1561 : { XML_NAMESPACE_TABLE, XML_IGNORE_EMPTY_ROWS, XML_TOK_DATA_PILOT_TABLE_ATTR_IGNORE_EMPTY_ROWS },
1562 : { XML_NAMESPACE_TABLE, XML_IDENTIFY_CATEGORIES, XML_TOK_DATA_PILOT_TABLE_ATTR_IDENTIFY_CATEGORIES },
1563 : { XML_NAMESPACE_TABLE, XML_TARGET_RANGE_ADDRESS, XML_TOK_DATA_PILOT_TABLE_ATTR_TARGET_RANGE_ADDRESS },
1564 : { XML_NAMESPACE_TABLE, XML_BUTTONS, XML_TOK_DATA_PILOT_TABLE_ATTR_BUTTONS },
1565 : { XML_NAMESPACE_TABLE, XML_SHOW_FILTER_BUTTON, XML_TOK_DATA_PILOT_TABLE_ATTR_SHOW_FILTER_BUTTON },
1566 : { XML_NAMESPACE_TABLE, XML_DRILL_DOWN_ON_DOUBLE_CLICK, XML_TOK_DATA_PILOT_TABLE_ATTR_DRILL_DOWN },
1567 : { XML_NAMESPACE_TABLE, XML_HEADER_GRID_LAYOUT, XML_TOK_DATA_PILOT_TABLE_ATTR_HEADER_GRID_LAYOUT },
1568 : XML_TOKEN_MAP_END
1569 : };
1570 :
1571 7 : pDataPilotTableAttrTokenMap = new SvXMLTokenMap( aDataPilotTableAttrTokenMap );
1572 : } // if( !pDataPilotTableAttrTokenMap )
1573 :
1574 11 : return *pDataPilotTableAttrTokenMap;
1575 : }
1576 :
1577 65 : const SvXMLTokenMap& ScXMLImport::GetDataPilotTableElemTokenMap()
1578 : {
1579 65 : if( !pDataPilotTableElemTokenMap )
1580 : {
1581 : static const SvXMLTokenMapEntry aDataPilotTableElemTokenMap[] =
1582 : {
1583 : { XML_NAMESPACE_TABLE, XML_DATABASE_SOURCE_SQL, XML_TOK_DATA_PILOT_TABLE_ELEM_SOURCE_SQL },
1584 : { XML_NAMESPACE_TABLE, XML_DATABASE_SOURCE_TABLE, XML_TOK_DATA_PILOT_TABLE_ELEM_SOURCE_TABLE },
1585 : { XML_NAMESPACE_TABLE, XML_DATA_PILOT_GRAND_TOTAL, XML_TOK_DATA_PILOT_TABLE_ELEM_GRAND_TOTAL },
1586 : { XML_NAMESPACE_TABLE_EXT, XML_DATA_PILOT_GRAND_TOTAL, XML_TOK_DATA_PILOT_TABLE_ELEM_GRAND_TOTAL_EXT },
1587 : { XML_NAMESPACE_TABLE, XML_DATABASE_SOURCE_QUERY, XML_TOK_DATA_PILOT_TABLE_ELEM_SOURCE_QUERY },
1588 : { XML_NAMESPACE_TABLE, XML_SOURCE_SERVICE, XML_TOK_DATA_PILOT_TABLE_ELEM_SOURCE_SERVICE },
1589 : { XML_NAMESPACE_TABLE, XML_SOURCE_CELL_RANGE, XML_TOK_DATA_PILOT_TABLE_ELEM_SOURCE_CELL_RANGE },
1590 : { XML_NAMESPACE_TABLE, XML_DATA_PILOT_FIELD, XML_TOK_DATA_PILOT_TABLE_ELEM_DATA_PILOT_FIELD },
1591 : XML_TOKEN_MAP_END
1592 : };
1593 :
1594 7 : pDataPilotTableElemTokenMap = new SvXMLTokenMap( aDataPilotTableElemTokenMap );
1595 : } // if( !pDataPilotTableElemTokenMap )
1596 :
1597 65 : return *pDataPilotTableElemTokenMap;
1598 : }
1599 :
1600 0 : const SvXMLTokenMap& ScXMLImport::GetDataPilotTableSourceServiceAttrTokenMap()
1601 : {
1602 0 : if( !pDataPilotTableSourceServiceAttrTokenMap )
1603 : {
1604 : static const SvXMLTokenMapEntry aDataPilotTableSourceServiceAttrTokenMap[] =
1605 : {
1606 : { XML_NAMESPACE_TABLE, XML_NAME, XML_TOK_SOURCE_SERVICE_ATTR_NAME },
1607 : { XML_NAMESPACE_TABLE, XML_SOURCE_NAME, XML_TOK_SOURCE_SERVICE_ATTR_SOURCE_NAME },
1608 : { XML_NAMESPACE_TABLE, XML_OBJECT_NAME, XML_TOK_SOURCE_SERVICE_ATTR_OBJECT_NAME },
1609 : { XML_NAMESPACE_TABLE, XML_USER_NAME, XML_TOK_SOURCE_SERVICE_ATTR_USER_NAME },
1610 : { XML_NAMESPACE_TABLE, XML_PASSWORD, XML_TOK_SOURCE_SERVICE_ATTR_PASSWORD },
1611 : XML_TOKEN_MAP_END
1612 : };
1613 :
1614 0 : pDataPilotTableSourceServiceAttrTokenMap = new SvXMLTokenMap( aDataPilotTableSourceServiceAttrTokenMap );
1615 : } // if( !pDataPilotTableSourceServiceAttrTokenMap )
1616 :
1617 0 : return *pDataPilotTableSourceServiceAttrTokenMap;
1618 : }
1619 :
1620 0 : const SvXMLTokenMap& ScXMLImport::GetDataPilotGrandTotalAttrTokenMap()
1621 : {
1622 0 : if (!pDataPilotGrandTotalAttrTokenMap)
1623 : {
1624 : static const SvXMLTokenMapEntry aDataPilotGrandTotalAttrTokenMap[] =
1625 : {
1626 : { XML_NAMESPACE_TABLE, XML_DISPLAY, XML_TOK_DATA_PILOT_GRAND_TOTAL_ATTR_DISPLAY },
1627 : { XML_NAMESPACE_TABLE, XML_ORIENTATION, XML_TOK_DATA_PILOT_GRAND_TOTAL_ATTR_ORIENTATION },
1628 : { XML_NAMESPACE_TABLE, XML_DISPLAY_NAME, XML_TOK_DATA_PILOT_GRAND_TOTAL_ATTR_DISPLAY_NAME },
1629 : { XML_NAMESPACE_TABLE_EXT, XML_DISPLAY_NAME, XML_TOK_DATA_PILOT_GRAND_TOTAL_ATTR_DISPLAY_NAME_EXT },
1630 : XML_TOKEN_MAP_END
1631 : };
1632 :
1633 0 : pDataPilotGrandTotalAttrTokenMap = new SvXMLTokenMap( aDataPilotGrandTotalAttrTokenMap );
1634 : }
1635 :
1636 0 : return *pDataPilotGrandTotalAttrTokenMap;
1637 : }
1638 :
1639 11 : const SvXMLTokenMap& ScXMLImport::GetDataPilotTableSourceCellRangeAttrTokenMap()
1640 : {
1641 11 : if( !pDataPilotTableSourceCellRangeAttrTokenMap )
1642 : {
1643 : static const SvXMLTokenMapEntry aDataPilotTableSourceCellRangeAttrTokenMap[] =
1644 : {
1645 : { XML_NAMESPACE_TABLE, XML_CELL_RANGE_ADDRESS, XML_TOK_SOURCE_CELL_RANGE_ATTR_CELL_RANGE_ADDRESS },
1646 : { XML_NAMESPACE_TABLE, XML_NAME, XML_TOK_SOURCE_CELL_RANGE_ATTR_NAME },
1647 : XML_TOKEN_MAP_END
1648 : };
1649 :
1650 7 : pDataPilotTableSourceCellRangeAttrTokenMap = new SvXMLTokenMap( aDataPilotTableSourceCellRangeAttrTokenMap );
1651 : } // if( !pDataPilotTableSourceCellRangeAttrTokenMap )
1652 :
1653 11 : return *pDataPilotTableSourceCellRangeAttrTokenMap;
1654 : }
1655 :
1656 1 : const SvXMLTokenMap& ScXMLImport::GetDataPilotTableSourceCellRangeElemTokenMap()
1657 : {
1658 1 : if( !pDataPilotTableSourceCellRangeElemTokenMap )
1659 : {
1660 : static const SvXMLTokenMapEntry aDataPilotTableSourceCellRangeElemTokenMap[] =
1661 : {
1662 : { XML_NAMESPACE_TABLE, XML_FILTER, XML_TOK_SOURCE_CELL_RANGE_ELEM_FILTER},
1663 : XML_TOKEN_MAP_END
1664 : };
1665 :
1666 1 : pDataPilotTableSourceCellRangeElemTokenMap = new SvXMLTokenMap( aDataPilotTableSourceCellRangeElemTokenMap );
1667 : } // if( !pDataPilotTableSourceCellRangeElemTokenMap )
1668 :
1669 1 : return *pDataPilotTableSourceCellRangeElemTokenMap;
1670 : }
1671 :
1672 54 : const SvXMLTokenMap& ScXMLImport::GetDataPilotFieldAttrTokenMap()
1673 : {
1674 54 : if( !pDataPilotFieldAttrTokenMap )
1675 : {
1676 : static const SvXMLTokenMapEntry aDataPilotFieldAttrTokenMap[] =
1677 : {
1678 : { XML_NAMESPACE_TABLE, XML_SOURCE_FIELD_NAME, XML_TOK_DATA_PILOT_FIELD_ATTR_SOURCE_FIELD_NAME },
1679 : { XML_NAMESPACE_TABLE, XML_DISPLAY_NAME, XML_TOK_DATA_PILOT_FIELD_ATTR_DISPLAY_NAME },
1680 : { XML_NAMESPACE_TABLE_EXT, XML_DISPLAY_NAME, XML_TOK_DATA_PILOT_FIELD_ATTR_DISPLAY_NAME_EXT },
1681 : { XML_NAMESPACE_TABLE, XML_IS_DATA_LAYOUT_FIELD, XML_TOK_DATA_PILOT_FIELD_ATTR_IS_DATA_LAYOUT_FIELD },
1682 : { XML_NAMESPACE_TABLE, XML_FUNCTION, XML_TOK_DATA_PILOT_FIELD_ATTR_FUNCTION },
1683 : { XML_NAMESPACE_TABLE, XML_ORIENTATION, XML_TOK_DATA_PILOT_FIELD_ATTR_ORIENTATION },
1684 : { XML_NAMESPACE_TABLE, XML_SELECTED_PAGE, XML_TOK_DATA_PILOT_FIELD_ATTR_SELECTED_PAGE },
1685 : { XML_NAMESPACE_LO_EXT, XML_IGNORE_SELECTED_PAGE, XML_TOK_DATA_PILOT_FIELD_ATTR_IGNORE_SELECTED_PAGE },
1686 : { XML_NAMESPACE_TABLE, XML_USED_HIERARCHY, XML_TOK_DATA_PILOT_FIELD_ATTR_USED_HIERARCHY },
1687 : XML_TOKEN_MAP_END
1688 : };
1689 :
1690 7 : pDataPilotFieldAttrTokenMap = new SvXMLTokenMap( aDataPilotFieldAttrTokenMap );
1691 : } // if( !pDataPilotFieldAttrTokenMap )
1692 :
1693 54 : return *pDataPilotFieldAttrTokenMap;
1694 : }
1695 :
1696 58 : const SvXMLTokenMap& ScXMLImport::GetDataPilotFieldElemTokenMap()
1697 : {
1698 58 : if( !pDataPilotFieldElemTokenMap )
1699 : {
1700 : static const SvXMLTokenMapEntry aDataPilotFieldElemTokenMap[] =
1701 : {
1702 : { XML_NAMESPACE_TABLE, XML_DATA_PILOT_LEVEL, XML_TOK_DATA_PILOT_FIELD_ELEM_DATA_PILOT_LEVEL },
1703 : { XML_NAMESPACE_TABLE, XML_DATA_PILOT_FIELD_REFERENCE, XML_TOK_DATA_PILOT_FIELD_ELEM_DATA_PILOT_REFERENCE },
1704 : { XML_NAMESPACE_TABLE, XML_DATA_PILOT_GROUPS, XML_TOK_DATA_PILOT_FIELD_ELEM_DATA_PILOT_GROUPS },
1705 : XML_TOKEN_MAP_END
1706 : };
1707 :
1708 7 : pDataPilotFieldElemTokenMap = new SvXMLTokenMap( aDataPilotFieldElemTokenMap );
1709 : } // if( !pDataPilotFieldElemTokenMap )
1710 :
1711 58 : return *pDataPilotFieldElemTokenMap;
1712 : }
1713 :
1714 54 : const SvXMLTokenMap& ScXMLImport::GetDataPilotLevelAttrTokenMap()
1715 : {
1716 54 : if( !pDataPilotLevelAttrTokenMap )
1717 : {
1718 : static const SvXMLTokenMapEntry aDataPilotLevelAttrTokenMap[] =
1719 : {
1720 : { XML_NAMESPACE_TABLE, XML_SHOW_EMPTY, XML_TOK_DATA_PILOT_LEVEL_ATTR_SHOW_EMPTY },
1721 : { XML_NAMESPACE_CALC_EXT, XML_REPEAT_ITEM_LABELS, XML_TOK_DATA_PILOT_LEVEL_ATTR_REPEAT_ITEM_LABELS },
1722 : XML_TOKEN_MAP_END
1723 : };
1724 :
1725 7 : pDataPilotLevelAttrTokenMap = new SvXMLTokenMap( aDataPilotLevelAttrTokenMap );
1726 : } // if( !pDataPilotLevelAttrTokenMap )
1727 :
1728 54 : return *pDataPilotLevelAttrTokenMap;
1729 : }
1730 :
1731 158 : const SvXMLTokenMap& ScXMLImport::GetDataPilotLevelElemTokenMap()
1732 : {
1733 158 : if( !pDataPilotLevelElemTokenMap )
1734 : {
1735 : static const SvXMLTokenMapEntry aDataPilotLevelElemTokenMap[] =
1736 : {
1737 : { XML_NAMESPACE_TABLE, XML_DATA_PILOT_SUBTOTALS, XML_TOK_DATA_PILOT_LEVEL_ELEM_DATA_PILOT_SUBTOTALS },
1738 : { XML_NAMESPACE_TABLE, XML_DATA_PILOT_MEMBERS, XML_TOK_DATA_PILOT_LEVEL_ELEM_DATA_PILOT_MEMBERS },
1739 : { XML_NAMESPACE_TABLE, XML_DATA_PILOT_DISPLAY_INFO, XML_TOK_DATA_PILOT_FIELD_ELEM_DATA_PILOT_DISPLAY_INFO },
1740 : { XML_NAMESPACE_TABLE, XML_DATA_PILOT_SORT_INFO, XML_TOK_DATA_PILOT_FIELD_ELEM_DATA_PILOT_SORT_INFO },
1741 : { XML_NAMESPACE_TABLE, XML_DATA_PILOT_LAYOUT_INFO, XML_TOK_DATA_PILOT_FIELD_ELEM_DATA_PILOT_LAYOUT_INFO },
1742 : XML_TOKEN_MAP_END
1743 : };
1744 :
1745 7 : pDataPilotLevelElemTokenMap = new SvXMLTokenMap( aDataPilotLevelElemTokenMap );
1746 : } // if( !pDataPilotLevelElemTokenMap )
1747 :
1748 158 : return *pDataPilotLevelElemTokenMap;
1749 : }
1750 :
1751 3 : const SvXMLTokenMap& ScXMLImport::GetDataPilotSubTotalsElemTokenMap()
1752 : {
1753 3 : if( !pDataPilotSubTotalsElemTokenMap )
1754 : {
1755 : static const SvXMLTokenMapEntry aDataPilotSubTotalsElemTokenMap[] =
1756 : {
1757 : { XML_NAMESPACE_TABLE, XML_DATA_PILOT_SUBTOTAL, XML_TOK_DATA_PILOT_SUBTOTALS_ELEM_DATA_PILOT_SUBTOTAL },
1758 : XML_TOKEN_MAP_END
1759 : };
1760 :
1761 2 : pDataPilotSubTotalsElemTokenMap = new SvXMLTokenMap( aDataPilotSubTotalsElemTokenMap );
1762 : } // if( !pDataPilotSubTotalsElemTokenMap )
1763 :
1764 3 : return *pDataPilotSubTotalsElemTokenMap;
1765 : }
1766 :
1767 3 : const SvXMLTokenMap& ScXMLImport::GetDataPilotSubTotalAttrTokenMap()
1768 : {
1769 3 : if( !pDataPilotSubTotalAttrTokenMap )
1770 : {
1771 : static const SvXMLTokenMapEntry aDataPilotSubTotalAttrTokenMap[] =
1772 : {
1773 : { XML_NAMESPACE_TABLE, XML_FUNCTION, XML_TOK_DATA_PILOT_SUBTOTAL_ATTR_FUNCTION },
1774 : { XML_NAMESPACE_TABLE, XML_DISPLAY_NAME, XML_TOK_DATA_PILOT_SUBTOTAL_ATTR_DISPLAY_NAME },
1775 : { XML_NAMESPACE_TABLE_EXT, XML_DISPLAY_NAME, XML_TOK_DATA_PILOT_SUBTOTAL_ATTR_DISPLAY_NAME_EXT },
1776 : XML_TOKEN_MAP_END
1777 : };
1778 :
1779 2 : pDataPilotSubTotalAttrTokenMap = new SvXMLTokenMap( aDataPilotSubTotalAttrTokenMap );
1780 : } // if( !pDataPilotSubTotalAttrTokenMap )
1781 :
1782 3 : return *pDataPilotSubTotalAttrTokenMap;
1783 : }
1784 :
1785 2958 : const SvXMLTokenMap& ScXMLImport::GetDataPilotMembersElemTokenMap()
1786 : {
1787 2958 : if( !pDataPilotMembersElemTokenMap )
1788 : {
1789 : static const SvXMLTokenMapEntry aDataPilotMembersElemTokenMap[] =
1790 : {
1791 : { XML_NAMESPACE_TABLE, XML_DATA_PILOT_MEMBER, XML_TOK_DATA_PILOT_MEMBERS_ELEM_DATA_PILOT_MEMBER },
1792 : XML_TOKEN_MAP_END
1793 : };
1794 :
1795 6 : pDataPilotMembersElemTokenMap = new SvXMLTokenMap( aDataPilotMembersElemTokenMap );
1796 : } // if( !pDataPilotMembersElemTokenMap )
1797 :
1798 2958 : return *pDataPilotMembersElemTokenMap;
1799 : }
1800 :
1801 2958 : const SvXMLTokenMap& ScXMLImport::GetDataPilotMemberAttrTokenMap()
1802 : {
1803 2958 : if( !pDataPilotMemberAttrTokenMap )
1804 : {
1805 : static const SvXMLTokenMapEntry aDataPilotMemberAttrTokenMap[] =
1806 : {
1807 : { XML_NAMESPACE_TABLE, XML_NAME, XML_TOK_DATA_PILOT_MEMBER_ATTR_NAME },
1808 : { XML_NAMESPACE_TABLE, XML_DISPLAY_NAME, XML_TOK_DATA_PILOT_MEMBER_ATTR_DISPLAY_NAME },
1809 : { XML_NAMESPACE_TABLE_EXT, XML_DISPLAY_NAME, XML_TOK_DATA_PILOT_MEMBER_ATTR_DISPLAY_NAME_EXT },
1810 : { XML_NAMESPACE_TABLE, XML_DISPLAY, XML_TOK_DATA_PILOT_MEMBER_ATTR_DISPLAY },
1811 : { XML_NAMESPACE_TABLE, XML_SHOW_DETAILS, XML_TOK_DATA_PILOT_MEMBER_ATTR_SHOW_DETAILS },
1812 : XML_TOKEN_MAP_END
1813 : };
1814 :
1815 6 : pDataPilotMemberAttrTokenMap = new SvXMLTokenMap( aDataPilotMemberAttrTokenMap );
1816 : } // if( !pDataPilotMemberAttrTokenMap )
1817 :
1818 2958 : return *pDataPilotMemberAttrTokenMap;
1819 : }
1820 :
1821 0 : const SvXMLTokenMap& ScXMLImport::GetConsolidationAttrTokenMap()
1822 : {
1823 0 : if( !pConsolidationAttrTokenMap )
1824 : {
1825 : static const SvXMLTokenMapEntry aConsolidationAttrTokenMap[] =
1826 : {
1827 : { XML_NAMESPACE_TABLE, XML_FUNCTION, XML_TOK_CONSOLIDATION_ATTR_FUNCTION },
1828 : { XML_NAMESPACE_TABLE, XML_SOURCE_CELL_RANGE_ADDRESSES, XML_TOK_CONSOLIDATION_ATTR_SOURCE_RANGES },
1829 : { XML_NAMESPACE_TABLE, XML_TARGET_CELL_ADDRESS, XML_TOK_CONSOLIDATION_ATTR_TARGET_ADDRESS },
1830 : { XML_NAMESPACE_TABLE, XML_USE_LABEL, XML_TOK_CONSOLIDATION_ATTR_USE_LABEL },
1831 : { XML_NAMESPACE_TABLE, XML_LINK_TO_SOURCE_DATA, XML_TOK_CONSOLIDATION_ATTR_LINK_TO_SOURCE },
1832 : XML_TOKEN_MAP_END
1833 : };
1834 :
1835 0 : pConsolidationAttrTokenMap = new SvXMLTokenMap( aConsolidationAttrTokenMap );
1836 : } // if( !pConsolidationAttrTokenMap )
1837 :
1838 0 : return *pConsolidationAttrTokenMap;
1839 : }
1840 :
1841 428 : const SvXMLTokenMap& ScXMLImport::GetCellTextParaElemTokenMap()
1842 : {
1843 428 : if (!pCellTextParaElemTokenMap)
1844 : {
1845 : static const SvXMLTokenMapEntry aMap[] =
1846 : {
1847 : { XML_NAMESPACE_TEXT, XML_S, XML_TOK_CELL_TEXT_S },
1848 : { XML_NAMESPACE_TEXT, XML_SPAN, XML_TOK_CELL_TEXT_SPAN },
1849 : { XML_NAMESPACE_TEXT, XML_SHEET_NAME, XML_TOK_CELL_TEXT_SHEET_NAME },
1850 : { XML_NAMESPACE_TEXT, XML_DATE, XML_TOK_CELL_TEXT_DATE },
1851 : { XML_NAMESPACE_TEXT, XML_TITLE, XML_TOK_CELL_TEXT_TITLE },
1852 : { XML_NAMESPACE_TEXT, XML_A, XML_TOK_CELL_TEXT_URL },
1853 : XML_TOKEN_MAP_END
1854 : };
1855 :
1856 44 : pCellTextParaElemTokenMap = new SvXMLTokenMap(aMap);
1857 : }
1858 428 : return *pCellTextParaElemTokenMap;
1859 : }
1860 :
1861 5 : const SvXMLTokenMap& ScXMLImport::GetCellTextSpanElemTokenMap()
1862 : {
1863 5 : if (!pCellTextSpanElemTokenMap)
1864 : {
1865 : static const SvXMLTokenMapEntry aMap[] =
1866 : {
1867 : { XML_NAMESPACE_TEXT, XML_SHEET_NAME, XML_TOK_CELL_TEXT_SPAN_ELEM_SHEET_NAME },
1868 : { XML_NAMESPACE_TEXT, XML_DATE, XML_TOK_CELL_TEXT_SPAN_ELEM_DATE },
1869 : { XML_NAMESPACE_TEXT, XML_TITLE, XML_TOK_CELL_TEXT_SPAN_ELEM_TITLE },
1870 : { XML_NAMESPACE_TEXT, XML_A, XML_TOK_CELL_TEXT_SPAN_ELEM_URL },
1871 : { XML_NAMESPACE_TEXT, XML_S, XML_TOK_CELL_TEXT_SPAN_ELEM_S },
1872 : XML_TOKEN_MAP_END
1873 : };
1874 :
1875 1 : pCellTextSpanElemTokenMap = new SvXMLTokenMap(aMap);
1876 : }
1877 5 : return *pCellTextSpanElemTokenMap;
1878 : }
1879 :
1880 403 : const SvXMLTokenMap& ScXMLImport::GetCellTextSpanAttrTokenMap()
1881 : {
1882 403 : if (!pCellTextSpanAttrTokenMap)
1883 : {
1884 : static const SvXMLTokenMapEntry aMap[] =
1885 : {
1886 : { XML_NAMESPACE_TEXT, XML_STYLE_NAME, XML_TOK_CELL_TEXT_SPAN_ATTR_STYLE_NAME },
1887 : XML_TOKEN_MAP_END
1888 : };
1889 :
1890 39 : pCellTextSpanAttrTokenMap = new SvXMLTokenMap(aMap);
1891 : }
1892 403 : return *pCellTextSpanAttrTokenMap;
1893 : }
1894 :
1895 10 : const SvXMLTokenMap& ScXMLImport::GetCellTextURLAttrTokenMap()
1896 : {
1897 10 : if (!pCellTextURLAttrTokenMap)
1898 : {
1899 : static const SvXMLTokenMapEntry aMap[] =
1900 : {
1901 : { XML_NAMESPACE_XLINK, XML_HREF, XML_TOK_CELL_TEXT_URL_ATTR_UREF },
1902 : { XML_NAMESPACE_XLINK, XML_TYPE, XML_TOK_CELL_TEXT_URL_ATTR_TYPE },
1903 : XML_TOKEN_MAP_END
1904 : };
1905 :
1906 6 : pCellTextURLAttrTokenMap = new SvXMLTokenMap(aMap);
1907 : }
1908 10 : return *pCellTextURLAttrTokenMap;
1909 : }
1910 :
1911 14 : const SvXMLTokenMap& ScXMLImport::GetCellTextSAttrTokenMap()
1912 : {
1913 14 : if (!pCellTextSAttrTokenMap)
1914 : {
1915 : static const SvXMLTokenMapEntry aMap[] =
1916 : {
1917 : { XML_NAMESPACE_TEXT, XML_C, XML_TOK_CELL_TEXT_S_ATTR_C },
1918 : XML_TOKEN_MAP_END
1919 : };
1920 :
1921 7 : pCellTextSAttrTokenMap = new SvXMLTokenMap(aMap);
1922 : }
1923 14 : return *pCellTextSAttrTokenMap;
1924 : }
1925 :
1926 0 : const SvXMLTokenMap& ScXMLImport::GetDataStreamAttrTokenMap()
1927 : {
1928 0 : if (!pDataStreamAttrTokenMap)
1929 : {
1930 : static const SvXMLTokenMapEntry aMap[] =
1931 : {
1932 : { XML_NAMESPACE_XLINK, XML_HREF, XML_TOK_DATA_STREAM_ATTR_URL },
1933 : { XML_NAMESPACE_TABLE, XML_TARGET_RANGE_ADDRESS, XML_TOK_DATA_STREAM_ATTR_RANGE },
1934 : { XML_NAMESPACE_CALC_EXT, XML_EMPTY_LINE_REFRESH, XML_TOK_DATA_STREAM_ATTR_EMPTY_LINE_REFRESH },
1935 : { XML_NAMESPACE_CALC_EXT, XML_INSERTION_POSITION, XML_TOK_DATA_STREAM_ATTR_INSERTION_POSITION },
1936 : XML_TOKEN_MAP_END
1937 : };
1938 0 : pDataStreamAttrTokenMap = new SvXMLTokenMap(aMap);
1939 : }
1940 0 : return *pDataStreamAttrTokenMap;
1941 : }
1942 :
1943 627 : void ScXMLImport::SetPostProcessData( sc::ImportPostProcessData* p )
1944 : {
1945 627 : mpPostProcessData = p;
1946 627 : }
1947 :
1948 11 : sc::PivotTableSources& ScXMLImport::GetPivotTableSources()
1949 : {
1950 11 : if (!mpPivotSources)
1951 7 : mpPivotSources.reset(new sc::PivotTableSources);
1952 :
1953 11 : return *mpPivotSources;
1954 : }
1955 :
1956 742 : SvXMLImportContext *ScXMLImport::CreateContext( sal_uInt16 nPrefix,
1957 : const OUString& rLocalName,
1958 : const uno::Reference<xml::sax::XAttributeList>& xAttrList )
1959 : {
1960 742 : SvXMLImportContext *pContext = 0;
1961 :
1962 1922 : if( (XML_NAMESPACE_OFFICE == nPrefix) &&
1963 1188 : ( IsXMLToken(rLocalName, XML_DOCUMENT_STYLES) ||
1964 853 : IsXMLToken(rLocalName, XML_DOCUMENT_CONTENT) ||
1965 343 : IsXMLToken(rLocalName, XML_DOCUMENT_SETTINGS) )) {
1966 1004 : pContext = new ScXMLDocContext_Impl( *this, nPrefix, rLocalName,
1967 1004 : xAttrList );
1968 416 : } else if ( (XML_NAMESPACE_OFFICE == nPrefix) &&
1969 176 : ( IsXMLToken(rLocalName, XML_DOCUMENT_META)) ) {
1970 146 : pContext = CreateMetaContext(rLocalName);
1971 124 : } else if ( (XML_NAMESPACE_OFFICE == nPrefix) &&
1972 30 : ( IsXMLToken(rLocalName, XML_DOCUMENT)) ) {
1973 : uno::Reference<document::XDocumentPropertiesSupplier> xDPS(
1974 30 : GetModel(), uno::UNO_QUERY_THROW);
1975 : // flat OpenDocument file format
1976 90 : pContext = new ScXMLFlatDocContext_Impl( *this, nPrefix, rLocalName,
1977 120 : xAttrList, xDPS->getDocumentProperties());
1978 : }
1979 : else
1980 64 : pContext = SvXMLImport::CreateContext( nPrefix, rLocalName, xAttrList );
1981 :
1982 742 : return pContext;
1983 : }
1984 :
1985 683 : ScXMLImport::ScXMLImport(
1986 : const ::com::sun::star::uno::Reference< ::com::sun::star::uno::XComponentContext >& rContext,
1987 : OUString const & implementationName, SvXMLImportFlags nImportFlag)
1988 : : SvXMLImport( rContext, implementationName, nImportFlag ),
1989 : pDoc( NULL ),
1990 : pChangeTrackingImportHelper(NULL),
1991 : pStylesImportHelper(NULL),
1992 : sNumberFormat(SC_UNONAME_NUMFMT),
1993 : sLocale(SC_LOCALE),
1994 : sCellStyle(SC_UNONAME_CELLSTYL),
1995 : sStandardFormat(SC_STANDARDFORMAT),
1996 : sType(SC_UNONAME_TYPE),
1997 : pDocElemTokenMap( 0 ),
1998 : pStylesElemTokenMap( 0 ),
1999 : pStylesAttrTokenMap( 0 ),
2000 : pStyleElemTokenMap( 0 ),
2001 : pBodyElemTokenMap( 0 ),
2002 : pContentValidationsElemTokenMap( 0 ),
2003 : pContentValidationElemTokenMap( 0 ),
2004 : pContentValidationAttrTokenMap( 0 ),
2005 : pContentValidationMessageElemTokenMap( 0 ),
2006 : pContentValidationHelpMessageAttrTokenMap( 0 ),
2007 : pContentValidationErrorMessageAttrTokenMap( 0 ),
2008 : pContentValidationErrorMacroAttrTokenMap( 0 ),
2009 : pCondFormatsTokenMap( 0 ),
2010 : pCondFormatTokenMap( 0 ),
2011 : pCondFormatAttrMap( 0 ),
2012 : pCondDateAttrMap( 0 ),
2013 : pConditionAttrMap( 0 ),
2014 : pColorScaleTokenMap( 0 ),
2015 : pColorScaleEntryAttrTokenMap( 0 ),
2016 : pDataBarTokenMap( 0 ),
2017 : pDataBarAttrMap( 0 ),
2018 : pFormattingEntryAttrMap( 0 ),
2019 : pIconSetAttrMap( 0 ),
2020 : pLabelRangesElemTokenMap( 0 ),
2021 : pLabelRangeAttrTokenMap( 0 ),
2022 : pTableElemTokenMap( 0 ),
2023 : pTableProtectionElemTokenMap(NULL),
2024 : pTableRowsElemTokenMap( 0 ),
2025 : pTableColsElemTokenMap( 0 ),
2026 : pTableScenarioAttrTokenMap( 0 ),
2027 : pTableAttrTokenMap( 0 ),
2028 : pTableColAttrTokenMap( 0 ),
2029 : pTableRowElemTokenMap( 0 ),
2030 : pTableRowAttrTokenMap( 0 ),
2031 : pTableRowCellElemTokenMap( 0 ),
2032 : pTableRowCellAttrTokenMap( 0 ),
2033 : pTableAnnotationAttrTokenMap( 0 ),
2034 : pDetectiveElemTokenMap( 0 ),
2035 : pDetectiveHighlightedAttrTokenMap( 0 ),
2036 : pDetectiveOperationAttrTokenMap( 0 ),
2037 : pTableCellRangeSourceAttrTokenMap( 0 ),
2038 : pNamedExpressionsElemTokenMap( 0 ),
2039 : pNamedRangeAttrTokenMap( 0 ),
2040 : pNamedExpressionAttrTokenMap( 0 ),
2041 : pDatabaseRangesElemTokenMap( 0 ),
2042 : pDatabaseRangeElemTokenMap( 0 ),
2043 : pDatabaseRangeAttrTokenMap( 0 ),
2044 : pDatabaseRangeSourceSQLAttrTokenMap( 0 ),
2045 : pDatabaseRangeSourceTableAttrTokenMap( 0 ),
2046 : pDatabaseRangeSourceQueryAttrTokenMap( 0 ),
2047 : pFilterElemTokenMap( 0 ),
2048 : pFilterAttrTokenMap( 0 ),
2049 : pFilterConditionElemTokenMap( 0 ),
2050 : pFilterConditionAttrTokenMap( 0 ),
2051 : pFilterSetItemAttrTokenMap( 0 ),
2052 : pSortElemTokenMap( 0 ),
2053 : pSortAttrTokenMap( 0 ),
2054 : pSortSortByAttrTokenMap( 0 ),
2055 : pDatabaseRangeSubTotalRulesElemTokenMap( 0 ),
2056 : pDatabaseRangeSubTotalRulesAttrTokenMap( 0 ),
2057 : pSubTotalRulesSortGroupsAttrTokenMap( 0 ),
2058 : pSubTotalRulesSubTotalRuleElemTokenMap( 0 ),
2059 : pSubTotalRulesSubTotalRuleAttrTokenMap( 0 ),
2060 : pSubTotalRuleSubTotalFieldAttrTokenMap( 0 ),
2061 : pDataPilotTablesElemTokenMap( 0 ),
2062 : pDataPilotTableAttrTokenMap( 0 ),
2063 : pDataPilotTableElemTokenMap( 0 ),
2064 : pDataPilotTableSourceServiceAttrTokenMap( 0 ),
2065 : pDataPilotGrandTotalAttrTokenMap(NULL),
2066 : pDataPilotTableSourceCellRangeElemTokenMap( 0 ),
2067 : pDataPilotTableSourceCellRangeAttrTokenMap( 0 ),
2068 : pDataPilotFieldAttrTokenMap( 0 ),
2069 : pDataPilotFieldElemTokenMap( 0 ),
2070 : pDataPilotLevelAttrTokenMap( 0 ),
2071 : pDataPilotLevelElemTokenMap( 0 ),
2072 : pDataPilotSubTotalsElemTokenMap( 0 ),
2073 : pDataPilotSubTotalAttrTokenMap( 0 ),
2074 : pDataPilotMembersElemTokenMap( 0 ),
2075 : pDataPilotMemberAttrTokenMap( 0 ),
2076 : pConsolidationAttrTokenMap( 0 ),
2077 : pCellTextParaElemTokenMap(NULL),
2078 : pCellTextSpanElemTokenMap(NULL),
2079 : pCellTextSpanAttrTokenMap(NULL),
2080 : pCellTextURLAttrTokenMap(NULL),
2081 : pCellTextSAttrTokenMap(NULL),
2082 : pDataStreamAttrTokenMap(NULL),
2083 : mpPostProcessData(NULL),
2084 : aTables(*this),
2085 : pMyNamedExpressions(NULL),
2086 : pMyLabelRanges(NULL),
2087 : pValidations(NULL),
2088 : pDetectiveOpArray(NULL),
2089 : pSolarMutexGuard(NULL),
2090 : pNumberFormatAttributesExportHelper(NULL),
2091 : pStyleNumberFormats(NULL),
2092 : sPrevStyleName(),
2093 : sPrevCurrency(),
2094 : nSolarMutexLocked(0),
2095 : nProgressCount(0),
2096 : nStyleFamilyMask( 0 ),
2097 : nPrevCellType(0),
2098 : bLoadDoc( true ),
2099 : bRemoveLastChar(false),
2100 : bNullDateSetted(false),
2101 : bSelfImportingXMLSet(false),
2102 : mbLockSolarMutex(true),
2103 : mbImportStyles(true),
2104 683 : mbHasNewCondFormatData(false)
2105 : {
2106 683 : pStylesImportHelper = new ScMyStylesImportHelper(*this);
2107 :
2108 683 : xScPropHdlFactory = new XMLScPropHdlFactory;
2109 683 : xCellStylesPropertySetMapper = new XMLPropertySetMapper(aXMLScCellStylesProperties, xScPropHdlFactory, false);
2110 683 : xColumnStylesPropertySetMapper = new XMLPropertySetMapper(aXMLScColumnStylesProperties, xScPropHdlFactory, false);
2111 683 : xRowStylesPropertySetMapper = new XMLPropertySetMapper(aXMLScRowStylesImportProperties, xScPropHdlFactory, false);
2112 683 : xTableStylesPropertySetMapper = new XMLPropertySetMapper(aXMLScTableStylesImportProperties, xScPropHdlFactory, false);
2113 :
2114 : // #i66550# needed for 'presentation:event-listener' element for URLs in shapes
2115 683 : GetNamespaceMap().Add(
2116 683 : GetXMLToken( XML_NP_PRESENTATION ),
2117 683 : GetXMLToken( XML_N_PRESENTATION ),
2118 683 : XML_NAMESPACE_PRESENTATION );
2119 :
2120 : // initialize cell type map.
2121 : const struct { XMLTokenEnum _token; sal_Int16 _type; } aCellTypePairs[] =
2122 : {
2123 : { XML_FLOAT, util::NumberFormat::NUMBER },
2124 : { XML_STRING, util::NumberFormat::TEXT },
2125 : { XML_TIME, util::NumberFormat::TIME },
2126 : { XML_DATE, util::NumberFormat::DATETIME },
2127 : { XML_PERCENTAGE, util::NumberFormat::PERCENT },
2128 : { XML_CURRENCY, util::NumberFormat::CURRENCY },
2129 : { XML_BOOLEAN, util::NumberFormat::LOGICAL }
2130 683 : };
2131 683 : size_t n = sizeof(aCellTypePairs)/sizeof(aCellTypePairs[0]);
2132 5464 : for (size_t i = 0; i < n; ++i)
2133 : {
2134 : aCellTypeMap.insert(
2135 : CellTypeMap::value_type(
2136 4781 : GetXMLToken(aCellTypePairs[i]._token), aCellTypePairs[i]._type));
2137 : }
2138 683 : }
2139 :
2140 2049 : ScXMLImport::~ScXMLImport() throw()
2141 : {
2142 : // delete pI18NMap;
2143 683 : delete pDocElemTokenMap;
2144 683 : delete pStylesElemTokenMap;
2145 683 : delete pStylesAttrTokenMap;
2146 683 : delete pStyleElemTokenMap;
2147 683 : delete pBodyElemTokenMap;
2148 683 : delete pContentValidationsElemTokenMap;
2149 683 : delete pContentValidationElemTokenMap;
2150 683 : delete pContentValidationAttrTokenMap;
2151 683 : delete pContentValidationMessageElemTokenMap;
2152 683 : delete pContentValidationHelpMessageAttrTokenMap;
2153 683 : delete pContentValidationErrorMessageAttrTokenMap;
2154 683 : delete pContentValidationErrorMacroAttrTokenMap;
2155 683 : delete pCondFormatsTokenMap;
2156 683 : delete pCondFormatTokenMap;
2157 683 : delete pCondFormatAttrMap;
2158 683 : delete pCondDateAttrMap;
2159 683 : delete pConditionAttrMap;
2160 683 : delete pColorScaleTokenMap;
2161 683 : delete pColorScaleEntryAttrTokenMap;
2162 683 : delete pDataBarTokenMap;
2163 683 : delete pDataBarAttrMap;
2164 683 : delete pFormattingEntryAttrMap;
2165 683 : delete pLabelRangesElemTokenMap;
2166 683 : delete pLabelRangeAttrTokenMap;
2167 683 : delete pTableElemTokenMap;
2168 683 : delete pTableProtectionElemTokenMap;
2169 683 : delete pTableRowsElemTokenMap;
2170 683 : delete pTableColsElemTokenMap;
2171 683 : delete pTableAttrTokenMap;
2172 683 : delete pTableScenarioAttrTokenMap;
2173 683 : delete pTableColAttrTokenMap;
2174 683 : delete pTableRowElemTokenMap;
2175 683 : delete pTableRowAttrTokenMap;
2176 683 : delete pTableRowCellElemTokenMap;
2177 683 : delete pTableRowCellAttrTokenMap;
2178 683 : delete pTableAnnotationAttrTokenMap;
2179 683 : delete pDetectiveElemTokenMap;
2180 683 : delete pDetectiveHighlightedAttrTokenMap;
2181 683 : delete pDetectiveOperationAttrTokenMap;
2182 683 : delete pTableCellRangeSourceAttrTokenMap;
2183 683 : delete pNamedExpressionsElemTokenMap;
2184 683 : delete pNamedRangeAttrTokenMap;
2185 683 : delete pNamedExpressionAttrTokenMap;
2186 683 : delete pDatabaseRangesElemTokenMap;
2187 683 : delete pDatabaseRangeElemTokenMap;
2188 683 : delete pDatabaseRangeAttrTokenMap;
2189 683 : delete pDatabaseRangeSourceSQLAttrTokenMap;
2190 683 : delete pDatabaseRangeSourceTableAttrTokenMap;
2191 683 : delete pDatabaseRangeSourceQueryAttrTokenMap;
2192 683 : delete pFilterElemTokenMap;
2193 683 : delete pFilterAttrTokenMap;
2194 683 : delete pFilterConditionElemTokenMap;
2195 683 : delete pFilterConditionAttrTokenMap;
2196 683 : delete pFilterSetItemAttrTokenMap;
2197 683 : delete pSortElemTokenMap;
2198 683 : delete pSortAttrTokenMap;
2199 683 : delete pSortSortByAttrTokenMap;
2200 683 : delete pDatabaseRangeSubTotalRulesElemTokenMap;
2201 683 : delete pDatabaseRangeSubTotalRulesAttrTokenMap;
2202 683 : delete pSubTotalRulesSortGroupsAttrTokenMap;
2203 683 : delete pSubTotalRulesSubTotalRuleElemTokenMap;
2204 683 : delete pSubTotalRulesSubTotalRuleAttrTokenMap;
2205 683 : delete pSubTotalRuleSubTotalFieldAttrTokenMap;
2206 683 : delete pDataPilotTablesElemTokenMap;
2207 683 : delete pDataPilotTableAttrTokenMap;
2208 683 : delete pDataPilotTableElemTokenMap;
2209 683 : delete pDataPilotTableSourceServiceAttrTokenMap;
2210 683 : delete pDataPilotTableSourceCellRangeAttrTokenMap;
2211 683 : delete pDataPilotTableSourceCellRangeElemTokenMap;
2212 683 : delete pDataPilotFieldAttrTokenMap;
2213 683 : delete pDataPilotFieldElemTokenMap;
2214 683 : delete pDataPilotLevelAttrTokenMap;
2215 683 : delete pDataPilotLevelElemTokenMap;
2216 683 : delete pDataPilotSubTotalsElemTokenMap;
2217 683 : delete pDataPilotSubTotalAttrTokenMap;
2218 683 : delete pDataPilotMembersElemTokenMap;
2219 683 : delete pDataPilotMemberAttrTokenMap;
2220 683 : delete pConsolidationAttrTokenMap;
2221 683 : delete pCellTextParaElemTokenMap;
2222 683 : delete pCellTextSpanElemTokenMap;
2223 683 : delete pCellTextSpanAttrTokenMap;
2224 683 : delete pCellTextURLAttrTokenMap;
2225 683 : delete pCellTextSAttrTokenMap;
2226 683 : delete pDataStreamAttrTokenMap;
2227 :
2228 683 : delete pChangeTrackingImportHelper;
2229 683 : delete pNumberFormatAttributesExportHelper;
2230 683 : delete pStyleNumberFormats;
2231 683 : delete pStylesImportHelper;
2232 :
2233 683 : delete pSolarMutexGuard;
2234 :
2235 683 : delete pMyNamedExpressions;
2236 683 : delete pMyLabelRanges;
2237 683 : delete pValidations;
2238 683 : delete pDetectiveOpArray;
2239 1366 : }
2240 :
2241 654 : void ScXMLImport::initialize( const css::uno::Sequence<css::uno::Any>& aArguments )
2242 : throw (css::uno::Exception, css::uno::RuntimeException, std::exception)
2243 : {
2244 654 : SvXMLImport::initialize(aArguments);
2245 :
2246 654 : uno::Reference<beans::XPropertySet> xInfoSet = getImportInfo();
2247 654 : if (!xInfoSet.is())
2248 6 : return;
2249 :
2250 1296 : uno::Reference<beans::XPropertySetInfo> xInfoSetInfo = xInfoSet->getPropertySetInfo();
2251 648 : if (!xInfoSetInfo.is())
2252 0 : return;
2253 :
2254 648 : if (xInfoSetInfo->hasPropertyByName(SC_UNO_ODS_LOCK_SOLAR_MUTEX))
2255 647 : xInfoSet->getPropertyValue(SC_UNO_ODS_LOCK_SOLAR_MUTEX) >>= mbLockSolarMutex;
2256 :
2257 648 : if (xInfoSetInfo->hasPropertyByName(SC_UNO_ODS_IMPORT_STYLES))
2258 1295 : xInfoSet->getPropertyValue(SC_UNO_ODS_IMPORT_STYLES) >>= mbImportStyles;
2259 : }
2260 :
2261 364 : SvXMLImportContext *ScXMLImport::CreateFontDeclsContext(const sal_uInt16 nPrefix, const OUString& rLocalName,
2262 : const uno::Reference<xml::sax::XAttributeList>& xAttrList)
2263 : {
2264 : XMLFontStylesContext *pFSContext = new XMLFontStylesContext(
2265 364 : *this, nPrefix, rLocalName, xAttrList, osl_getThreadTextEncoding());
2266 364 : SetFontDecls(pFSContext);
2267 364 : SvXMLImportContext* pContext = pFSContext;
2268 364 : return pContext;
2269 : }
2270 :
2271 562 : SvXMLImportContext *ScXMLImport::CreateStylesContext(const OUString& rLocalName,
2272 : const uno::Reference<xml::sax::XAttributeList>& xAttrList, bool bIsAutoStyle )
2273 : {
2274 : SvXMLImportContext* pContext = new XMLTableStylesContext(
2275 562 : *this, XML_NAMESPACE_OFFICE, rLocalName, xAttrList, bIsAutoStyle);
2276 :
2277 562 : if (bIsAutoStyle)
2278 364 : SetAutoStyles(static_cast<SvXMLStylesContext*>(pContext));
2279 : else
2280 198 : SetStyles(static_cast<SvXMLStylesContext*>(pContext));
2281 :
2282 562 : return pContext;
2283 : }
2284 :
2285 197 : SvXMLImportContext *ScXMLImport::CreateBodyContext(const OUString& rLocalName,
2286 : const uno::Reference<xml::sax::XAttributeList>& xAttrList)
2287 : {
2288 197 : return new ScXMLBodyContext(*this, XML_NAMESPACE_OFFICE, rLocalName, xAttrList);
2289 : }
2290 :
2291 146 : SvXMLImportContext *ScXMLImport::CreateMetaContext(
2292 : const OUString& rLocalName )
2293 : {
2294 146 : SvXMLImportContext* pContext = NULL;
2295 :
2296 146 : if (getImportFlags() & SvXMLImportFlags::META)
2297 : {
2298 : uno::Reference<document::XDocumentPropertiesSupplier> xDPS(
2299 146 : GetModel(), uno::UNO_QUERY_THROW);
2300 : uno::Reference<document::XDocumentProperties> const xDocProps(
2301 292 : (IsStylesOnlyMode()) ? 0 : xDPS->getDocumentProperties());
2302 292 : pContext = new SvXMLMetaDocumentContext(*this,
2303 : XML_NAMESPACE_OFFICE, rLocalName,
2304 438 : xDocProps);
2305 : }
2306 :
2307 146 : if( !pContext )
2308 : pContext = new SvXMLImportContext( *this,
2309 0 : XML_NAMESPACE_OFFICE, rLocalName );
2310 :
2311 146 : return pContext;
2312 : }
2313 :
2314 168 : SvXMLImportContext *ScXMLImport::CreateScriptContext(
2315 : const OUString& rLocalName )
2316 : {
2317 168 : SvXMLImportContext* pContext = NULL;
2318 :
2319 168 : if( !(IsStylesOnlyMode()) )
2320 : {
2321 : pContext = new XMLScriptContext( *this,
2322 : XML_NAMESPACE_OFFICE, rLocalName,
2323 168 : GetModel() );
2324 : }
2325 :
2326 168 : if( !pContext )
2327 : pContext = new SvXMLImportContext( *this, XML_NAMESPACE_OFFICE,
2328 0 : rLocalName );
2329 :
2330 168 : return pContext;
2331 : }
2332 :
2333 176 : void ScXMLImport::SetStatistics(
2334 : const uno::Sequence<beans::NamedValue> & i_rStats)
2335 : {
2336 : static const char* s_stats[] =
2337 : { "TableCount", "CellCount", "ObjectCount", 0 };
2338 :
2339 176 : SvXMLImport::SetStatistics(i_rStats);
2340 :
2341 176 : sal_uInt32 nCount(0);
2342 617 : for (sal_Int32 i = 0; i < i_rStats.getLength(); ++i) {
2343 1764 : for (const char** pStat = s_stats; *pStat != 0; ++pStat) {
2344 1323 : if (i_rStats[i].Name.equalsAscii(*pStat)) {
2345 441 : sal_Int32 val = 0;
2346 441 : if (i_rStats[i].Value >>= val) {
2347 441 : nCount += val;
2348 : } else {
2349 : OSL_FAIL("ScXMLImport::SetStatistics: invalid entry");
2350 : }
2351 : }
2352 : }
2353 : }
2354 :
2355 176 : if (nCount)
2356 : {
2357 147 : GetProgressBarHelper()->SetReference(nCount);
2358 147 : GetProgressBarHelper()->SetValue(0);
2359 : }
2360 176 : }
2361 :
2362 9322 : ScDocumentImport& ScXMLImport::GetDoc()
2363 : {
2364 9322 : return *mpDocImport;
2365 : }
2366 :
2367 13469 : sal_Int16 ScXMLImport::GetCellType(const OUString& rStrValue) const
2368 : {
2369 13469 : CellTypeMap::const_iterator itr = aCellTypeMap.find(rStrValue);
2370 13469 : if (itr != aCellTypeMap.end())
2371 13469 : return itr->second;
2372 :
2373 0 : return util::NumberFormat::UNDEFINED;
2374 : }
2375 :
2376 364 : XMLShapeImportHelper* ScXMLImport::CreateShapeImport()
2377 : {
2378 364 : return new XMLTableShapeImportHelper(*this);
2379 : }
2380 :
2381 14 : bool ScXMLImport::GetValidation(const OUString& sName, ScMyImportValidation& aValidation)
2382 : {
2383 14 : if (pValidations)
2384 : {
2385 14 : bool bFound(false);
2386 14 : ScMyImportValidations::iterator aItr(pValidations->begin());
2387 14 : ScMyImportValidations::iterator aEndItr(pValidations->end());
2388 52 : while(aItr != aEndItr && !bFound)
2389 : {
2390 24 : if (aItr->sName == sName)
2391 : {
2392 : // source position must be set as string,
2393 : // so sBaseCellAddress no longer has to be converted here
2394 :
2395 14 : bFound = true;
2396 : }
2397 : else
2398 10 : ++aItr;
2399 : }
2400 14 : if (bFound)
2401 14 : aValidation = *aItr;
2402 14 : return bFound;
2403 : }
2404 0 : return false;
2405 : }
2406 :
2407 16 : void ScXMLImport::AddNamedExpression(SCTAB nTab, ScMyNamedExpression* pNamedExp)
2408 : {
2409 16 : ::std::unique_ptr<ScMyNamedExpression> p(pNamedExp);
2410 16 : SheetNamedExpMap::iterator itr = maSheetNamedExpressions.find(nTab);
2411 16 : if (itr == maSheetNamedExpressions.end())
2412 : {
2413 : // No chain exists for this sheet. Create one.
2414 8 : ::std::unique_ptr<ScMyNamedExpressions> pNew(new ScMyNamedExpressions);
2415 8 : ::std::pair<SheetNamedExpMap::iterator, bool> r = o3tl::ptr_container::insert(maSheetNamedExpressions, nTab, std::move(pNew));
2416 8 : if (!r.second)
2417 : // insertion failed.
2418 16 : return;
2419 :
2420 8 : itr = r.first;
2421 : }
2422 16 : ScMyNamedExpressions& r = *itr->second;
2423 16 : o3tl::ptr_container::push_back(r, std::move(p));
2424 : }
2425 :
2426 1 : ScXMLChangeTrackingImportHelper* ScXMLImport::GetChangeTrackingImportHelper()
2427 : {
2428 1 : if (!pChangeTrackingImportHelper)
2429 1 : pChangeTrackingImportHelper = new ScXMLChangeTrackingImportHelper();
2430 1 : return pChangeTrackingImportHelper;
2431 : }
2432 :
2433 198 : void ScXMLImport::InsertStyles()
2434 : {
2435 198 : GetStyles()->CopyStylesToDoc(true);
2436 :
2437 : // if content is going to be loaded with the same import, set bLatinDefaultStyle flag now
2438 198 : if ( getImportFlags() & SvXMLImportFlags::CONTENT )
2439 30 : ExamineDefaultStyle();
2440 198 : }
2441 :
2442 197 : void ScXMLImport::ExamineDefaultStyle()
2443 : {
2444 197 : if (pDoc)
2445 : {
2446 : // #i62435# after inserting the styles, check if the default style has a latin-script-only
2447 : // number format (then, value cells can be pre-initialized with western script type)
2448 :
2449 197 : const ScPatternAttr* pDefPattern = pDoc->GetDefPattern();
2450 197 : if (pDefPattern && sc::NumFmtUtil::isLatinScript(*pDefPattern, *pDoc))
2451 197 : mpDocImport->setDefaultNumericScript(SvtScriptType::LATIN);
2452 : }
2453 197 : }
2454 :
2455 1 : void ScXMLImport::SetChangeTrackingViewSettings(const com::sun::star::uno::Sequence<com::sun::star::beans::PropertyValue>& rChangeProps)
2456 : {
2457 1 : if (pDoc)
2458 : {
2459 1 : sal_Int32 nCount(rChangeProps.getLength());
2460 1 : if (nCount)
2461 : {
2462 1 : ScXMLImport::MutexGuard aGuard(*this);
2463 1 : sal_Int16 nTemp16(0);
2464 2 : boost::scoped_ptr<ScChangeViewSettings> pViewSettings(new ScChangeViewSettings());
2465 14 : for (sal_Int32 i = 0; i < nCount; ++i)
2466 : {
2467 13 : OUString sName(rChangeProps[i].Name);
2468 13 : if (sName == "ShowChanges")
2469 1 : pViewSettings->SetShowChanges(::cppu::any2bool(rChangeProps[i].Value));
2470 12 : else if (sName == "ShowAcceptedChanges")
2471 1 : pViewSettings->SetShowAccepted(::cppu::any2bool(rChangeProps[i].Value));
2472 11 : else if (sName == "ShowRejectedChanges")
2473 1 : pViewSettings->SetShowRejected(::cppu::any2bool(rChangeProps[i].Value));
2474 10 : else if (sName == "ShowChangesByDatetime")
2475 1 : pViewSettings->SetHasDate(::cppu::any2bool(rChangeProps[i].Value));
2476 9 : else if (sName == "ShowChangesByDatetimeMode")
2477 : {
2478 1 : if (rChangeProps[i].Value >>= nTemp16)
2479 1 : pViewSettings->SetTheDateMode(static_cast<SvxRedlinDateMode>(nTemp16));
2480 : }
2481 8 : else if (sName == "ShowChangesByDatetimeFirstDatetime")
2482 : {
2483 1 : util::DateTime aDateTime;
2484 1 : if (rChangeProps[i].Value >>= aDateTime)
2485 : {
2486 1 : pViewSettings->SetTheFirstDateTime(::DateTime(aDateTime));
2487 : }
2488 : }
2489 7 : else if (sName == "ShowChangesByDatetimeSecondDatetime")
2490 : {
2491 1 : util::DateTime aDateTime;
2492 1 : if (rChangeProps[i].Value >>= aDateTime)
2493 : {
2494 1 : pViewSettings->SetTheLastDateTime(::DateTime(aDateTime));
2495 : }
2496 : }
2497 6 : else if (sName == "ShowChangesByAuthor")
2498 1 : pViewSettings->SetHasAuthor(::cppu::any2bool(rChangeProps[i].Value));
2499 5 : else if (sName == "ShowChangesByAuthorName")
2500 : {
2501 1 : OUString sOUName;
2502 1 : if (rChangeProps[i].Value >>= sOUName)
2503 : {
2504 1 : OUString sAuthorName(sOUName);
2505 1 : pViewSettings->SetTheAuthorToShow(sAuthorName);
2506 1 : }
2507 : }
2508 4 : else if (sName == "ShowChangesByComment")
2509 1 : pViewSettings->SetHasComment(::cppu::any2bool(rChangeProps[i].Value));
2510 3 : else if (sName == "ShowChangesByCommentText")
2511 : {
2512 1 : OUString sOUComment;
2513 1 : if (rChangeProps[i].Value >>= sOUComment)
2514 : {
2515 1 : OUString sComment(sOUComment);
2516 1 : pViewSettings->SetTheComment(sComment);
2517 1 : }
2518 : }
2519 2 : else if (sName == "ShowChangesByRanges")
2520 1 : pViewSettings->SetHasRange(::cppu::any2bool(rChangeProps[i].Value));
2521 1 : else if (sName == "ShowChangesByRangesList")
2522 : {
2523 1 : OUString sRanges;
2524 1 : if ((rChangeProps[i].Value >>= sRanges) && !sRanges.isEmpty())
2525 : {
2526 0 : ScRangeList aRangeList;
2527 : ScRangeStringConverter::GetRangeListFromString(
2528 0 : aRangeList, sRanges, GetDocument(), FormulaGrammar::CONV_OOO);
2529 0 : pViewSettings->SetTheRangeList(aRangeList);
2530 1 : }
2531 : }
2532 13 : }
2533 2 : pDoc->SetChangeViewSettings(*pViewSettings);
2534 : }
2535 : }
2536 1 : }
2537 :
2538 168 : void ScXMLImport::SetViewSettings(const uno::Sequence<beans::PropertyValue>& aViewProps)
2539 : {
2540 168 : sal_Int32 nCount(aViewProps.getLength());
2541 168 : sal_Int32 nHeight(0);
2542 168 : sal_Int32 nLeft(0);
2543 168 : sal_Int32 nTop(0);
2544 168 : sal_Int32 nWidth(0);
2545 1009 : for (sal_Int32 i = 0; i < nCount; ++i)
2546 : {
2547 841 : OUString sName(aViewProps[i].Name);
2548 841 : if (sName == "VisibleAreaHeight")
2549 168 : aViewProps[i].Value >>= nHeight;
2550 673 : else if (sName == "VisibleAreaLeft")
2551 168 : aViewProps[i].Value >>= nLeft;
2552 505 : else if (sName == "VisibleAreaTop")
2553 168 : aViewProps[i].Value >>= nTop;
2554 337 : else if (sName == "VisibleAreaWidth")
2555 168 : aViewProps[i].Value >>= nWidth;
2556 169 : else if (sName == "TrackedChangesViewSettings")
2557 : {
2558 1 : uno::Sequence<beans::PropertyValue> aChangeProps;
2559 1 : if(aViewProps[i].Value >>= aChangeProps)
2560 1 : SetChangeTrackingViewSettings(aChangeProps);
2561 : }
2562 841 : }
2563 168 : if (nHeight && nWidth)
2564 : {
2565 168 : if (GetModel().is())
2566 : {
2567 168 : ScModelObj* pDocObj(ScModelObj::getImplementation( GetModel() ));
2568 168 : if (pDocObj)
2569 : {
2570 168 : SfxObjectShell* pEmbeddedObj = pDocObj->GetEmbeddedObject();
2571 168 : if (pEmbeddedObj)
2572 : {
2573 168 : Rectangle aRect;
2574 168 : aRect.setX( nLeft );
2575 168 : aRect.setY( nTop );
2576 168 : aRect.setWidth( nWidth );
2577 168 : aRect.setHeight( nHeight );
2578 168 : pEmbeddedObj->SetVisArea(aRect);
2579 : }
2580 : }
2581 : }
2582 : }
2583 168 : }
2584 :
2585 168 : void ScXMLImport::SetConfigurationSettings(const uno::Sequence<beans::PropertyValue>& aConfigProps)
2586 : {
2587 168 : if (GetModel().is())
2588 : {
2589 168 : uno::Reference <lang::XMultiServiceFactory> xMultiServiceFactory(GetModel(), uno::UNO_QUERY);
2590 168 : if (xMultiServiceFactory.is())
2591 : {
2592 168 : sal_Int32 nCount(aConfigProps.getLength());
2593 168 : OUString sCTName("TrackedChangesProtectionKey");
2594 336 : OUString sVBName("VBACompatibilityMode");
2595 336 : OUString sSCName("ScriptConfiguration");
2596 4805 : for (sal_Int32 i = nCount - 1; i >= 0; --i)
2597 : {
2598 4637 : if (aConfigProps[i].Name == sCTName)
2599 : {
2600 1 : OUString sKey;
2601 1 : if (aConfigProps[i].Value >>= sKey)
2602 : {
2603 1 : uno::Sequence<sal_Int8> aPass;
2604 1 : ::sax::Converter::decodeBase64(aPass, sKey);
2605 1 : if (aPass.getLength())
2606 : {
2607 1 : if (pDoc->GetChangeTrack())
2608 0 : pDoc->GetChangeTrack()->SetProtection(aPass);
2609 : else
2610 : {
2611 1 : std::set<OUString> aUsers;
2612 1 : ScChangeTrack* pTrack = new ScChangeTrack(pDoc, aUsers);
2613 1 : pTrack->SetProtection(aPass);
2614 1 : pDoc->SetChangeTrack(pTrack);
2615 : }
2616 1 : }
2617 1 : }
2618 : }
2619 : // store the following items for later use (after document is loaded)
2620 4636 : else if ((aConfigProps[i].Name == sVBName) || (aConfigProps[i].Name == sSCName))
2621 : {
2622 0 : uno::Reference< beans::XPropertySet > xImportInfo = getImportInfo();
2623 0 : if (xImportInfo.is())
2624 : {
2625 0 : uno::Reference< beans::XPropertySetInfo > xPropertySetInfo = xImportInfo->getPropertySetInfo();
2626 0 : if (xPropertySetInfo.is() && xPropertySetInfo->hasPropertyByName(aConfigProps[i].Name))
2627 0 : xImportInfo->setPropertyValue( aConfigProps[i].Name, aConfigProps[i].Value );
2628 0 : }
2629 : }
2630 : }
2631 336 : uno::Reference <uno::XInterface> xInterface = xMultiServiceFactory->createInstance("com.sun.star.comp.SpreadsheetSettings");
2632 336 : uno::Reference <beans::XPropertySet> xProperties(xInterface, uno::UNO_QUERY);
2633 168 : if (xProperties.is())
2634 336 : SvXMLUnitConverter::convertPropertySet(xProperties, aConfigProps);
2635 168 : }
2636 : }
2637 168 : }
2638 :
2639 0 : sal_Int32 ScXMLImport::SetCurrencySymbol(const sal_Int32 nKey, const OUString& rCurrency)
2640 : {
2641 0 : uno::Reference <util::XNumberFormatsSupplier> xNumberFormatsSupplier(GetNumberFormatsSupplier());
2642 0 : if (xNumberFormatsSupplier.is())
2643 : {
2644 0 : uno::Reference <util::XNumberFormats> xLocalNumberFormats(xNumberFormatsSupplier->getNumberFormats());
2645 0 : if (xLocalNumberFormats.is())
2646 : {
2647 0 : OUString sFormatString;
2648 : try
2649 : {
2650 0 : uno::Reference <beans::XPropertySet> xProperties(xLocalNumberFormats->getByKey(nKey));
2651 0 : if (xProperties.is())
2652 : {
2653 0 : lang::Locale aLocale;
2654 0 : if (GetDocument() && (xProperties->getPropertyValue(sLocale) >>= aLocale))
2655 : {
2656 : {
2657 0 : ScXMLImport::MutexGuard aGuard(*this);
2658 0 : LocaleDataWrapper aLocaleData( comphelper::getProcessComponentContext(), LanguageTag( aLocale) );
2659 0 : OUStringBuffer aBuffer(15);
2660 0 : aBuffer.appendAscii("#");
2661 0 : aBuffer.append( aLocaleData.getNumThousandSep() );
2662 0 : aBuffer.appendAscii("##0");
2663 0 : aBuffer.append( aLocaleData.getNumDecimalSep() );
2664 0 : aBuffer.appendAscii("00 [$");
2665 0 : aBuffer.append(rCurrency);
2666 0 : aBuffer.appendAscii("]");
2667 0 : sFormatString = aBuffer.makeStringAndClear();
2668 : }
2669 0 : sal_Int32 nNewKey = xLocalNumberFormats->queryKey(sFormatString, aLocale, true);
2670 0 : if (nNewKey == -1)
2671 0 : nNewKey = xLocalNumberFormats->addNew(sFormatString, aLocale);
2672 0 : return nNewKey;
2673 0 : }
2674 0 : }
2675 : }
2676 0 : catch ( const util::MalformedNumberFormatException& rException )
2677 : {
2678 0 : OUString sErrorMessage("Fehler im Formatstring ");
2679 0 : sErrorMessage += sFormatString;
2680 0 : sErrorMessage += " an Position ";
2681 0 : sErrorMessage += OUString::number(rException.CheckPos);
2682 0 : uno::Sequence<OUString> aSeq(1);
2683 0 : aSeq[0] = sErrorMessage;
2684 0 : uno::Reference<xml::sax::XLocator> xLocator;
2685 0 : SetError(XMLERROR_API | XMLERROR_FLAG_ERROR, aSeq, rException.Message, xLocator);
2686 0 : }
2687 0 : }
2688 : }
2689 0 : return nKey;
2690 : }
2691 :
2692 0 : bool ScXMLImport::IsCurrencySymbol(const sal_Int32 nNumberFormat, const OUString& sCurrentCurrency, const OUString& sBankSymbol)
2693 : {
2694 0 : uno::Reference <util::XNumberFormatsSupplier> xNumberFormatsSupplier(GetNumberFormatsSupplier());
2695 0 : if (xNumberFormatsSupplier.is())
2696 : {
2697 0 : uno::Reference <util::XNumberFormats> xLocalNumberFormats(xNumberFormatsSupplier->getNumberFormats());
2698 0 : if (xLocalNumberFormats.is())
2699 : {
2700 : try
2701 : {
2702 0 : uno::Reference <beans::XPropertySet> xNumberPropertySet(xLocalNumberFormats->getByKey(nNumberFormat));
2703 0 : if (xNumberPropertySet.is())
2704 : {
2705 0 : OUString sTemp;
2706 0 : if ( xNumberPropertySet->getPropertyValue(OUString(SC_CURRENCYSYMBOL)) >>= sTemp)
2707 : {
2708 0 : if (sCurrentCurrency.equals(sTemp))
2709 0 : return true;
2710 : // #i61657# This may be a legacy currency symbol that changed in the meantime.
2711 0 : if (SvNumberFormatter::GetLegacyOnlyCurrencyEntry( sCurrentCurrency, sBankSymbol) != NULL)
2712 0 : return true;
2713 : // In the rare case that sCurrentCurrency is not the
2714 : // currency symbol, but a matching ISO code
2715 : // abbreviation instead that was obtained through
2716 : // XMLNumberFormatAttributesExportHelper::GetCellType(),
2717 : // check with the number format's symbol. This happens,
2718 : // for example, in the es_BO locale, where a legacy
2719 : // B$,BOB matched B$->BOP, which leads to
2720 : // sCurrentCurrency being BOP, and the previous call
2721 : // with BOP,BOB didn't find an entry, but B$,BOB will.
2722 0 : return SvNumberFormatter::GetLegacyOnlyCurrencyEntry( sTemp, sBankSymbol) != NULL;
2723 0 : }
2724 0 : }
2725 : }
2726 0 : catch ( uno::Exception& )
2727 : {
2728 : OSL_FAIL("Numberformat not found");
2729 : }
2730 0 : }
2731 : }
2732 0 : return false;
2733 : }
2734 :
2735 1504 : void ScXMLImport::SetType(uno::Reference <beans::XPropertySet>& rProperties,
2736 : sal_Int32& rNumberFormat,
2737 : const sal_Int16 nCellType,
2738 : const OUString& rCurrency)
2739 : {
2740 1504 : if (!mbImportStyles)
2741 1504 : return;
2742 :
2743 1504 : if ((nCellType != util::NumberFormat::TEXT) && (nCellType != util::NumberFormat::UNDEFINED))
2744 : {
2745 622 : if (rNumberFormat == -1)
2746 267 : rProperties->getPropertyValue( sNumberFormat ) >>= rNumberFormat;
2747 : OSL_ENSURE(rNumberFormat != -1, "no NumberFormat");
2748 : bool bIsStandard;
2749 : // sCurrentCurrency may be the ISO code abbreviation if the currency
2750 : // symbol matches such, or if no match found the symbol itself!
2751 622 : OUString sCurrentCurrency;
2752 : sal_Int32 nCurrentCellType(
2753 : GetNumberFormatAttributesExportHelper()->GetCellType(
2754 622 : rNumberFormat, sCurrentCurrency, bIsStandard) & ~util::NumberFormat::DEFINED);
2755 622 : if ((nCellType != nCurrentCellType) && !((nCellType == util::NumberFormat::NUMBER &&
2756 5 : ((nCurrentCellType == util::NumberFormat::SCIENTIFIC) ||
2757 1 : (nCurrentCellType == util::NumberFormat::FRACTION) ||
2758 1 : (nCurrentCellType == util::NumberFormat::LOGICAL) ||
2759 51 : (nCurrentCellType == 0))) || (nCurrentCellType == util::NumberFormat::TEXT)) && !((nCellType == util::NumberFormat::DATETIME) &&
2760 46 : (nCurrentCellType == util::NumberFormat::DATE)))
2761 : {
2762 4 : if (!xNumberFormats.is())
2763 : {
2764 1 : uno::Reference <util::XNumberFormatsSupplier> xNumberFormatsSupplier(GetNumberFormatsSupplier());
2765 1 : if (xNumberFormatsSupplier.is())
2766 1 : xNumberFormats.set(xNumberFormatsSupplier->getNumberFormats());
2767 : }
2768 4 : if (xNumberFormats.is())
2769 : {
2770 : try
2771 : {
2772 4 : uno::Reference < beans::XPropertySet> xNumberFormatProperties(xNumberFormats->getByKey(rNumberFormat));
2773 4 : if (xNumberFormatProperties.is())
2774 : {
2775 4 : if (nCellType != util::NumberFormat::CURRENCY)
2776 : {
2777 3 : lang::Locale aLocale;
2778 3 : if ( xNumberFormatProperties->getPropertyValue(sLocale) >>= aLocale )
2779 : {
2780 3 : if (!xNumberFormatTypes.is())
2781 1 : xNumberFormatTypes.set(uno::Reference <util::XNumberFormatTypes>(xNumberFormats, uno::UNO_QUERY));
2782 3 : rProperties->setPropertyValue( sNumberFormat, uno::makeAny(xNumberFormatTypes->getStandardFormat(nCellType, aLocale)) );
2783 3 : }
2784 : }
2785 1 : else if (!rCurrency.isEmpty() && !sCurrentCurrency.isEmpty())
2786 : {
2787 0 : if (!sCurrentCurrency.equals(rCurrency))
2788 0 : if (!IsCurrencySymbol(rNumberFormat, sCurrentCurrency, rCurrency))
2789 0 : rProperties->setPropertyValue( sNumberFormat, uno::makeAny(SetCurrencySymbol(rNumberFormat, rCurrency)));
2790 : }
2791 4 : }
2792 : }
2793 0 : catch ( uno::Exception& )
2794 : {
2795 : OSL_FAIL("Numberformat not found");
2796 : }
2797 4 : }
2798 : }
2799 : else
2800 : {
2801 651 : if ((nCellType == util::NumberFormat::CURRENCY) && !rCurrency.isEmpty() && !sCurrentCurrency.isEmpty() &&
2802 627 : !sCurrentCurrency.equals(rCurrency) && !IsCurrencySymbol(rNumberFormat, sCurrentCurrency, rCurrency))
2803 0 : rProperties->setPropertyValue( sNumberFormat, uno::makeAny(SetCurrencySymbol(rNumberFormat, rCurrency)));
2804 622 : }
2805 : }
2806 : }
2807 :
2808 4097 : void ScXMLImport::AddStyleRange(const table::CellRangeAddress& rCellRange)
2809 : {
2810 4097 : if (!mbImportStyles)
2811 4097 : return;
2812 :
2813 4097 : if (!xSheetCellRanges.is() && GetModel().is())
2814 : {
2815 197 : uno::Reference <lang::XMultiServiceFactory> xMultiServiceFactory(GetModel(), uno::UNO_QUERY);
2816 197 : if (xMultiServiceFactory.is())
2817 197 : xSheetCellRanges.set(uno::Reference <sheet::XSheetCellRangeContainer>(xMultiServiceFactory->createInstance("com.sun.star.sheet.SheetCellRanges"), uno::UNO_QUERY));
2818 197 : OSL_ENSURE(xSheetCellRanges.is(), "didn't get SheetCellRanges");
2819 :
2820 : }
2821 4097 : xSheetCellRanges->addRangeAddress(rCellRange, false);
2822 : }
2823 :
2824 1510 : void ScXMLImport::SetStyleToRanges()
2825 : {
2826 1510 : if (!mbImportStyles)
2827 1510 : return;
2828 :
2829 1510 : if (!sPrevStyleName.isEmpty())
2830 : {
2831 1504 : uno::Reference <beans::XPropertySet> xProperties (xSheetCellRanges, uno::UNO_QUERY);
2832 1504 : if (xProperties.is())
2833 : {
2834 1504 : XMLTableStylesContext *pStyles(static_cast<XMLTableStylesContext *>(GetAutoStyles()));
2835 1504 : XMLTableStyleContext* pStyle = NULL;
2836 1504 : if ( pStyles )
2837 : pStyle = const_cast<XMLTableStyleContext*>(static_cast<const XMLTableStyleContext *>(pStyles->FindStyleChildContext(
2838 1504 : XML_STYLE_FAMILY_TABLE_CELL, sPrevStyleName, true)));
2839 1504 : if (pStyle)
2840 : {
2841 1087 : pStyle->FillPropertySet(xProperties);
2842 : // here needs to be the cond format import method
2843 1087 : sal_Int32 nNumberFormat(pStyle->GetNumberFormat());
2844 1087 : SetType(xProperties, nNumberFormat, nPrevCellType, sPrevCurrency);
2845 :
2846 : // store first cell of first range for each style, once per sheet
2847 1087 : uno::Sequence<table::CellRangeAddress> aAddresses(xSheetCellRanges->getRangeAddresses());
2848 1087 : pStyle->ApplyCondFormat(aAddresses);
2849 1087 : if ( aAddresses.getLength() > 0 )
2850 : {
2851 1087 : const table::CellRangeAddress& rRange = aAddresses[0];
2852 1087 : if ( rRange.Sheet != pStyle->GetLastSheet() )
2853 : {
2854 1001 : ScSheetSaveData* pSheetData = ScModelObj::getImplementation(GetModel())->GetSheetSaveData();
2855 : pSheetData->AddCellStyle( sPrevStyleName,
2856 1001 : ScAddress( (SCCOL)rRange.StartColumn, (SCROW)rRange.StartRow, (SCTAB)rRange.Sheet ) );
2857 1001 : pStyle->SetLastSheet(rRange.Sheet);
2858 : }
2859 1087 : }
2860 : }
2861 : else
2862 : {
2863 417 : xProperties->setPropertyValue(sCellStyle, uno::makeAny(GetStyleDisplayName( XML_STYLE_FAMILY_TABLE_CELL, sPrevStyleName )));
2864 417 : sal_Int32 nNumberFormat(GetStyleNumberFormats()->GetStyleNumberFormat(sPrevStyleName));
2865 417 : bool bInsert(nNumberFormat == -1);
2866 417 : SetType(xProperties, nNumberFormat, nPrevCellType, sPrevCurrency);
2867 417 : if (bInsert)
2868 279 : GetStyleNumberFormats()->AddStyleNumberFormat(sPrevStyleName, nNumberFormat);
2869 : }
2870 1504 : }
2871 : }
2872 1510 : if (GetModel().is())
2873 : {
2874 1510 : uno::Reference <lang::XMultiServiceFactory> xMultiServiceFactory(GetModel(), uno::UNO_QUERY);
2875 1510 : if (xMultiServiceFactory.is())
2876 : xSheetCellRanges.set(uno::Reference <sheet::XSheetCellRangeContainer>(
2877 1510 : xMultiServiceFactory->createInstance(
2878 1510 : OUString("com.sun.star.sheet.SheetCellRanges")),
2879 1510 : uno::UNO_QUERY));
2880 : }
2881 : OSL_ENSURE(xSheetCellRanges.is(), "didn't get SheetCellRanges");
2882 : }
2883 :
2884 4097 : void ScXMLImport::SetStyleToRange(const ScRange& rRange, const OUString* pStyleName,
2885 : const sal_Int16 nCellType, const OUString* pCurrency)
2886 : {
2887 4097 : if (!mbImportStyles)
2888 4097 : return;
2889 :
2890 4097 : if (sPrevStyleName.isEmpty())
2891 : {
2892 331 : nPrevCellType = nCellType;
2893 331 : if (pStyleName)
2894 331 : sPrevStyleName = *pStyleName;
2895 331 : if (pCurrency)
2896 0 : sPrevCurrency = *pCurrency;
2897 331 : else if (!sPrevCurrency.isEmpty())
2898 1 : sPrevCurrency = sEmpty;
2899 : }
2900 10714 : else if ((nCellType != nPrevCellType) ||
2901 3182 : ((pStyleName && !pStyleName->equals(sPrevStyleName)) ||
2902 4939 : (!pStyleName && !sPrevStyleName.isEmpty())) ||
2903 0 : ((pCurrency && !pCurrency->equals(sPrevCurrency)) ||
2904 2593 : (!pCurrency && !sPrevCurrency.isEmpty())))
2905 : {
2906 1173 : SetStyleToRanges();
2907 1173 : nPrevCellType = nCellType;
2908 1173 : if (pStyleName)
2909 1173 : sPrevStyleName = *pStyleName;
2910 0 : else if(!sPrevStyleName.isEmpty())
2911 0 : sPrevStyleName = sEmpty;
2912 1173 : if (pCurrency)
2913 25 : sPrevCurrency = *pCurrency;
2914 1148 : else if(!sPrevCurrency.isEmpty())
2915 6 : sPrevCurrency = sEmpty;
2916 : }
2917 4097 : table::CellRangeAddress aCellRange;
2918 4097 : aCellRange.StartColumn = rRange.aStart.Col();
2919 4097 : aCellRange.StartRow = rRange.aStart.Row();
2920 4097 : aCellRange.Sheet = rRange.aStart.Tab();
2921 4097 : aCellRange.EndColumn = rRange.aEnd.Col();
2922 4097 : aCellRange.EndRow = rRange.aEnd.Row();
2923 4097 : AddStyleRange(aCellRange);
2924 : }
2925 :
2926 236 : bool ScXMLImport::SetNullDateOnUnitConverter()
2927 : {
2928 236 : if (!bNullDateSetted)
2929 30 : bNullDateSetted = GetMM100UnitConverter().setNullDate(GetModel());
2930 : OSL_ENSURE(bNullDateSetted, "could not set the null date");
2931 236 : return bNullDateSetted;
2932 : }
2933 :
2934 622 : XMLNumberFormatAttributesExportHelper* ScXMLImport::GetNumberFormatAttributesExportHelper()
2935 : {
2936 622 : if (!pNumberFormatAttributesExportHelper)
2937 112 : pNumberFormatAttributesExportHelper = new XMLNumberFormatAttributesExportHelper(GetNumberFormatsSupplier());
2938 622 : return pNumberFormatAttributesExportHelper;
2939 : }
2940 :
2941 696 : ScMyStyleNumberFormats* ScXMLImport::GetStyleNumberFormats()
2942 : {
2943 696 : if (!pStyleNumberFormats)
2944 176 : pStyleNumberFormats = new ScMyStyleNumberFormats();
2945 696 : return pStyleNumberFormats;
2946 : }
2947 :
2948 337 : void ScXMLImport::SetStylesToRangesFinished()
2949 : {
2950 337 : SetStyleToRanges();
2951 337 : sPrevStyleName = sEmpty;
2952 337 : }
2953 :
2954 : // XImporter
2955 683 : void SAL_CALL ScXMLImport::setTargetDocument( const ::com::sun::star::uno::Reference< ::com::sun::star::lang::XComponent >& xDoc )
2956 : throw(::com::sun::star::lang::IllegalArgumentException, ::com::sun::star::uno::RuntimeException, std::exception)
2957 : {
2958 683 : ScXMLImport::MutexGuard aGuard(*this);
2959 683 : SvXMLImport::setTargetDocument( xDoc );
2960 :
2961 1366 : uno::Reference<frame::XModel> xModel(xDoc, uno::UNO_QUERY);
2962 683 : pDoc = ScXMLConverter::GetScDocument( xModel );
2963 : OSL_ENSURE( pDoc, "ScXMLImport::setTargetDocument - no ScDocument!" );
2964 683 : if (!pDoc)
2965 0 : throw lang::IllegalArgumentException();
2966 :
2967 683 : mpDocImport.reset(new ScDocumentImport(*pDoc));
2968 683 : mpComp.reset(new ScCompiler(pDoc, ScAddress()));
2969 683 : mpComp->SetGrammar(formula::FormulaGrammar::GRAM_ODFF);
2970 :
2971 1366 : uno::Reference<document::XActionLockable> xActionLockable(xDoc, uno::UNO_QUERY);
2972 683 : if (xActionLockable.is())
2973 1366 : xActionLockable->addActionLock();
2974 683 : }
2975 :
2976 : // ::com::sun::star::xml::sax::XDocumentHandler
2977 678 : void SAL_CALL ScXMLImport::startDocument()
2978 : throw( ::com::sun::star::xml::sax::SAXException, ::com::sun::star::uno::RuntimeException, std::exception )
2979 : {
2980 678 : ScXMLImport::MutexGuard aGuard(*this);
2981 678 : SvXMLImport::startDocument();
2982 678 : if (pDoc && !pDoc->IsImportingXML())
2983 : {
2984 31 : ScModelObj::getImplementation(GetModel())->BeforeXMLLoading();
2985 31 : bSelfImportingXMLSet = true;
2986 : }
2987 :
2988 : // if content and styles are loaded with separate imports,
2989 : // set bLatinDefaultStyle flag at the start of the content import
2990 678 : SvXMLImportFlags nFlags = getImportFlags();
2991 678 : if ( ( nFlags & SvXMLImportFlags::CONTENT ) && !( nFlags & SvXMLImportFlags::STYLES ) )
2992 167 : ExamineDefaultStyle();
2993 :
2994 678 : if (getImportFlags() & SvXMLImportFlags::CONTENT)
2995 : {
2996 197 : if (GetModel().is())
2997 : {
2998 : // store initial namespaces, to find the ones that were added from the file later
2999 197 : ScSheetSaveData* pSheetData = ScModelObj::getImplementation(GetModel())->GetSheetSaveData();
3000 197 : const SvXMLNamespaceMap& rNamespaces = GetNamespaceMap();
3001 197 : pSheetData->StoreInitialNamespaces(rNamespaces);
3002 : }
3003 : }
3004 :
3005 1356 : uno::Reference< beans::XPropertySet > const xImportInfo( getImportInfo() );
3006 : uno::Reference< beans::XPropertySetInfo > const xPropertySetInfo(
3007 1356 : xImportInfo.is() ? xImportInfo->getPropertySetInfo() : 0);
3008 678 : if (xPropertySetInfo.is())
3009 : {
3010 : OUString const sOrganizerMode(
3011 648 : "OrganizerMode");
3012 648 : if (xPropertySetInfo->hasPropertyByName(sOrganizerMode))
3013 : {
3014 647 : bool bStyleOnly(false);
3015 647 : if (xImportInfo->getPropertyValue(sOrganizerMode) >>= bStyleOnly)
3016 : {
3017 0 : bLoadDoc = !bStyleOnly;
3018 : }
3019 648 : }
3020 : }
3021 :
3022 1356 : UnlockSolarMutex();
3023 678 : }
3024 :
3025 76 : sal_Int32 ScXMLImport::GetRangeType(const OUString& sRangeType)
3026 : {
3027 76 : sal_Int32 nRangeType(0);
3028 76 : OUStringBuffer sBuffer;
3029 76 : sal_Int16 i = 0;
3030 228 : while (i <= sRangeType.getLength())
3031 : {
3032 76 : if ((i == sRangeType.getLength()) || (sRangeType[i] == ' '))
3033 : {
3034 76 : OUString sTemp = sBuffer.makeStringAndClear();
3035 76 : if (sTemp == "repeat-column")
3036 0 : nRangeType |= sheet::NamedRangeFlag::COLUMN_HEADER;
3037 76 : else if (sTemp == SC_REPEAT_ROW)
3038 0 : nRangeType |= sheet::NamedRangeFlag::ROW_HEADER;
3039 76 : else if (sTemp == SC_FILTER)
3040 0 : nRangeType |= sheet::NamedRangeFlag::FILTER_CRITERIA;
3041 76 : else if (sTemp == SC_PRINT_RANGE)
3042 0 : nRangeType |= sheet::NamedRangeFlag::PRINT_AREA;
3043 : }
3044 0 : else if (i < sRangeType.getLength())
3045 0 : sBuffer.append(sRangeType[i]);
3046 76 : ++i;
3047 : }
3048 76 : return nRangeType;
3049 : }
3050 :
3051 197 : void ScXMLImport::SetLabelRanges()
3052 : {
3053 197 : ScMyLabelRanges* pLabelRanges = GetLabelRanges();
3054 197 : if (pLabelRanges)
3055 : {
3056 0 : uno::Reference <beans::XPropertySet> xPropertySet (GetModel(), uno::UNO_QUERY);
3057 0 : if (xPropertySet.is())
3058 : {
3059 0 : uno::Any aColAny = xPropertySet->getPropertyValue(OUString(SC_UNO_COLLABELRNG));
3060 0 : uno::Any aRowAny = xPropertySet->getPropertyValue(OUString(SC_UNO_ROWLABELRNG));
3061 :
3062 0 : uno::Reference< sheet::XLabelRanges > xColRanges;
3063 0 : uno::Reference< sheet::XLabelRanges > xRowRanges;
3064 :
3065 0 : if ( ( aColAny >>= xColRanges ) && ( aRowAny >>= xRowRanges ) )
3066 : {
3067 0 : table::CellRangeAddress aLabelRange;
3068 0 : table::CellRangeAddress aDataRange;
3069 :
3070 0 : ScMyLabelRanges::iterator aItr = pLabelRanges->begin();
3071 0 : while (aItr != pLabelRanges->end())
3072 : {
3073 0 : sal_Int32 nOffset1(0);
3074 0 : sal_Int32 nOffset2(0);
3075 0 : FormulaGrammar::AddressConvention eConv = FormulaGrammar::CONV_OOO;
3076 :
3077 0 : if (ScRangeStringConverter::GetRangeFromString( aLabelRange, (*aItr)->sLabelRangeStr, GetDocument(), eConv, nOffset1 ) &&
3078 0 : ScRangeStringConverter::GetRangeFromString( aDataRange, (*aItr)->sDataRangeStr, GetDocument(), eConv, nOffset2 ))
3079 : {
3080 0 : if ( (*aItr)->bColumnOrientation )
3081 0 : xColRanges->addNew( aLabelRange, aDataRange );
3082 : else
3083 0 : xRowRanges->addNew( aLabelRange, aDataRange );
3084 : }
3085 :
3086 0 : delete *aItr;
3087 0 : aItr = pLabelRanges->erase(aItr);
3088 : }
3089 0 : }
3090 0 : }
3091 : }
3092 197 : }
3093 :
3094 : namespace {
3095 :
3096 : class RangeNameInserter : public ::std::unary_function<ScMyNamedExpression, void>
3097 : {
3098 : ScDocument* mpDoc;
3099 : ScRangeName& mrRangeName;
3100 : ScXMLImport& mrXmlImport;
3101 :
3102 : public:
3103 19 : RangeNameInserter(ScDocument* pDoc, ScRangeName& rRangeName, ScXMLImport& rXmlImport) :
3104 19 : mpDoc(pDoc), mrRangeName(rRangeName), mrXmlImport(rXmlImport) {}
3105 :
3106 76 : void operator() (const ScMyNamedExpression& r) const
3107 : {
3108 : using namespace formula;
3109 :
3110 76 : const OUString& aType = r.sRangeType;
3111 76 : sal_uInt32 nUnoType = ScXMLImport::GetRangeType(aType);
3112 :
3113 76 : sal_uInt16 nNewType = RT_NAME;
3114 76 : if ( nUnoType & sheet::NamedRangeFlag::FILTER_CRITERIA ) nNewType |= RT_CRITERIA;
3115 76 : if ( nUnoType & sheet::NamedRangeFlag::PRINT_AREA ) nNewType |= RT_PRINTAREA;
3116 76 : if ( nUnoType & sheet::NamedRangeFlag::COLUMN_HEADER ) nNewType |= RT_COLHEADER;
3117 76 : if ( nUnoType & sheet::NamedRangeFlag::ROW_HEADER ) nNewType |= RT_ROWHEADER;
3118 :
3119 76 : if (mpDoc)
3120 : {
3121 : // Insert a new name.
3122 76 : ScAddress aPos;
3123 76 : sal_Int32 nOffset = 0;
3124 : bool bSuccess = ScRangeStringConverter::GetAddressFromString(
3125 76 : aPos, r.sBaseCellAddress, mpDoc, FormulaGrammar::CONV_OOO, nOffset);
3126 :
3127 76 : if (bSuccess)
3128 : {
3129 76 : OUString aContent = r.sContent;
3130 76 : if (!r.bIsExpression)
3131 51 : ScXMLConverter::ParseFormula(aContent, false);
3132 :
3133 : ScRangeData* pData = new ScRangeData(
3134 76 : mpDoc, r.sName, aContent, aPos, nNewType, r.eGrammar);
3135 76 : mrRangeName.insert(pData);
3136 : }
3137 : }
3138 76 : }
3139 : };
3140 :
3141 : }
3142 :
3143 197 : void ScXMLImport::SetNamedRanges()
3144 : {
3145 197 : ScMyNamedExpressions* pNamedExpressions = GetNamedExpressions();
3146 197 : if (!pNamedExpressions)
3147 186 : return;
3148 :
3149 11 : if (!pDoc)
3150 0 : return;
3151 :
3152 : // Insert the namedRanges
3153 11 : ScRangeName* pRangeNames = pDoc->GetRangeName();
3154 11 : ::std::for_each(pNamedExpressions->begin(), pNamedExpressions->end(), RangeNameInserter(pDoc, *pRangeNames, *this));
3155 : }
3156 :
3157 197 : void ScXMLImport::SetSheetNamedRanges()
3158 : {
3159 197 : if (!pDoc)
3160 197 : return;
3161 :
3162 197 : SheetNamedExpMap::const_iterator itr = maSheetNamedExpressions.begin(), itrEnd = maSheetNamedExpressions.end();
3163 205 : for (; itr != itrEnd; ++itr)
3164 : {
3165 8 : SCTAB nTab = itr->first;
3166 8 : ScRangeName* pRangeNames = pDoc->GetRangeName(nTab);
3167 8 : if (!pRangeNames)
3168 0 : continue;
3169 :
3170 8 : const ScMyNamedExpressions& rNames = *itr->second;
3171 8 : ::std::for_each(rNames.begin(), rNames.end(), RangeNameInserter(pDoc, *pRangeNames, *this));
3172 : }
3173 : }
3174 :
3175 678 : void SAL_CALL ScXMLImport::endDocument()
3176 : throw(::com::sun::star::xml::sax::SAXException,
3177 : ::com::sun::star::uno::RuntimeException,
3178 : std::exception)
3179 : {
3180 678 : ScXMLImport::MutexGuard aGuard(*this);
3181 678 : if (getImportFlags() & SvXMLImportFlags::CONTENT)
3182 : {
3183 197 : if (GetModel().is())
3184 : {
3185 197 : mpDocImport->finalize();
3186 :
3187 197 : uno::Reference<document::XViewDataSupplier> xViewDataSupplier(GetModel(), uno::UNO_QUERY);
3188 197 : if (xViewDataSupplier.is())
3189 : {
3190 197 : uno::Reference<container::XIndexAccess> xIndexAccess(xViewDataSupplier->getViewData());
3191 197 : if (xIndexAccess.is() && xIndexAccess->getCount() > 0)
3192 : {
3193 197 : uno::Sequence< beans::PropertyValue > aSeq;
3194 197 : if (xIndexAccess->getByIndex(0) >>= aSeq)
3195 : {
3196 197 : sal_Int32 nCount (aSeq.getLength());
3197 1271 : for (sal_Int32 i = 0; i < nCount; ++i)
3198 : {
3199 1074 : OUString sName(aSeq[i].Name);
3200 1074 : if (sName == SC_ACTIVETABLE)
3201 : {
3202 197 : OUString sValue;
3203 197 : if(aSeq[i].Value >>= sValue)
3204 : {
3205 197 : OUString sTabName(sValue);
3206 197 : SCTAB nTab(0);
3207 197 : if (pDoc->GetTable(sTabName, nTab))
3208 : {
3209 171 : pDoc->SetVisibleTab(nTab);
3210 171 : i = nCount;
3211 197 : }
3212 197 : }
3213 : }
3214 1074 : }
3215 197 : }
3216 197 : }
3217 : }
3218 197 : SetLabelRanges();
3219 197 : SetNamedRanges();
3220 197 : SetSheetNamedRanges();
3221 197 : if (mpPivotSources)
3222 : // Process pivot table sources after the named ranges have been set.
3223 7 : mpPivotSources->process();
3224 : }
3225 197 : GetProgressBarHelper()->End(); // make room for subsequent SfxProgressBars
3226 197 : if (pDoc)
3227 : {
3228 197 : pDoc->CompileXML();
3229 :
3230 : // After CompileXML, links must be completely changed to the new URLs.
3231 : // Otherwise, hasExternalFile for API wouldn't work (#i116940#),
3232 : // and typing a new formula would create a second link with the same "real" file name.
3233 197 : if (pDoc->HasExternalRefManager())
3234 58 : pDoc->GetExternalRefManager()->updateAbsAfterLoad();
3235 : }
3236 :
3237 : // If the stream contains cells outside of the current limits, the styles can't be re-created,
3238 : // so stream copying is disabled then.
3239 197 : if (pDoc && GetModel().is() && !pDoc->HasRangeOverflow())
3240 : {
3241 : // set "valid stream" flags after loading (before UpdateRowHeights, so changed formula results
3242 : // in UpdateRowHeights can already clear the flags again)
3243 197 : ScSheetSaveData* pSheetData = ScModelObj::getImplementation(GetModel())->GetSheetSaveData();
3244 :
3245 197 : SCTAB nTabCount = pDoc->GetTableCount();
3246 528 : for (SCTAB nTab=0; nTab<nTabCount; ++nTab)
3247 : {
3248 331 : pDoc->SetDrawPageSize(nTab);
3249 331 : if (!pSheetData->IsSheetBlocked( nTab ))
3250 258 : pDoc->SetStreamValid( nTab, true );
3251 : }
3252 : }
3253 197 : aTables.FixupOLEs();
3254 : }
3255 678 : if (GetModel().is())
3256 : {
3257 678 : uno::Reference<document::XActionLockable> xActionLockable(GetModel(), uno::UNO_QUERY);
3258 678 : if (xActionLockable.is())
3259 678 : xActionLockable->removeActionLock();
3260 : }
3261 678 : SvXMLImport::endDocument();
3262 :
3263 678 : if(pDoc && bSelfImportingXMLSet)
3264 31 : ScModelObj::getImplementation(GetModel())->AfterXMLLoading(true);
3265 678 : }
3266 :
3267 : // XEventListener
3268 2 : void ScXMLImport::DisposingModel()
3269 : {
3270 2 : SvXMLImport::DisposingModel();
3271 2 : pDoc = NULL;
3272 2 : }
3273 :
3274 12544 : ScXMLImport::MutexGuard::MutexGuard(ScXMLImport& rImport) :
3275 12544 : mrImport(rImport)
3276 : {
3277 12544 : mrImport.LockSolarMutex();
3278 12544 : }
3279 :
3280 12544 : ScXMLImport::MutexGuard::~MutexGuard()
3281 : {
3282 12544 : mrImport.UnlockSolarMutex();
3283 12544 : }
3284 :
3285 12880 : void ScXMLImport::LockSolarMutex()
3286 : {
3287 : // #i62677# When called from DocShell/Wrapper, the SolarMutex is already locked,
3288 : // so there's no need to allocate (and later delete) the SolarMutexGuard.
3289 12880 : if (!mbLockSolarMutex)
3290 : {
3291 : DBG_TESTSOLARMUTEX();
3292 25382 : return;
3293 : }
3294 :
3295 378 : if (nSolarMutexLocked == 0)
3296 : {
3297 : OSL_ENSURE(!pSolarMutexGuard, "Solar Mutex is locked");
3298 346 : pSolarMutexGuard = new SolarMutexGuard();
3299 : }
3300 378 : ++nSolarMutexLocked;
3301 : }
3302 :
3303 13558 : void ScXMLImport::UnlockSolarMutex()
3304 : {
3305 13558 : if (nSolarMutexLocked > 0)
3306 : {
3307 378 : nSolarMutexLocked--;
3308 378 : if (nSolarMutexLocked == 0)
3309 : {
3310 : OSL_ENSURE(pSolarMutexGuard, "Solar Mutex is always unlocked");
3311 346 : delete pSolarMutexGuard;
3312 346 : pSolarMutexGuard = NULL;
3313 : }
3314 : }
3315 13558 : }
3316 :
3317 624 : sal_Int32 ScXMLImport::GetByteOffset()
3318 : {
3319 624 : sal_Int32 nOffset = -1;
3320 624 : uno::Reference<xml::sax::XLocator> xLocator = GetLocator();
3321 1248 : uno::Reference<io::XSeekable> xSeek( xLocator, uno::UNO_QUERY ); //! should use different interface
3322 624 : if ( xSeek.is() )
3323 580 : nOffset = (sal_Int32)xSeek->getPosition();
3324 1248 : return nOffset;
3325 : }
3326 :
3327 0 : void ScXMLImport::SetRangeOverflowType(sal_uInt32 nType)
3328 : {
3329 : // #i31130# Overflow is stored in the document, because the ScXMLImport object
3330 : // isn't available in ScXMLImportWrapper::ImportFromComponent when using the
3331 : // OOo->Oasis transformation.
3332 :
3333 0 : if ( pDoc )
3334 0 : pDoc->SetRangeOverflowType( nType );
3335 0 : }
3336 :
3337 9677 : void ScXMLImport::ProgressBarIncrement(bool bEditCell, sal_Int32 nInc)
3338 : {
3339 9677 : nProgressCount += nInc;
3340 9677 : if (bEditCell || nProgressCount > 100)
3341 : {
3342 61 : GetProgressBarHelper()->Increment(nProgressCount);
3343 61 : nProgressCount = 0;
3344 : }
3345 9677 : }
3346 :
3347 1651 : void ScXMLImport::ExtractFormulaNamespaceGrammar(
3348 : OUString& rFormula, OUString& rFormulaNmsp, FormulaGrammar::Grammar& reGrammar,
3349 : const OUString& rAttrValue, bool bRestrictToExternalNmsp ) const
3350 : {
3351 : // parse the attribute value, extract namespace ID, literal namespace, and formula string
3352 1651 : rFormulaNmsp.clear();
3353 1651 : sal_uInt16 nNsId = GetNamespaceMap()._GetKeyByAttrName( rAttrValue, 0, &rFormula, &rFormulaNmsp, false );
3354 :
3355 : // check if we have an ODF formula namespace
3356 1651 : if( !bRestrictToExternalNmsp ) switch( nNsId )
3357 : {
3358 : case XML_NAMESPACE_OOOC:
3359 0 : rFormulaNmsp.clear(); // remove namespace string for built-in grammar
3360 0 : reGrammar = FormulaGrammar::GRAM_PODF;
3361 0 : return;
3362 : case XML_NAMESPACE_OF:
3363 1552 : rFormulaNmsp.clear(); // remove namespace string for built-in grammar
3364 1552 : reGrammar = FormulaGrammar::GRAM_ODFF;
3365 1552 : return;
3366 : }
3367 :
3368 : /* Find default grammar for formulas without namespace. There may be
3369 : documents in the wild that stored no namespace in ODF 1.0/1.1. Use
3370 : GRAM_PODF then (old style ODF 1.0/1.1 formulas). The default for ODF
3371 : 1.2 and later without namespace is GRAM_ODFF (OpenFormula). */
3372 : FormulaGrammar::Grammar eDefaultGrammar =
3373 99 : (GetDocument()->GetStorageGrammar() == FormulaGrammar::GRAM_PODF) ?
3374 99 : FormulaGrammar::GRAM_PODF : FormulaGrammar::GRAM_ODFF;
3375 :
3376 : /* Check if we have no namespace at all. The value XML_NAMESPACE_NONE
3377 : indicates that there is no colon. If the first character of the
3378 : attribute value is the equality sign, the value XML_NAMESPACE_UNKNOWN
3379 : indicates that there is a colon somewhere in the formula string. */
3380 99 : if( (nNsId == XML_NAMESPACE_NONE) || ((nNsId == XML_NAMESPACE_UNKNOWN) && (rAttrValue.toChar() == '=')) )
3381 : {
3382 87 : rFormula = rAttrValue; // return entire string as formula
3383 87 : reGrammar = eDefaultGrammar;
3384 87 : return;
3385 : }
3386 :
3387 : /* Check if a namespace URL could be resolved from the attribute value.
3388 : Use that namespace only, if the Calc document knows an associated
3389 : external formula parser. This prevents that the range operator in
3390 : conjunction with defined names is confused as namespaces prefix, e.g.
3391 : in the expression 'table:A1' where 'table' is a named reference. */
3392 12 : if( ((nNsId & XML_NAMESPACE_UNKNOWN_FLAG) != 0) && !rFormulaNmsp.isEmpty() &&
3393 0 : GetDocument()->GetFormulaParserPool().hasFormulaParser( rFormulaNmsp ) )
3394 : {
3395 0 : reGrammar = FormulaGrammar::GRAM_EXTERNAL;
3396 0 : return;
3397 : }
3398 :
3399 : /* All attempts failed (e.g. no namespace and no leading equality sign, or
3400 : an invalid namespace prefix), continue with the entire attribute value. */
3401 12 : rFormula = rAttrValue;
3402 12 : rFormulaNmsp.clear(); // remove any namespace string
3403 12 : reGrammar = eDefaultGrammar;
3404 : }
3405 :
3406 14 : bool ScXMLImport::IsFormulaErrorConstant( const OUString& rStr ) const
3407 : {
3408 14 : if (!mpComp)
3409 0 : return false;
3410 :
3411 14 : return mpComp->GetErrorConstant(rStr) > 0;
3412 : }
3413 :
3414 14558 : ScEditEngineDefaulter* ScXMLImport::GetEditEngine()
3415 : {
3416 14558 : if (!mpEditEngine)
3417 : {
3418 197 : mpEditEngine.reset(new ScEditEngineDefaulter(pDoc->GetEnginePool()));
3419 197 : mpEditEngine->SetRefMapMode(MAP_100TH_MM);
3420 197 : mpEditEngine->SetEditTextObjectPool(pDoc->GetEditPool());
3421 197 : mpEditEngine->SetUpdateMode(false);
3422 197 : mpEditEngine->EnableUndo(false);
3423 197 : mpEditEngine->SetControlWord(mpEditEngine->GetControlWord() & ~EEControlBits::ALLOWBIGOBJS);
3424 : }
3425 14558 : return mpEditEngine.get();
3426 : }
3427 :
3428 392 : const ScXMLEditAttributeMap& ScXMLImport::GetEditAttributeMap() const
3429 : {
3430 392 : if (!mpEditAttrMap)
3431 38 : mpEditAttrMap.reset(new ScXMLEditAttributeMap);
3432 392 : return *mpEditAttrMap;
3433 : }
3434 :
3435 0 : void ScXMLImport::NotifyEmbeddedFontRead()
3436 : {
3437 0 : if ( pDoc )
3438 0 : pDoc->SetIsUsingEmbededFonts( true );
3439 0 : }
3440 :
3441 207 : ScMyImpDetectiveOpArray* ScXMLImport::GetDetectiveOpArray()
3442 : {
3443 207 : if (!pDetectiveOpArray)
3444 197 : pDetectiveOpArray = new ScMyImpDetectiveOpArray();
3445 207 : return pDetectiveOpArray;
3446 156 : }
3447 :
3448 : /* vim:set shiftwidth=4 softtabstop=4 expandtab: */
|