LCOV - code coverage report
Current view: top level - sc/source/filter/xml - xmlimprt.cxx (source / functions) Hit Total Coverage
Test: libreoffice_filtered.info Lines: 803 1160 69.2 %
Date: 2012-08-25 Functions: 110 157 70.1 %
Legend: Lines: hit not hit | Branches: + taken - not taken # not executed Branches: 829 2046 40.5 %

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

Generated by: LCOV version 1.10