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