LCOV - code coverage report
Current view: top level - usr/local/src/libreoffice/sc/source/filter/xml - xmlimprt.cxx (source / functions) Hit Total Coverage
Test: libreoffice_filtered.info Lines: 880 1224 71.9 %
Date: 2013-07-09 Functions: 125 169 74.0 %
Legend: Lines: hit not hit

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

Generated by: LCOV version 1.10