LCOV - code coverage report
Current view: top level - sc/source/filter/xml - xmldpimp.cxx (source / functions) Hit Total Coverage
Test: libreoffice_filtered.info Lines: 419 934 44.9 %
Date: 2012-08-25 Functions: 60 112 53.6 %
Legend: Lines: hit not hit | Branches: + taken - not taken # not executed Branches: 305 1194 25.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 "xmldpimp.hxx"
      30                 :            : #include "xmlimprt.hxx"
      31                 :            : #include "xmlfilti.hxx"
      32                 :            : #include "xmlsorti.hxx"
      33                 :            : #include "document.hxx"
      34                 :            : #include "docuno.hxx"
      35                 :            : #include "dpshttab.hxx"
      36                 :            : #include "dpsdbtab.hxx"
      37                 :            : #include "attrib.hxx"
      38                 :            : #include "XMLConverter.hxx"
      39                 :            : #include "dpgroup.hxx"
      40                 :            : #include "dpdimsave.hxx"
      41                 :            : #include "rangeutl.hxx"
      42                 :            : #include "dpoutputgeometry.hxx"
      43                 :            : 
      44                 :            : #include <xmloff/xmltkmap.hxx>
      45                 :            : #include <xmloff/nmspmap.hxx>
      46                 :            : #include <xmloff/xmltoken.hxx>
      47                 :            : #include <xmloff/xmlnmspe.hxx>
      48                 :            : #include <xmloff/xmluconv.hxx>
      49                 :            : #include <sax/tools/converter.hxx>
      50                 :            : 
      51                 :            : #include <com/sun/star/sheet/DataPilotFieldReferenceType.hpp>
      52                 :            : #include <com/sun/star/sheet/DataPilotFieldReferenceItemType.hpp>
      53                 :            : #include <com/sun/star/sheet/DataPilotFieldShowItemsMode.hpp>
      54                 :            : #include <com/sun/star/sheet/DataPilotFieldSortMode.hpp>
      55                 :            : #include <com/sun/star/sheet/DataPilotFieldLayoutMode.hpp>
      56                 :            : #include <com/sun/star/sheet/DataPilotFieldGroupBy.hpp>
      57                 :            : 
      58                 :            : using namespace com::sun::star;
      59                 :            : using namespace xmloff::token;
      60                 :            : using ::com::sun::star::uno::Reference;
      61                 :            : using ::com::sun::star::xml::sax::XAttributeList;
      62                 :            : using ::rtl::OUString;
      63                 :            : 
      64                 :            : using rtl::OUString;
      65                 :            : 
      66                 :            : //------------------------------------------------------------------
      67                 :            : 
      68                 :          4 : ScXMLDataPilotTablesContext::ScXMLDataPilotTablesContext( ScXMLImport& rImport,
      69                 :            :                                       sal_uInt16 nPrfx,
      70                 :            :                                       const ::rtl::OUString& rLName,
      71                 :            :                                       const ::com::sun::star::uno::Reference<
      72                 :            :                                       ::com::sun::star::xml::sax::XAttributeList>& /* xAttrList */ ) :
      73                 :          4 :     SvXMLImportContext( rImport, nPrfx, rLName )
      74                 :            : {
      75                 :            :     // has no Attributes
      76         [ +  - ]:          4 :     rImport.LockSolarMutex();
      77                 :          4 : }
      78                 :            : 
      79                 :          4 : ScXMLDataPilotTablesContext::~ScXMLDataPilotTablesContext()
      80                 :            : {
      81         [ +  - ]:          4 :     GetScImport().UnlockSolarMutex();
      82         [ -  + ]:          8 : }
      83                 :            : 
      84                 :          6 : SvXMLImportContext *ScXMLDataPilotTablesContext::CreateChildContext( sal_uInt16 nPrefix,
      85                 :            :                                             const ::rtl::OUString& rLName,
      86                 :            :                                             const ::com::sun::star::uno::Reference<
      87                 :            :                                           ::com::sun::star::xml::sax::XAttributeList>& xAttrList )
      88                 :            : {
      89                 :          6 :     SvXMLImportContext *pContext = 0;
      90                 :            : 
      91                 :          6 :     const SvXMLTokenMap& rTokenMap = GetScImport().GetDataPilotTablesElemTokenMap();
      92         [ +  - ]:          6 :     switch( rTokenMap.Get( nPrefix, rLName ) )
      93                 :            :     {
      94                 :            :         case XML_TOK_DATA_PILOT_TABLE :
      95                 :            :         {
      96                 :            :             pContext = new ScXMLDataPilotTableContext( GetScImport(), nPrefix,
      97         [ +  - ]:          6 :                                                           rLName, xAttrList);
      98                 :            :         }
      99                 :          6 :         break;
     100                 :            :     }
     101                 :            : 
     102         [ -  + ]:          6 :     if( !pContext )
     103         [ #  # ]:          0 :         pContext = new SvXMLImportContext( GetImport(), nPrefix, rLName );
     104                 :            : 
     105                 :          6 :     return pContext;
     106                 :            : }
     107                 :            : 
     108                 :          4 : void ScXMLDataPilotTablesContext::EndElement()
     109                 :            : {
     110                 :          4 : }
     111                 :            : 
     112                 :         12 : ScXMLDataPilotTableContext::GrandTotalItem::GrandTotalItem() :
     113                 :         12 :     mbVisible(true) {}
     114                 :            : 
     115                 :          6 : ScXMLDataPilotTableContext::ScXMLDataPilotTableContext( ScXMLImport& rImport,
     116                 :            :                                       sal_uInt16 nPrfx,
     117                 :            :                                       const ::rtl::OUString& rLName,
     118                 :            :                                       const ::com::sun::star::uno::Reference<
     119                 :            :                                       ::com::sun::star::xml::sax::XAttributeList>& xAttrList) :
     120                 :            :     SvXMLImportContext( rImport, nPrfx, rLName ),
     121                 :          6 :     pDoc(GetScImport().GetDocument()),
     122                 :            :     pDPObject(NULL),
     123                 :            :     pDPSave(NULL),
     124                 :            :     pDPDimSaveData(NULL),
     125                 :            :     sDataPilotTableName(),
     126                 :            :     sApplicationData(),
     127         [ +  - ]:          6 :     sGrandTotal(GetXMLToken(XML_BOTH)),
     128                 :            :     mnRowFieldCount(0),
     129                 :            :     mnColFieldCount(0),
     130                 :            :     mnPageFieldCount(0),
     131                 :            :     mnDataFieldCount(0),
     132                 :            :     bIsNative(true),
     133                 :            :     bIgnoreEmptyRows(false),
     134                 :            :     bIdentifyCategories(false),
     135                 :            :     bTargetRangeAddress(false),
     136                 :            :     bSourceCellRange(false),
     137                 :            :     bShowFilter(true),
     138                 :            :     bDrillDown(true),
     139         [ +  - ]:         18 :     bHeaderGridLayout(false)
     140                 :            : {
     141 [ +  - ][ +  - ]:          6 :     sal_Int16 nAttrCount = xAttrList.is() ? xAttrList->getLength() : 0;
                 [ +  - ]
     142         [ +  - ]:          6 :     const SvXMLTokenMap& rAttrTokenMap = GetScImport().GetDataPilotTableAttrTokenMap();
     143         [ +  + ]:         30 :     for( sal_Int16 i=0; i < nAttrCount; ++i )
     144                 :            :     {
     145 [ +  - ][ +  - ]:         24 :         const rtl::OUString& sAttrName(xAttrList->getNameByIndex( i ));
     146                 :         24 :         rtl::OUString aLocalName;
     147                 :         24 :         sal_uInt16 nPrefix = GetScImport().GetNamespaceMap().GetKeyByAttrName(
     148         [ +  - ]:         24 :                                             sAttrName, &aLocalName );
     149 [ +  - ][ +  - ]:         24 :         const rtl::OUString& sValue(xAttrList->getValueByIndex( i ));
     150                 :            : 
     151 [ +  - ][ +  +  :         24 :         switch( rAttrTokenMap.Get( nPrefix, aLocalName ) )
          -  -  -  +  +  
             -  -  -  - ]
     152                 :            :         {
     153                 :            :             case XML_TOK_DATA_PILOT_TABLE_ATTR_NAME :
     154                 :            :             {
     155                 :          6 :                 sDataPilotTableName = sValue;
     156                 :            :             }
     157                 :          6 :             break;
     158                 :            :             case XML_TOK_DATA_PILOT_TABLE_ATTR_APPLICATION_DATA :
     159                 :            :             {
     160                 :          6 :                 sApplicationData = sValue;
     161                 :            :             }
     162                 :          6 :             break;
     163                 :            :             case XML_TOK_DATA_PILOT_TABLE_ATTR_GRAND_TOTAL :
     164                 :            :             {
     165                 :          0 :                 sGrandTotal = sValue;
     166 [ #  # ][ #  # ]:          0 :                 if (IsXMLToken(sValue, XML_BOTH))
     167                 :            :                 {
     168                 :          0 :                     maRowGrandTotal.mbVisible = true;
     169                 :          0 :                     maColGrandTotal.mbVisible = true;
     170                 :            :                 }
     171 [ #  # ][ #  # ]:          0 :                 else if (IsXMLToken(sValue, XML_ROW))
     172                 :            :                 {
     173                 :          0 :                     maRowGrandTotal.mbVisible = true;
     174                 :          0 :                     maColGrandTotal.mbVisible = false;
     175                 :            :                 }
     176 [ #  # ][ #  # ]:          0 :                 else if (IsXMLToken(sValue, XML_COLUMN))
     177                 :            :                 {
     178                 :          0 :                     maRowGrandTotal.mbVisible = false;
     179                 :          0 :                     maColGrandTotal.mbVisible = true;
     180                 :            :                 }
     181                 :            :                 else
     182                 :            :                 {
     183                 :          0 :                     maRowGrandTotal.mbVisible = false;
     184                 :          0 :                     maColGrandTotal.mbVisible = false;
     185                 :            :                 }
     186                 :            :             }
     187                 :          0 :             break;
     188                 :            :             case XML_TOK_DATA_PILOT_TABLE_ATTR_IGNORE_EMPTY_ROWS :
     189                 :            :             {
     190         [ #  # ]:          0 :                 bIgnoreEmptyRows = IsXMLToken(sValue, XML_TRUE);
     191                 :            :             }
     192                 :          0 :             break;
     193                 :            :             case XML_TOK_DATA_PILOT_TABLE_ATTR_IDENTIFY_CATEGORIES :
     194                 :            :             {
     195         [ #  # ]:          0 :                 bIdentifyCategories = IsXMLToken(sValue, XML_TRUE);
     196                 :            :             }
     197                 :          0 :             break;
     198                 :            :             case XML_TOK_DATA_PILOT_TABLE_ATTR_TARGET_RANGE_ADDRESS :
     199                 :            :             {
     200                 :          6 :                 sal_Int32 nOffset(0);
     201         [ +  - ]:          6 :                 bTargetRangeAddress = ScRangeStringConverter::GetRangeFromString( aTargetRangeAddress, sValue, pDoc, ::formula::FormulaGrammar::CONV_OOO, nOffset );
     202                 :            :             }
     203                 :          6 :             break;
     204                 :            :             case XML_TOK_DATA_PILOT_TABLE_ATTR_BUTTONS :
     205                 :            :             {
     206                 :          6 :                 sButtons = sValue;
     207                 :            :             }
     208                 :          6 :             break;
     209                 :            :             case XML_TOK_DATA_PILOT_TABLE_ATTR_SHOW_FILTER_BUTTON :
     210                 :            :             {
     211         [ #  # ]:          0 :                 bShowFilter = IsXMLToken(sValue, XML_TRUE);
     212                 :            :             }
     213                 :          0 :             break;
     214                 :            :             case XML_TOK_DATA_PILOT_TABLE_ATTR_DRILL_DOWN :
     215                 :            :             {
     216         [ #  # ]:          0 :                 bDrillDown = IsXMLToken(sValue, XML_TRUE);
     217                 :            :             }
     218                 :          0 :             break;
     219                 :            :             case XML_TOK_DATA_PILOT_TABLE_ATTR_HEADER_GRID_LAYOUT :
     220                 :            :             {
     221         [ #  # ]:          0 :                 bHeaderGridLayout = IsXMLToken(sValue, XML_TRUE);
     222                 :            :             }
     223                 :          0 :             break;
     224                 :            :         }
     225                 :         24 :     }
     226                 :            : 
     227 [ +  - ][ +  - ]:          6 :     pDPObject = new ScDPObject(pDoc);
     228 [ +  - ][ +  - ]:          6 :     pDPSave = new ScDPSaveData();
     229                 :          6 : }
     230                 :            : 
     231         [ +  - ]:          6 : ScXMLDataPilotTableContext::~ScXMLDataPilotTableContext()
     232                 :            : {
     233 [ -  + ][ #  # ]:          6 :     delete pDPDimSaveData;
     234         [ -  + ]:         12 : }
     235                 :            : 
     236                 :         28 : SvXMLImportContext *ScXMLDataPilotTableContext::CreateChildContext( sal_uInt16 nPrefix,
     237                 :            :                                             const ::rtl::OUString& rLName,
     238                 :            :                                             const ::com::sun::star::uno::Reference<
     239                 :            :                                           ::com::sun::star::xml::sax::XAttributeList>& xAttrList )
     240                 :            : {
     241                 :         28 :     SvXMLImportContext *pContext = 0;
     242                 :            : 
     243                 :         28 :     const SvXMLTokenMap& rTokenMap = GetScImport().GetDataPilotTableElemTokenMap();
     244   [ -  -  -  -  :         28 :     switch( rTokenMap.Get( nPrefix, rLName ) )
             -  +  +  - ]
     245                 :            :     {
     246                 :            :         case XML_TOK_DATA_PILOT_TABLE_ELEM_SOURCE_SQL :
     247                 :            :         {
     248         [ #  # ]:          0 :             pContext = new ScXMLDPSourceSQLContext(GetScImport(), nPrefix, rLName, xAttrList, this);
     249                 :          0 :             nSourceType = SQL;
     250                 :            :         }
     251                 :          0 :         break;
     252                 :            :         case XML_TOK_DATA_PILOT_TABLE_ELEM_SOURCE_TABLE :
     253                 :            :         {
     254         [ #  # ]:          0 :             pContext = new ScXMLDPSourceTableContext(GetScImport(), nPrefix, rLName, xAttrList, this);
     255                 :          0 :             nSourceType = TABLE;
     256                 :            :         }
     257                 :          0 :         break;
     258                 :            :         case XML_TOK_DATA_PILOT_TABLE_ELEM_SOURCE_QUERY :
     259                 :            :         {
     260         [ #  # ]:          0 :             pContext = new ScXMLDPSourceQueryContext(GetScImport(), nPrefix, rLName, xAttrList, this);
     261                 :          0 :             nSourceType = QUERY;
     262                 :            :         }
     263                 :          0 :         break;
     264                 :            :         case XML_TOK_DATA_PILOT_TABLE_ELEM_SOURCE_SERVICE :
     265                 :            :         {
     266         [ #  # ]:          0 :             pContext = new ScXMLSourceServiceContext(GetScImport(), nPrefix, rLName, xAttrList, this);
     267                 :          0 :             nSourceType = SERVICE;
     268                 :            :         }
     269                 :          0 :         break;
     270                 :            :         case XML_TOK_DATA_PILOT_TABLE_ELEM_GRAND_TOTAL:
     271                 :            :         case XML_TOK_DATA_PILOT_TABLE_ELEM_GRAND_TOTAL_EXT:
     272                 :            :         {
     273         [ #  # ]:          0 :             pContext = new ScXMLDataPilotGrandTotalContext(GetScImport(), nPrefix, rLName, xAttrList, this);
     274                 :            :         }
     275                 :          0 :         break;
     276                 :            :         case XML_TOK_DATA_PILOT_TABLE_ELEM_SOURCE_CELL_RANGE :
     277                 :            :         {
     278         [ +  - ]:          6 :             pContext = new ScXMLSourceCellRangeContext(GetScImport(), nPrefix, rLName, xAttrList, this);
     279                 :          6 :             nSourceType = CELLRANGE;
     280                 :            :         }
     281                 :          6 :         break;
     282                 :            :         case XML_TOK_DATA_PILOT_TABLE_ELEM_DATA_PILOT_FIELD :
     283         [ +  - ]:         22 :             pContext = new ScXMLDataPilotFieldContext(GetScImport(), nPrefix, rLName, xAttrList, this);
     284                 :         22 :         break;
     285                 :            :     }
     286                 :            : 
     287         [ -  + ]:         28 :     if( !pContext )
     288         [ #  # ]:          0 :         pContext = new SvXMLImportContext( GetImport(), nPrefix, rLName );
     289                 :            : 
     290                 :         28 :     return pContext;
     291                 :            : }
     292                 :            : 
     293                 :            : namespace {
     294                 :            : 
     295                 :         20 : const ScDPSaveDimension* getDimension(
     296                 :            :     const std::vector<const ScDPSaveDimension*>& rRowDims,
     297                 :            :     const std::vector<const ScDPSaveDimension*>& rColDims,
     298                 :            :     ScDPOutputGeometry::FieldType eType, size_t nPos)
     299                 :            : {
     300      [ +  +  + ]:         20 :     switch (eType)
     301                 :            :     {
     302                 :            :         case ScDPOutputGeometry::Column:
     303                 :            :         {
     304         [ -  + ]:          4 :             if (rColDims.size() <= nPos)
     305                 :          0 :                 return NULL;
     306                 :            : 
     307                 :          4 :             return rColDims[nPos];
     308                 :            :         }
     309                 :            :         case ScDPOutputGeometry::Row:
     310                 :            :         {
     311         [ -  + ]:          6 :             if (rRowDims.size() <= nPos)
     312                 :          0 :                 return NULL;
     313                 :            : 
     314                 :          6 :             return rRowDims[nPos];
     315                 :            :         }
     316                 :            :         default:
     317                 :            :             ;
     318                 :            :     }
     319                 :         20 :     return NULL;
     320                 :            : }
     321                 :            : 
     322                 :            : }
     323                 :            : 
     324                 :          6 : void ScXMLDataPilotTableContext::SetButtons()
     325                 :            : {
     326         [ +  - ]:          6 :     ScDPOutputGeometry aGeometry(aTargetRangeAddress, bShowFilter);
     327         [ +  - ]:          6 :     aGeometry.setColumnFieldCount(mnColFieldCount);
     328         [ +  - ]:          6 :     aGeometry.setRowFieldCount(mnRowFieldCount);
     329         [ +  - ]:          6 :     aGeometry.setPageFieldCount(mnPageFieldCount);
     330         [ +  - ]:          6 :     aGeometry.setDataFieldCount(mnDataFieldCount);
     331                 :            : 
     332 [ +  - ][ +  - ]:          6 :     std::vector<const ScDPSaveDimension*> aRowDims, aColDims;
     333         [ +  - ]:          6 :     pDPSave->GetAllDimensionsByOrientation(sheet::DataPilotFieldOrientation_ROW, aRowDims);
     334         [ +  - ]:          6 :     pDPSave->GetAllDimensionsByOrientation(sheet::DataPilotFieldOrientation_COLUMN, aColDims);
     335                 :            : 
     336                 :          6 :     OUString sAddress;
     337                 :          6 :     sal_Int32 nOffset = 0;
     338         [ +  + ]:         32 :     while( nOffset >= 0 )
     339                 :            :     {
     340         [ +  - ]:         26 :         ScRangeStringConverter::GetTokenByOffset( sAddress, sButtons, nOffset );
     341         [ +  + ]:         26 :         if( nOffset >= 0 )
     342                 :            :         {
     343                 :         20 :             ScAddress aScAddress;
     344                 :         20 :             sal_Int32 nAddrOffset(0);
     345 [ +  - ][ +  - ]:         20 :             if (pDoc && ScRangeStringConverter::GetAddressFromString( aScAddress, sAddress, pDoc, ::formula::FormulaGrammar::CONV_OOO, nAddrOffset ))
         [ +  - ][ +  - ]
     346                 :            :             {
     347         [ +  - ]:         20 :                 std::pair<ScDPOutputGeometry::FieldType, size_t> aBtnType = aGeometry.getFieldButtonType(aScAddress);
     348                 :            :                 const ScDPSaveDimension* pDim = getDimension(
     349         [ +  - ]:         20 :                     aRowDims, aColDims, aBtnType.first, aBtnType.second);
     350                 :            : 
     351 [ +  + ][ -  + ]:         20 :                 bool bDataLayout = pDim && pDim->IsDataLayout();
     352 [ +  + ][ +  - ]:         20 :                 bool bHasHidden = pDim && pDim->HasInvisibleMember();
                 [ -  + ]
     353                 :            : 
     354                 :         20 :                 sal_Int16 nMFlag = SC_MF_BUTTON;
     355         [ -  + ]:         20 :                 if (bHasHidden)
     356                 :          0 :                     nMFlag |= SC_MF_HIDDEN_MEMBER;
     357                 :            : 
     358         [ +  - ]:         20 :                 if (!bDataLayout)
     359                 :         20 :                     nMFlag |= SC_MF_BUTTON_POPUP;
     360                 :            : 
     361         [ +  - ]:         20 :                 pDoc->ApplyFlagsTab(aScAddress.Col(), aScAddress.Row(), aScAddress.Col(), aScAddress.Row(), aScAddress.Tab(), nMFlag);
     362                 :            :             }
     363                 :            :         }
     364                 :            :     }
     365                 :            : 
     366         [ +  - ]:          6 :     if ( pDPObject )
     367 [ +  - ][ +  - ]:          6 :         pDPObject->RefreshAfterLoad();
     368                 :          6 : }
     369                 :            : 
     370                 :         22 : void ScXMLDataPilotTableContext::AddDimension(ScDPSaveDimension* pDim)
     371                 :            : {
     372         [ +  - ]:         22 :     if (pDPSave)
     373                 :            :     {
     374                 :            :         //  if a dimension with that name has already been inserted,
     375                 :            :         //  mark the new one as duplicate
     376   [ +  +  -  + ]:         42 :         if ( !pDim->IsDataLayout() &&
                 [ -  + ]
     377                 :         20 :                 pDPSave->GetExistingDimensionByName(pDim->GetName()) )
     378                 :          0 :             pDim->SetDupFlag(true);
     379                 :            : 
     380   [ +  +  +  +  :         22 :         switch (pDim->GetOrientation())
                      - ]
     381                 :            :         {
     382                 :            :             case sheet::DataPilotFieldOrientation_ROW:
     383                 :          8 :                 ++mnRowFieldCount;
     384                 :          8 :             break;
     385                 :            :             case sheet::DataPilotFieldOrientation_COLUMN:
     386                 :          6 :                 ++mnColFieldCount;
     387                 :          6 :             break;
     388                 :            :             case sheet::DataPilotFieldOrientation_PAGE:
     389                 :          2 :                 ++mnPageFieldCount;
     390                 :          2 :             break;
     391                 :            :             case sheet::DataPilotFieldOrientation_DATA:
     392                 :          6 :                 ++mnDataFieldCount;
     393                 :          6 :             break;
     394                 :            :             case sheet::DataPilotFieldOrientation_HIDDEN:
     395                 :            :             default:
     396                 :            :                 ;
     397                 :            :         }
     398                 :            : 
     399                 :         22 :         pDPSave->AddDimension(pDim);
     400                 :            :     }
     401                 :         22 : }
     402                 :            : 
     403                 :          0 : void ScXMLDataPilotTableContext::AddGroupDim(const ScDPSaveNumGroupDimension& aNumGroupDim)
     404                 :            : {
     405         [ #  # ]:          0 :     if (!pDPDimSaveData)
     406         [ #  # ]:          0 :         pDPDimSaveData = new ScDPDimensionSaveData();
     407                 :          0 :     pDPDimSaveData->AddNumGroupDimension(aNumGroupDim);
     408                 :          0 : }
     409                 :            : 
     410                 :          0 : void ScXMLDataPilotTableContext::AddGroupDim(const ScDPSaveGroupDimension& aGroupDim)
     411                 :            : {
     412         [ #  # ]:          0 :     if (!pDPDimSaveData)
     413         [ #  # ]:          0 :         pDPDimSaveData = new ScDPDimensionSaveData();
     414                 :          0 :     pDPDimSaveData->AddGroupDimension(aGroupDim);
     415                 :          0 : }
     416                 :            : 
     417                 :          6 : void ScXMLDataPilotTableContext::EndElement()
     418                 :            : {
     419         [ -  + ]:          6 :     if (!bTargetRangeAddress)
     420                 :          6 :         return;
     421                 :            : 
     422                 :          6 :     pDPObject->SetName(sDataPilotTableName);
     423                 :          6 :     pDPObject->SetTag(sApplicationData);
     424                 :          6 :     pDPObject->SetOutRange(aTargetRangeAddress);
     425                 :          6 :     pDPObject->SetHeaderLayout(bHeaderGridLayout);
     426   [ -  -  -  -  :          6 :     switch (nSourceType)
                   +  - ]
     427                 :            :     {
     428                 :            :         case SQL :
     429                 :            :         {
     430                 :          0 :             ScImportSourceDesc aImportDesc(pDoc);
     431                 :          0 :             aImportDesc.aDBName = sDatabaseName;
     432                 :          0 :             aImportDesc.aObject = sSourceObject;
     433                 :          0 :             aImportDesc.nType = sheet::DataImportMode_SQL;
     434                 :          0 :             aImportDesc.bNative = bIsNative;
     435         [ #  # ]:          0 :             pDPObject->SetImportDesc(aImportDesc);
     436                 :            :         }
     437                 :          0 :         break;
     438                 :            :         case TABLE :
     439                 :            :         {
     440                 :          0 :             ScImportSourceDesc aImportDesc(pDoc);
     441                 :          0 :             aImportDesc.aDBName = sDatabaseName;
     442                 :          0 :             aImportDesc.aObject = sSourceObject;
     443                 :          0 :             aImportDesc.nType = sheet::DataImportMode_TABLE;
     444         [ #  # ]:          0 :             pDPObject->SetImportDesc(aImportDesc);
     445                 :            :         }
     446                 :          0 :         break;
     447                 :            :         case QUERY :
     448                 :            :         {
     449                 :          0 :             ScImportSourceDesc aImportDesc(pDoc);
     450                 :          0 :             aImportDesc.aDBName = sDatabaseName;
     451                 :          0 :             aImportDesc.aObject = sSourceObject;
     452                 :          0 :             aImportDesc.nType = sheet::DataImportMode_QUERY;
     453         [ #  # ]:          0 :             pDPObject->SetImportDesc(aImportDesc);
     454                 :            :         }
     455                 :          0 :         break;
     456                 :            :         case SERVICE :
     457                 :            :         {
     458                 :            :             ScDPServiceDesc aServiceDesk(sServiceName, sServiceSourceName, sServiceSourceObject,
     459         [ #  # ]:          0 :                                 sServiceUsername, sServicePassword);
     460         [ #  # ]:          0 :             pDPObject->SetServiceData(aServiceDesk);
     461                 :            :         }
     462                 :          0 :         break;
     463                 :            :         case CELLRANGE :
     464                 :            :         {
     465         [ +  - ]:          6 :             if (bSourceCellRange)
     466                 :            :             {
     467         [ +  - ]:          6 :                 ScSheetSourceDesc aSheetDesc(pDoc);
     468         [ -  + ]:          6 :                 if (!sSourceRangeName.isEmpty())
     469                 :            :                     // Range name takes precedence.
     470         [ #  # ]:          0 :                     aSheetDesc.SetRangeName(sSourceRangeName);
     471                 :            :                 else
     472         [ +  - ]:          6 :                     aSheetDesc.SetSourceRange(aSourceCellRangeAddress);
     473         [ +  - ]:          6 :                 aSheetDesc.SetQueryParam(aSourceQueryParam);
     474 [ +  - ][ +  - ]:          6 :                 pDPObject->SetSheetDesc(aSheetDesc);
     475                 :            :             }
     476                 :            :         }
     477                 :          6 :         break;
     478                 :            :     }
     479                 :            : 
     480                 :          6 :     pDPSave->SetRowGrand(maRowGrandTotal.mbVisible);
     481                 :          6 :     pDPSave->SetColumnGrand(maColGrandTotal.mbVisible);
     482         [ -  + ]:          6 :     if (!maRowGrandTotal.maDisplayName.isEmpty())
     483                 :            :         // TODO: Right now, we only support one grand total name for both
     484                 :            :         // column and row totals.  Take the value from the row total for
     485                 :            :         // now.
     486                 :          0 :         pDPSave->SetGrandTotalName(maRowGrandTotal.maDisplayName);
     487                 :            : 
     488                 :          6 :     pDPSave->SetIgnoreEmptyRows(bIgnoreEmptyRows);
     489                 :          6 :     pDPSave->SetRepeatIfEmpty(bIdentifyCategories);
     490                 :          6 :     pDPSave->SetFilterButton(bShowFilter);
     491                 :          6 :     pDPSave->SetDrillDown(bDrillDown);
     492         [ -  + ]:          6 :     if (pDPDimSaveData)
     493                 :          0 :         pDPSave->SetDimensionData(pDPDimSaveData);
     494                 :          6 :     pDPObject->SetSaveData(*pDPSave);
     495         [ +  - ]:          6 :     if (pDoc)
     496                 :            :     {
     497                 :          6 :         ScDPCollection* pDPCollection = pDoc->GetDPCollection();
     498                 :            : 
     499                 :            :         // #i94570# Names have to be unique, or the tables can't be accessed by API.
     500         [ -  + ]:          6 :         if ( pDPCollection->GetByName(pDPObject->GetName()) )
     501 [ #  # ][ #  # ]:          0 :             pDPObject->SetName( String() );     // ignore the invalid name, create a new name in AfterXMLLoading
     502                 :            : 
     503                 :          6 :         pDPObject->SetAlive(sal_True);
     504                 :          6 :         pDPCollection->InsertNewTable(pDPObject);
     505                 :            :     }
     506                 :          6 :     SetButtons();
     507                 :            : }
     508                 :            : 
     509                 :          0 : void ScXMLDataPilotTableContext::SetGrandTotal(
     510                 :            :     XMLTokenEnum eOrientation, bool bVisible, const OUString& rDisplayName)
     511                 :            : {
     512   [ #  #  #  # ]:          0 :     switch (eOrientation)
     513                 :            :     {
     514                 :            :         case XML_BOTH:
     515                 :          0 :             maRowGrandTotal.mbVisible     = bVisible;
     516                 :          0 :             maRowGrandTotal.maDisplayName = rDisplayName;
     517                 :          0 :             maColGrandTotal.mbVisible     = bVisible;
     518                 :          0 :             maColGrandTotal.maDisplayName = rDisplayName;
     519                 :          0 :         break;
     520                 :            :         case XML_ROW:
     521                 :          0 :             maRowGrandTotal.mbVisible     = bVisible;
     522                 :          0 :             maRowGrandTotal.maDisplayName = rDisplayName;
     523                 :          0 :         break;
     524                 :            :         case XML_COLUMN:
     525                 :          0 :             maColGrandTotal.mbVisible     = bVisible;
     526                 :          0 :             maColGrandTotal.maDisplayName = rDisplayName;
     527                 :          0 :         break;
     528                 :            :         default:
     529                 :            :             ;
     530                 :            :     }
     531                 :          0 : }
     532                 :            : 
     533                 :          0 : ScXMLDPSourceSQLContext::ScXMLDPSourceSQLContext( ScXMLImport& rImport,
     534                 :            :                                       sal_uInt16 nPrfx,
     535                 :            :                                       const ::rtl::OUString& rLName,
     536                 :            :                                       const ::com::sun::star::uno::Reference<
     537                 :            :                                       ::com::sun::star::xml::sax::XAttributeList>& xAttrList,
     538                 :            :                                         ScXMLDataPilotTableContext* pTempDataPilotTable) :
     539                 :            :     SvXMLImportContext( rImport, nPrfx, rLName ),
     540                 :          0 :     pDataPilotTable(pTempDataPilotTable)
     541                 :            : {
     542 [ #  # ][ #  # ]:          0 :     sal_Int16 nAttrCount = xAttrList.is() ? xAttrList->getLength() : 0;
                 [ #  # ]
     543         [ #  # ]:          0 :     const SvXMLTokenMap& rAttrTokenMap = GetScImport().GetDatabaseRangeSourceSQLAttrTokenMap();
     544         [ #  # ]:          0 :     for( sal_Int16 i=0; i < nAttrCount; ++i )
     545                 :            :     {
     546 [ #  # ][ #  # ]:          0 :         const rtl::OUString& sAttrName(xAttrList->getNameByIndex( i ));
     547                 :          0 :         rtl::OUString aLocalName;
     548                 :          0 :         sal_uInt16 nPrefix = GetScImport().GetNamespaceMap().GetKeyByAttrName(
     549         [ #  # ]:          0 :                                             sAttrName, &aLocalName );
     550 [ #  # ][ #  # ]:          0 :         const rtl::OUString& sValue(xAttrList->getValueByIndex( i ));
     551                 :            : 
     552         [ #  # ]:          0 :         switch( rAttrTokenMap.Get( nPrefix, aLocalName ) )
           [ #  #  #  # ]
     553                 :            :         {
     554                 :            :             case XML_TOK_SOURCE_SQL_ATTR_DATABASE_NAME :
     555                 :            :             {
     556                 :          0 :                 pDataPilotTable->SetDatabaseName(sValue);
     557                 :            :             }
     558                 :          0 :             break;
     559                 :            :             case XML_TOK_SOURCE_SQL_ATTR_SQL_STATEMENT :
     560                 :            :             {
     561                 :          0 :                 pDataPilotTable->SetSourceObject(sValue);
     562                 :            :             }
     563                 :          0 :             break;
     564                 :            :             case XML_TOK_SOURCE_SQL_ATTR_PARSE_SQL_STATEMENT :
     565                 :            :             {
     566         [ #  # ]:          0 :                 pDataPilotTable->SetNative(!IsXMLToken(sValue, XML_TRUE));
     567                 :            :             }
     568                 :          0 :             break;
     569                 :            :         }
     570                 :          0 :     }
     571                 :          0 : }
     572                 :            : 
     573                 :          0 : ScXMLDPSourceSQLContext::~ScXMLDPSourceSQLContext()
     574                 :            : {
     575         [ #  # ]:          0 : }
     576                 :            : 
     577                 :          0 : SvXMLImportContext *ScXMLDPSourceSQLContext::CreateChildContext( sal_uInt16 nPrefix,
     578                 :            :                                             const ::rtl::OUString& rLName,
     579                 :            :                                             const ::com::sun::star::uno::Reference<
     580                 :            :                                         ::com::sun::star::xml::sax::XAttributeList>& /* xAttrList */ )
     581                 :            : {
     582                 :          0 :     SvXMLImportContext *pContext = 0;
     583                 :            : 
     584         [ #  # ]:          0 :     if( !pContext )
     585         [ #  # ]:          0 :         pContext = new SvXMLImportContext( GetImport(), nPrefix, rLName );
     586                 :            : 
     587                 :          0 :     return pContext;
     588                 :            : }
     589                 :            : 
     590                 :          0 : void ScXMLDPSourceSQLContext::EndElement()
     591                 :            : {
     592                 :          0 : }
     593                 :            : 
     594                 :          0 : ScXMLDPSourceTableContext::ScXMLDPSourceTableContext( ScXMLImport& rImport,
     595                 :            :                                       sal_uInt16 nPrfx,
     596                 :            :                                       const ::rtl::OUString& rLName,
     597                 :            :                                       const ::com::sun::star::uno::Reference<
     598                 :            :                                       ::com::sun::star::xml::sax::XAttributeList>& xAttrList,
     599                 :            :                                         ScXMLDataPilotTableContext* pTempDataPilotTable) :
     600                 :            :     SvXMLImportContext( rImport, nPrfx, rLName ),
     601                 :          0 :     pDataPilotTable(pTempDataPilotTable)
     602                 :            : {
     603 [ #  # ][ #  # ]:          0 :     sal_Int16 nAttrCount = xAttrList.is() ? xAttrList->getLength() : 0;
                 [ #  # ]
     604         [ #  # ]:          0 :     const SvXMLTokenMap& rAttrTokenMap = GetScImport().GetDatabaseRangeSourceTableAttrTokenMap();
     605         [ #  # ]:          0 :     for( sal_Int16 i=0; i < nAttrCount; ++i )
     606                 :            :     {
     607 [ #  # ][ #  # ]:          0 :         const rtl::OUString& sAttrName(xAttrList->getNameByIndex( i ));
     608                 :          0 :         rtl::OUString aLocalName;
     609                 :          0 :         sal_uInt16 nPrefix = GetScImport().GetNamespaceMap().GetKeyByAttrName(
     610         [ #  # ]:          0 :                                             sAttrName, &aLocalName );
     611 [ #  # ][ #  # ]:          0 :         const rtl::OUString& sValue(xAttrList->getValueByIndex( i ));
     612                 :            : 
     613         [ #  # ]:          0 :         switch( rAttrTokenMap.Get( nPrefix, aLocalName ) )
              [ #  #  # ]
     614                 :            :         {
     615                 :            :             case XML_TOK_SOURCE_TABLE_ATTR_DATABASE_NAME :
     616                 :            :             {
     617                 :          0 :                 pDataPilotTable->SetDatabaseName(sValue);
     618                 :            :             }
     619                 :          0 :             break;
     620                 :            :             case XML_TOK_SOURCE_TABLE_ATTR_TABLE_NAME :
     621                 :            :             {
     622                 :          0 :                 pDataPilotTable->SetSourceObject(sValue);
     623                 :            :             }
     624                 :          0 :             break;
     625                 :            :         }
     626                 :          0 :     }
     627                 :          0 : }
     628                 :            : 
     629                 :          0 : ScXMLDPSourceTableContext::~ScXMLDPSourceTableContext()
     630                 :            : {
     631         [ #  # ]:          0 : }
     632                 :            : 
     633                 :          0 : SvXMLImportContext *ScXMLDPSourceTableContext::CreateChildContext( sal_uInt16 nPrefix,
     634                 :            :                                             const ::rtl::OUString& rLName,
     635                 :            :                                             const ::com::sun::star::uno::Reference<
     636                 :            :                                         ::com::sun::star::xml::sax::XAttributeList>& /* xAttrList */ )
     637                 :            : {
     638                 :          0 :     SvXMLImportContext *pContext = 0;
     639                 :            : 
     640         [ #  # ]:          0 :     if( !pContext )
     641         [ #  # ]:          0 :         pContext = new SvXMLImportContext( GetImport(), nPrefix, rLName );
     642                 :            : 
     643                 :          0 :     return pContext;
     644                 :            : }
     645                 :            : 
     646                 :          0 : void ScXMLDPSourceTableContext::EndElement()
     647                 :            : {
     648                 :          0 : }
     649                 :            : 
     650                 :          0 : ScXMLDPSourceQueryContext::ScXMLDPSourceQueryContext( ScXMLImport& rImport,
     651                 :            :                                       sal_uInt16 nPrfx,
     652                 :            :                                       const ::rtl::OUString& rLName,
     653                 :            :                                       const ::com::sun::star::uno::Reference<
     654                 :            :                                       ::com::sun::star::xml::sax::XAttributeList>& xAttrList,
     655                 :            :                                         ScXMLDataPilotTableContext* pTempDataPilotTable) :
     656                 :            :     SvXMLImportContext( rImport, nPrfx, rLName ),
     657                 :          0 :     pDataPilotTable(pTempDataPilotTable)
     658                 :            : {
     659 [ #  # ][ #  # ]:          0 :     sal_Int16 nAttrCount = xAttrList.is() ? xAttrList->getLength() : 0;
                 [ #  # ]
     660         [ #  # ]:          0 :     const SvXMLTokenMap& rAttrTokenMap = GetScImport().GetDatabaseRangeSourceQueryAttrTokenMap();
     661         [ #  # ]:          0 :     for( sal_Int16 i=0; i < nAttrCount; ++i )
     662                 :            :     {
     663 [ #  # ][ #  # ]:          0 :         const rtl::OUString& sAttrName(xAttrList->getNameByIndex( i ));
     664                 :          0 :         rtl::OUString aLocalName;
     665                 :          0 :         sal_uInt16 nPrefix = GetScImport().GetNamespaceMap().GetKeyByAttrName(
     666         [ #  # ]:          0 :                                             sAttrName, &aLocalName );
     667 [ #  # ][ #  # ]:          0 :         const rtl::OUString& sValue(xAttrList->getValueByIndex( i ));
     668                 :            : 
     669         [ #  # ]:          0 :         switch( rAttrTokenMap.Get( nPrefix, aLocalName ) )
              [ #  #  # ]
     670                 :            :         {
     671                 :            :             case XML_TOK_SOURCE_QUERY_ATTR_DATABASE_NAME :
     672                 :            :             {
     673                 :          0 :                 pDataPilotTable->SetDatabaseName(sValue);
     674                 :            :             }
     675                 :          0 :             break;
     676                 :            :             case XML_TOK_SOURCE_QUERY_ATTR_QUERY_NAME :
     677                 :            :             {
     678                 :          0 :                 pDataPilotTable->SetSourceObject(sValue);
     679                 :            :             }
     680                 :          0 :             break;
     681                 :            :         }
     682                 :          0 :     }
     683                 :          0 : }
     684                 :            : 
     685                 :          0 : ScXMLDPSourceQueryContext::~ScXMLDPSourceQueryContext()
     686                 :            : {
     687         [ #  # ]:          0 : }
     688                 :            : 
     689                 :          0 : SvXMLImportContext *ScXMLDPSourceQueryContext::CreateChildContext( sal_uInt16 nPrefix,
     690                 :            :                                             const ::rtl::OUString& rLName,
     691                 :            :                                             const ::com::sun::star::uno::Reference<
     692                 :            :                                         ::com::sun::star::xml::sax::XAttributeList>& /* xAttrList */ )
     693                 :            : {
     694                 :          0 :     SvXMLImportContext *pContext = 0;
     695                 :            : 
     696         [ #  # ]:          0 :     if( !pContext )
     697         [ #  # ]:          0 :         pContext = new SvXMLImportContext( GetImport(), nPrefix, rLName );
     698                 :            : 
     699                 :          0 :     return pContext;
     700                 :            : }
     701                 :            : 
     702                 :          0 : void ScXMLDPSourceQueryContext::EndElement()
     703                 :            : {
     704                 :          0 : }
     705                 :            : 
     706                 :          0 : ScXMLSourceServiceContext::ScXMLSourceServiceContext( ScXMLImport& rImport,
     707                 :            :                                       sal_uInt16 nPrfx,
     708                 :            :                                       const ::rtl::OUString& rLName,
     709                 :            :                                       const ::com::sun::star::uno::Reference<
     710                 :            :                                       ::com::sun::star::xml::sax::XAttributeList>& xAttrList,
     711                 :            :                                         ScXMLDataPilotTableContext* pTempDataPilotTable) :
     712                 :            :     SvXMLImportContext( rImport, nPrfx, rLName ),
     713                 :          0 :     pDataPilotTable(pTempDataPilotTable)
     714                 :            : {
     715 [ #  # ][ #  # ]:          0 :     sal_Int16 nAttrCount = xAttrList.is() ? xAttrList->getLength() : 0;
                 [ #  # ]
     716         [ #  # ]:          0 :     const SvXMLTokenMap& rAttrTokenMap = GetScImport().GetDataPilotTableSourceServiceAttrTokenMap();
     717         [ #  # ]:          0 :     for( sal_Int16 i=0; i < nAttrCount; ++i )
     718                 :            :     {
     719 [ #  # ][ #  # ]:          0 :         const rtl::OUString& sAttrName(xAttrList->getNameByIndex( i ));
     720                 :          0 :         rtl::OUString aLocalName;
     721                 :          0 :         sal_uInt16 nPrefix = GetScImport().GetNamespaceMap().GetKeyByAttrName(
     722         [ #  # ]:          0 :                                             sAttrName, &aLocalName );
     723 [ #  # ][ #  # ]:          0 :         const rtl::OUString& sValue(xAttrList->getValueByIndex( i ));
     724                 :            : 
     725 [ #  # ][ #  #  :          0 :         switch( rAttrTokenMap.Get( nPrefix, aLocalName ) )
             #  #  #  # ]
     726                 :            :         {
     727                 :            :             case XML_TOK_SOURCE_SERVICE_ATTR_NAME :
     728                 :            :             {
     729                 :          0 :                 pDataPilotTable->SetServiceName(sValue);
     730                 :            :             }
     731                 :          0 :             break;
     732                 :            :             case XML_TOK_SOURCE_SERVICE_ATTR_SOURCE_NAME :
     733                 :            :             {
     734                 :          0 :                 pDataPilotTable->SetServiceSourceName(sValue);
     735                 :            :             }
     736                 :          0 :             break;
     737                 :            :             case XML_TOK_SOURCE_SERVICE_ATTR_OBJECT_NAME :
     738                 :            :             {
     739                 :          0 :                 pDataPilotTable->SetServiceSourceObject(sValue);
     740                 :            :             }
     741                 :          0 :             break;
     742                 :            :             case XML_TOK_SOURCE_SERVICE_ATTR_USER_NAME :
     743                 :            :             {
     744                 :          0 :                 pDataPilotTable->SetServiceUsername(sValue);
     745                 :            :             }
     746                 :          0 :             break;
     747                 :            :             case XML_TOK_SOURCE_SERVICE_ATTR_PASSWORD :
     748                 :            :             {
     749                 :          0 :                 pDataPilotTable->SetServicePassword(sValue);
     750                 :            :             }
     751                 :          0 :             break;
     752                 :            :         }
     753                 :          0 :     }
     754                 :          0 : }
     755                 :            : 
     756                 :          0 : ScXMLSourceServiceContext::~ScXMLSourceServiceContext()
     757                 :            : {
     758         [ #  # ]:          0 : }
     759                 :            : 
     760                 :          0 : SvXMLImportContext *ScXMLSourceServiceContext::CreateChildContext( sal_uInt16 nPrefix,
     761                 :            :                                             const ::rtl::OUString& rLName,
     762                 :            :                                             const ::com::sun::star::uno::Reference<
     763                 :            :                                         ::com::sun::star::xml::sax::XAttributeList>& /* xAttrList */ )
     764                 :            : {
     765                 :          0 :     SvXMLImportContext *pContext = 0;
     766                 :            : 
     767         [ #  # ]:          0 :     if( !pContext )
     768         [ #  # ]:          0 :         pContext = new SvXMLImportContext( GetImport(), nPrefix, rLName );
     769                 :            : 
     770                 :          0 :     return pContext;
     771                 :            : }
     772                 :            : 
     773                 :          0 : void ScXMLSourceServiceContext::EndElement()
     774                 :            : {
     775                 :          0 : }
     776                 :            : 
     777                 :          0 : ScXMLImport& ScXMLDataPilotGrandTotalContext::GetScImport()
     778                 :            : {
     779                 :          0 :     return static_cast<ScXMLImport&>(GetImport());
     780                 :            : }
     781                 :            : 
     782                 :          0 : ScXMLDataPilotGrandTotalContext::ScXMLDataPilotGrandTotalContext(
     783                 :            :     ScXMLImport& rImport, sal_uInt16 nPrefix, const OUString& rLName, const Reference<XAttributeList>& xAttrList,
     784                 :            :     ScXMLDataPilotTableContext* pTableContext ) :
     785                 :            :     SvXMLImportContext( rImport, nPrefix, rLName ),
     786                 :            :     mpTableContext(pTableContext),
     787                 :            :     meOrientation(NONE),
     788                 :          0 :     mbVisible(false)
     789                 :            : {
     790 [ #  # ][ #  # ]:          0 :     sal_Int16 nAttrCount = xAttrList.is() ? xAttrList->getLength() : 0;
                 [ #  # ]
     791         [ #  # ]:          0 :     const SvXMLTokenMap& rAttrTokenMap = GetScImport().GetDataPilotGrandTotalAttrTokenMap();
     792         [ #  # ]:          0 :     for (sal_Int16 i = 0; i < nAttrCount; ++i)
     793                 :            :     {
     794 [ #  # ][ #  # ]:          0 :         const OUString& rAttrName  = xAttrList->getNameByIndex(i);
     795 [ #  # ][ #  # ]:          0 :         const OUString& rAttrValue = xAttrList->getValueByIndex(i);
     796                 :            : 
     797                 :          0 :         OUString aLocalName;
     798         [ #  # ]:          0 :         sal_uInt16 nLocalPrefix = GetScImport().GetNamespaceMap().GetKeyByAttrName(rAttrName, &aLocalName);
     799         [ #  # ]:          0 :         switch (rAttrTokenMap.Get(nLocalPrefix, aLocalName))
           [ #  #  #  # ]
     800                 :            :         {
     801                 :            :             case XML_TOK_DATA_PILOT_GRAND_TOTAL_ATTR_DISPLAY:
     802         [ #  # ]:          0 :                 mbVisible = IsXMLToken(rAttrValue, XML_TRUE);
     803                 :          0 :             break;
     804                 :            :             case XML_TOK_DATA_PILOT_GRAND_TOTAL_ATTR_ORIENTATION:
     805 [ #  # ][ #  # ]:          0 :                 if (IsXMLToken(rAttrValue, XML_BOTH))
     806                 :          0 :                     meOrientation = BOTH;
     807 [ #  # ][ #  # ]:          0 :                 else if (IsXMLToken(rAttrValue, XML_ROW))
     808                 :          0 :                     meOrientation = ROW;
     809 [ #  # ][ #  # ]:          0 :                 else if (IsXMLToken(rAttrValue, XML_COLUMN))
     810                 :          0 :                     meOrientation = COLUMN;
     811                 :          0 :             break;
     812                 :            :             case XML_TOK_DATA_PILOT_GRAND_TOTAL_ATTR_DISPLAY_NAME:
     813                 :            :             case XML_TOK_DATA_PILOT_GRAND_TOTAL_ATTR_DISPLAY_NAME_EXT:
     814                 :          0 :                 maDisplayName = rAttrValue;
     815                 :          0 :             break;
     816                 :            :             default:
     817                 :            :                 ;
     818                 :            :         }
     819                 :          0 :     }
     820                 :          0 : }
     821                 :            : 
     822                 :          0 : ScXMLDataPilotGrandTotalContext::~ScXMLDataPilotGrandTotalContext()
     823                 :            : {
     824         [ #  # ]:          0 : }
     825                 :            : 
     826                 :          0 : SvXMLImportContext* ScXMLDataPilotGrandTotalContext::CreateChildContext(
     827                 :            :     sal_uInt16 nPrefix, const ::rtl::OUString& rLocalName, const Reference<XAttributeList>& /*xAttrList*/ )
     828                 :            : {
     829         [ #  # ]:          0 :     return new SvXMLImportContext( GetImport(), nPrefix, rLocalName );
     830                 :            : }
     831                 :            : 
     832                 :          0 : void ScXMLDataPilotGrandTotalContext::EndElement()
     833                 :            : {
     834                 :          0 :     XMLTokenEnum eOrient = XML_NONE;
     835   [ #  #  #  # ]:          0 :     switch (meOrientation)
     836                 :            :     {
     837                 :            :         case BOTH:
     838                 :          0 :             eOrient = XML_BOTH;
     839                 :          0 :         break;
     840                 :            :         case ROW:
     841                 :          0 :             eOrient = XML_ROW;
     842                 :          0 :         break;
     843                 :            :         case COLUMN:
     844                 :          0 :             eOrient = XML_COLUMN;
     845                 :          0 :         break;
     846                 :            :         default:
     847                 :            :             ;
     848                 :            :     }
     849                 :          0 :     mpTableContext->SetGrandTotal(eOrient, mbVisible, maDisplayName);
     850                 :          0 : }
     851                 :            : 
     852                 :          6 : ScXMLSourceCellRangeContext::ScXMLSourceCellRangeContext( ScXMLImport& rImport,
     853                 :            :                                       sal_uInt16 nPrfx,
     854                 :            :                                       const ::rtl::OUString& rLName,
     855                 :            :                                       const ::com::sun::star::uno::Reference<
     856                 :            :                                       ::com::sun::star::xml::sax::XAttributeList>& xAttrList,
     857                 :            :                                         ScXMLDataPilotTableContext* pTempDataPilotTable) :
     858                 :            :     SvXMLImportContext( rImport, nPrfx, rLName ),
     859                 :          6 :     pDataPilotTable(pTempDataPilotTable)
     860                 :            : {
     861 [ +  - ][ +  - ]:          6 :     sal_Int16 nAttrCount = xAttrList.is() ? xAttrList->getLength() : 0;
                 [ +  - ]
     862         [ +  - ]:          6 :     const SvXMLTokenMap& rAttrTokenMap = GetScImport().GetDataPilotTableSourceCellRangeAttrTokenMap();
     863         [ +  + ]:         12 :     for( sal_Int16 i=0; i < nAttrCount; ++i )
     864                 :            :     {
     865 [ +  - ][ +  - ]:          6 :         const rtl::OUString& sAttrName(xAttrList->getNameByIndex( i ));
     866                 :          6 :         rtl::OUString aLocalName;
     867                 :          6 :         sal_uInt16 nPrefix = GetScImport().GetNamespaceMap().GetKeyByAttrName(
     868         [ +  - ]:          6 :                                             sAttrName, &aLocalName );
     869 [ +  - ][ +  - ]:          6 :         const rtl::OUString& sValue(xAttrList->getValueByIndex( i ));
     870                 :            : 
     871         [ +  - ]:          6 :         switch( rAttrTokenMap.Get( nPrefix, aLocalName ) )
              [ +  -  - ]
     872                 :            :         {
     873                 :            :             case XML_TOK_SOURCE_CELL_RANGE_ATTR_CELL_RANGE_ADDRESS :
     874                 :            :             {
     875                 :          6 :                 ScRange aSourceRangeAddress;
     876                 :          6 :                 sal_Int32 nOffset(0);
     877 [ +  - ][ +  - ]:          6 :                 if (ScRangeStringConverter::GetRangeFromString( aSourceRangeAddress, sValue, GetScImport().GetDocument(), ::formula::FormulaGrammar::CONV_OOO, nOffset ))
     878                 :          6 :                     pDataPilotTable->SetSourceCellRangeAddress(aSourceRangeAddress);
     879                 :            :             }
     880                 :          6 :             break;
     881                 :            :             case XML_TOK_SOURCE_CELL_RANGE_ATTR_NAME:
     882                 :          0 :                 pDataPilotTable->SetSourceRangeName(sValue);
     883                 :          0 :             break;
     884                 :            :         }
     885                 :          6 :     }
     886                 :          6 : }
     887                 :            : 
     888                 :          6 : ScXMLSourceCellRangeContext::~ScXMLSourceCellRangeContext()
     889                 :            : {
     890         [ -  + ]:         12 : }
     891                 :            : 
     892                 :          2 : SvXMLImportContext *ScXMLSourceCellRangeContext::CreateChildContext( sal_uInt16 nPrefix,
     893                 :            :                                             const ::rtl::OUString& rLName,
     894                 :            :                                             const ::com::sun::star::uno::Reference<
     895                 :            :                                           ::com::sun::star::xml::sax::XAttributeList>& xAttrList )
     896                 :            : {
     897                 :          2 :     SvXMLImportContext *pContext = 0;
     898                 :            : 
     899                 :          2 :     const SvXMLTokenMap& rTokenMap = GetScImport().GetDataPilotTableSourceCellRangeElemTokenMap();
     900         [ +  - ]:          2 :     switch( rTokenMap.Get( nPrefix, rLName ) )
     901                 :            :     {
     902                 :            :         case XML_TOK_SOURCE_CELL_RANGE_ELEM_FILTER :
     903         [ +  - ]:          2 :             pContext = new ScXMLDPFilterContext(GetScImport(), nPrefix, rLName, xAttrList, pDataPilotTable);
     904                 :          2 :         break;
     905                 :            :     }
     906                 :            : 
     907         [ -  + ]:          2 :     if( !pContext )
     908         [ #  # ]:          0 :         pContext = new SvXMLImportContext( GetImport(), nPrefix, rLName );
     909                 :            : 
     910                 :          2 :     return pContext;
     911                 :            : }
     912                 :            : 
     913                 :          6 : void ScXMLSourceCellRangeContext::EndElement()
     914                 :            : {
     915                 :          6 : }
     916                 :            : 
     917                 :         22 : ScXMLDataPilotFieldContext::ScXMLDataPilotFieldContext( ScXMLImport& rImport,
     918                 :            :                                       sal_uInt16 nPrfx,
     919                 :            :                                       const ::rtl::OUString& rLName,
     920                 :            :                                       const ::com::sun::star::uno::Reference<
     921                 :            :                                       ::com::sun::star::xml::sax::XAttributeList>& xAttrList,
     922                 :            :                                         ScXMLDataPilotTableContext* pTempDataPilotTable) :
     923                 :            :     SvXMLImportContext( rImport, nPrfx, rLName ),
     924                 :            :     pDataPilotTable(pTempDataPilotTable),
     925                 :            :     pDim(NULL),
     926                 :            :     fStart(0.0),
     927                 :            :     fEnd(0.0),
     928                 :            :     fStep(0.0),
     929                 :            :     nUsedHierarchy(1),
     930                 :            :     nGroupPart(0),
     931                 :            :     bSelectedPage(false),
     932                 :            :     bIsGroupField(false),
     933                 :            :     bDateValue(false),
     934                 :            :     bAutoStart(false),
     935                 :            :     bAutoEnd(false),
     936         [ +  - ]:         22 :     mbHasHiddenMember(false)
     937                 :            : {
     938                 :         22 :     sal_Bool bHasName(false);
     939                 :         22 :     sal_Bool bDataLayout(false);
     940                 :         22 :     OUString aDisplayName;
     941 [ +  - ][ +  - ]:         22 :     sal_Int16 nAttrCount = xAttrList.is() ? xAttrList->getLength() : 0;
                 [ +  - ]
     942         [ +  - ]:         22 :     const SvXMLTokenMap& rAttrTokenMap = GetScImport().GetDataPilotFieldAttrTokenMap();
     943         [ +  + ]:        112 :     for( sal_Int16 i=0; i < nAttrCount; ++i )
     944                 :            :     {
     945 [ +  - ][ +  - ]:         90 :         const rtl::OUString& sAttrName(xAttrList->getNameByIndex( i ));
     946                 :         90 :         rtl::OUString aLocalName;
     947                 :         90 :         sal_uInt16 nPrefix = GetScImport().GetNamespaceMap().GetKeyByAttrName(
     948         [ +  - ]:         90 :                                             sAttrName, &aLocalName );
     949 [ +  - ][ +  - ]:         90 :         const rtl::OUString& sValue(xAttrList->getValueByIndex( i ));
     950                 :            : 
     951 [ +  - ][ +  -  :         90 :         switch( rAttrTokenMap.Get( nPrefix, aLocalName ) )
          +  +  +  -  +  
                      - ]
     952                 :            :         {
     953                 :            :             case XML_TOK_DATA_PILOT_FIELD_ATTR_SOURCE_FIELD_NAME :
     954                 :            :             {
     955                 :         22 :                 sName = sValue;
     956                 :         22 :                 bHasName = sal_True;
     957                 :            :             }
     958                 :         22 :             break;
     959                 :            :             case XML_TOK_DATA_PILOT_FIELD_ATTR_DISPLAY_NAME:
     960                 :            :             case XML_TOK_DATA_PILOT_FIELD_ATTR_DISPLAY_NAME_EXT:
     961                 :            :             {
     962                 :          0 :                 aDisplayName = sValue;
     963                 :            :             }
     964                 :          0 :             break;
     965                 :            :             case XML_TOK_DATA_PILOT_FIELD_ATTR_IS_DATA_LAYOUT_FIELD :
     966                 :            :             {
     967         [ +  - ]:          2 :                 bDataLayout = IsXMLToken(sValue, XML_TRUE);
     968                 :            :             }
     969                 :          2 :             break;
     970                 :            :             case XML_TOK_DATA_PILOT_FIELD_ATTR_FUNCTION :
     971                 :            :             {
     972         [ +  - ]:         22 :                 nFunction = (sal_Int16) ScXMLConverter::GetFunctionFromString( sValue );
     973                 :            :             }
     974                 :         22 :             break;
     975                 :            :             case XML_TOK_DATA_PILOT_FIELD_ATTR_ORIENTATION :
     976                 :            :             {
     977         [ +  - ]:         22 :                 nOrientation = (sal_Int16) ScXMLConverter::GetOrientationFromString( sValue );
     978                 :            :             }
     979                 :         22 :             break;
     980                 :            :             case XML_TOK_DATA_PILOT_FIELD_ATTR_SELECTED_PAGE :
     981                 :            :             {
     982                 :          0 :                 sSelectedPage = sValue;
     983                 :          0 :                 bSelectedPage = sal_True;
     984                 :            :             }
     985                 :          0 :             break;
     986                 :            :             case XML_TOK_DATA_PILOT_FIELD_ATTR_USED_HIERARCHY :
     987                 :            :             {
     988                 :         22 :                 nUsedHierarchy = sValue.toInt32();
     989                 :            :             }
     990                 :         22 :             break;
     991                 :            :         }
     992                 :         90 :     }
     993         [ +  - ]:         22 :     if (bHasName)
     994                 :            :     {
     995 [ +  - ][ +  - ]:         22 :         pDim = new ScDPSaveDimension(String(sName), bDataLayout);
         [ +  - ][ +  - ]
                 [ +  - ]
     996         [ -  + ]:         22 :         if (!aDisplayName.isEmpty())
     997         [ #  # ]:          0 :             pDim->SetLayoutName(aDisplayName);
     998                 :         22 :     }
     999                 :         22 : }
    1000                 :            : 
    1001                 :         22 : ScXMLDataPilotFieldContext::~ScXMLDataPilotFieldContext()
    1002                 :            : {
    1003         [ -  + ]:         44 : }
    1004                 :            : 
    1005                 :         22 : SvXMLImportContext *ScXMLDataPilotFieldContext::CreateChildContext( sal_uInt16 nPrefix,
    1006                 :            :                                             const ::rtl::OUString& rLName,
    1007                 :            :                                             const ::com::sun::star::uno::Reference<
    1008                 :            :                                           ::com::sun::star::xml::sax::XAttributeList>& xAttrList )
    1009                 :            : {
    1010                 :         22 :     SvXMLImportContext *pContext = 0;
    1011                 :            : 
    1012                 :         22 :     const SvXMLTokenMap& rTokenMap = GetScImport().GetDataPilotFieldElemTokenMap();
    1013   [ +  -  -  - ]:         22 :     switch( rTokenMap.Get( nPrefix, rLName ) )
    1014                 :            :     {
    1015                 :            :         case XML_TOK_DATA_PILOT_FIELD_ELEM_DATA_PILOT_LEVEL :
    1016         [ +  - ]:         22 :             pContext = new ScXMLDataPilotLevelContext(GetScImport(), nPrefix, rLName, xAttrList, this);
    1017                 :         22 :         break;
    1018                 :            :         case XML_TOK_DATA_PILOT_FIELD_ELEM_DATA_PILOT_REFERENCE :
    1019         [ #  # ]:          0 :             pContext = new ScXMLDataPilotFieldReferenceContext(GetScImport(), nPrefix, rLName, xAttrList, this);
    1020                 :          0 :         break;
    1021                 :            :         case XML_TOK_DATA_PILOT_FIELD_ELEM_DATA_PILOT_GROUPS :
    1022         [ #  # ]:          0 :             pContext = new ScXMLDataPilotGroupsContext(GetScImport(), nPrefix, rLName, xAttrList, this);
    1023                 :          0 :         break;
    1024                 :            :     }
    1025                 :            : 
    1026         [ -  + ]:         22 :     if( !pContext )
    1027         [ #  # ]:          0 :         pContext = new SvXMLImportContext( GetImport(), nPrefix, rLName );
    1028                 :            : 
    1029                 :         22 :     return pContext;
    1030                 :            : }
    1031                 :            : 
    1032                 :         40 : void ScXMLDataPilotFieldContext::AddMember(ScDPSaveMember* pMember)
    1033                 :            : {
    1034         [ +  - ]:         40 :     if (pDim)
    1035                 :            :     {
    1036                 :         40 :         pDim->AddMember(pMember);
    1037         [ -  + ]:         40 :         if (!pMember->GetIsVisible())
    1038                 :            :             // This member is hidden.
    1039                 :          0 :             mbHasHiddenMember = true;
    1040                 :            :     }
    1041                 :            :     else
    1042         [ #  # ]:          0 :         delete pMember;
    1043                 :         40 : }
    1044                 :            : 
    1045                 :          0 : void ScXMLDataPilotFieldContext::SetSubTotalName(const OUString& rName)
    1046                 :            : {
    1047         [ #  # ]:          0 :     if (pDim)
    1048                 :          0 :         pDim->SetSubtotalName(rName);
    1049                 :          0 : }
    1050                 :            : 
    1051                 :          0 : void ScXMLDataPilotFieldContext::AddGroup(const ::std::vector<rtl::OUString>& rMembers, const rtl::OUString& rName)
    1052                 :            : {
    1053         [ #  # ]:          0 :     ScXMLDataPilotGroup aGroup;
    1054         [ #  # ]:          0 :     aGroup.aMembers = rMembers;
    1055                 :          0 :     aGroup.aName = rName;
    1056         [ #  # ]:          0 :     aGroups.push_back(aGroup);
    1057                 :          0 : }
    1058                 :            : 
    1059                 :         22 : void ScXMLDataPilotFieldContext::EndElement()
    1060                 :            : {
    1061         [ +  - ]:         22 :     if (pDim)
    1062                 :            :     {
    1063                 :         22 :         pDim->SetUsedHierarchy(nUsedHierarchy);
    1064                 :         22 :         pDim->SetFunction(nFunction);
    1065                 :         22 :         pDim->SetOrientation(nOrientation);
    1066         [ -  + ]:         22 :         if (bSelectedPage)
    1067                 :            :         {
    1068                 :          0 :             pDim->SetCurrentPage(&sSelectedPage);
    1069                 :            :         }
    1070                 :         22 :         pDataPilotTable->AddDimension(pDim);
    1071         [ -  + ]:         22 :         if (bIsGroupField)
    1072                 :            :         {
    1073         [ #  # ]:          0 :             ScDPNumGroupInfo aInfo;
    1074                 :          0 :             aInfo.mbEnable = true;
    1075                 :          0 :             aInfo.mbDateValues = bDateValue;
    1076                 :          0 :             aInfo.mbAutoStart = bAutoStart;
    1077                 :          0 :             aInfo.mbAutoEnd = bAutoEnd;
    1078                 :          0 :             aInfo.mfStart = fStart;
    1079                 :          0 :             aInfo.mfEnd = fEnd;
    1080                 :          0 :             aInfo.mfStep = fStep;
    1081         [ #  # ]:          0 :             if (!sGroupSource.isEmpty())
    1082                 :            :             {
    1083         [ #  # ]:          0 :                 ScDPSaveGroupDimension aGroupDim(sGroupSource, sName);
    1084         [ #  # ]:          0 :                 if (nGroupPart)
    1085         [ #  # ]:          0 :                     aGroupDim.SetDateInfo(aInfo, nGroupPart);
    1086                 :            :                 else
    1087                 :            :                 {
    1088         [ #  # ]:          0 :                     ::std::vector<ScXMLDataPilotGroup>::const_iterator aItr(aGroups.begin());
    1089         [ #  # ]:          0 :                     ::std::vector<ScXMLDataPilotGroup>::const_iterator aEndItr(aGroups.end());
    1090 [ #  # ][ #  # ]:          0 :                     while (aItr != aEndItr)
    1091                 :            :                     {
    1092         [ #  # ]:          0 :                         ScDPSaveGroupItem aItem(aItr->aName);
    1093                 :          0 :                         ::std::vector<rtl::OUString>::const_iterator aMembersItr(aItr->aMembers.begin());
    1094                 :          0 :                         ::std::vector<rtl::OUString>::const_iterator aMembersEndItr(aItr->aMembers.end());
    1095 [ #  # ][ #  # ]:          0 :                         while (aMembersItr != aMembersEndItr)
    1096                 :            :                         {
    1097         [ #  # ]:          0 :                             aItem.AddElement(*aMembersItr);
    1098                 :          0 :                             ++aMembersItr;
    1099                 :            :                         }
    1100                 :          0 :                         ++aItr;
    1101         [ #  # ]:          0 :                         aGroupDim.AddGroupItem(aItem);
    1102         [ #  # ]:          0 :                     }
    1103                 :            :                 }
    1104 [ #  # ][ #  # ]:          0 :                 pDataPilotTable->AddGroupDim(aGroupDim);
    1105                 :            :             }
    1106                 :            :             else //NumGroup
    1107                 :            :             {
    1108         [ #  # ]:          0 :                 ScDPSaveNumGroupDimension aNumGroupDim(sName, aInfo);
    1109         [ #  # ]:          0 :                 if (nGroupPart)
    1110         [ #  # ]:          0 :                     aNumGroupDim.SetDateInfo(aInfo, nGroupPart);
    1111 [ #  # ][ #  # ]:          0 :                 pDataPilotTable->AddGroupDim(aNumGroupDim);
    1112                 :            :             }
    1113                 :            :         }
    1114                 :            :     }
    1115                 :         22 : }
    1116                 :            : 
    1117                 :          0 : ScXMLDataPilotFieldReferenceContext::ScXMLDataPilotFieldReferenceContext( ScXMLImport& rImport, sal_uInt16 nPrfx,
    1118                 :            :                         const ::rtl::OUString& rLName,
    1119                 :            :                         const uno::Reference<xml::sax::XAttributeList>& xAttrList,
    1120                 :            :                         ScXMLDataPilotFieldContext* pDataPilotField) :
    1121                 :          0 :     SvXMLImportContext( rImport, nPrfx, rLName )
    1122                 :            : {
    1123                 :          0 :     sheet::DataPilotFieldReference aReference;
    1124                 :            : 
    1125 [ #  # ][ #  # ]:          0 :     sal_Int16 nAttrCount = xAttrList.is() ? xAttrList->getLength() : 0;
                 [ #  # ]
    1126         [ #  # ]:          0 :     for( sal_Int16 i=0; i < nAttrCount; i++ )
    1127                 :            :     {
    1128 [ #  # ][ #  # ]:          0 :         rtl::OUString sAttrName(xAttrList->getNameByIndex( i ));
    1129                 :          0 :         rtl::OUString aLocalName;
    1130                 :          0 :         sal_uInt16 nPrefix = GetScImport().GetNamespaceMap().GetKeyByAttrName(
    1131         [ #  # ]:          0 :                                             sAttrName, &aLocalName );
    1132 [ #  # ][ #  # ]:          0 :         rtl::OUString sValue(xAttrList->getValueByIndex( i ));
    1133                 :            : 
    1134         [ #  # ]:          0 :         if ( nPrefix == XML_NAMESPACE_TABLE )
    1135                 :            :         {
    1136 [ #  # ][ #  # ]:          0 :             if (IsXMLToken(aLocalName, XML_TYPE))
    1137                 :            :             {
    1138 [ #  # ][ #  # ]:          0 :                 if (IsXMLToken(sValue, XML_NONE))
    1139                 :          0 :                     aReference.ReferenceType = sheet::DataPilotFieldReferenceType::NONE;
    1140 [ #  # ][ #  # ]:          0 :                 else if (IsXMLToken(sValue, XML_MEMBER_DIFFERENCE))
    1141                 :          0 :                     aReference.ReferenceType = sheet::DataPilotFieldReferenceType::ITEM_DIFFERENCE;
    1142 [ #  # ][ #  # ]:          0 :                 else if (IsXMLToken(sValue, XML_MEMBER_PERCENTAGE))
    1143                 :          0 :                     aReference.ReferenceType = sheet::DataPilotFieldReferenceType::ITEM_PERCENTAGE;
    1144 [ #  # ][ #  # ]:          0 :                 else if (IsXMLToken(sValue, XML_MEMBER_PERCENTAGE_DIFFERENCE))
    1145                 :          0 :                     aReference.ReferenceType = sheet::DataPilotFieldReferenceType::ITEM_PERCENTAGE_DIFFERENCE;
    1146 [ #  # ][ #  # ]:          0 :                 else if (IsXMLToken(sValue, XML_RUNNING_TOTAL))
    1147                 :          0 :                     aReference.ReferenceType = sheet::DataPilotFieldReferenceType::RUNNING_TOTAL;
    1148 [ #  # ][ #  # ]:          0 :                 else if (IsXMLToken(sValue, XML_ROW_PERCENTAGE))
    1149                 :          0 :                     aReference.ReferenceType = sheet::DataPilotFieldReferenceType::ROW_PERCENTAGE;
    1150 [ #  # ][ #  # ]:          0 :                 else if (IsXMLToken(sValue, XML_COLUMN_PERCENTAGE))
    1151                 :          0 :                     aReference.ReferenceType = sheet::DataPilotFieldReferenceType::COLUMN_PERCENTAGE;
    1152 [ #  # ][ #  # ]:          0 :                 else if (IsXMLToken(sValue, XML_TOTAL_PERCENTAGE))
    1153                 :          0 :                     aReference.ReferenceType = sheet::DataPilotFieldReferenceType::TOTAL_PERCENTAGE;
    1154 [ #  # ][ #  # ]:          0 :                 else if (IsXMLToken(sValue, XML_INDEX))
    1155                 :          0 :                     aReference.ReferenceType = sheet::DataPilotFieldReferenceType::INDEX;
    1156                 :            :             }
    1157 [ #  # ][ #  # ]:          0 :             else if (IsXMLToken(aLocalName, XML_FIELD_NAME))
    1158                 :            :             {
    1159                 :          0 :                 aReference.ReferenceField = sValue;
    1160                 :            :             }
    1161 [ #  # ][ #  # ]:          0 :             else if (IsXMLToken(aLocalName, XML_MEMBER_TYPE))
    1162                 :            :             {
    1163 [ #  # ][ #  # ]:          0 :                 if (IsXMLToken(sValue, XML_NAMED))
    1164                 :          0 :                     aReference.ReferenceItemType = sheet::DataPilotFieldReferenceItemType::NAMED;
    1165 [ #  # ][ #  # ]:          0 :                 else if (IsXMLToken(sValue, XML_PREVIOUS))
    1166                 :          0 :                     aReference.ReferenceItemType = sheet::DataPilotFieldReferenceItemType::PREVIOUS;
    1167 [ #  # ][ #  # ]:          0 :                 else if (IsXMLToken(sValue, XML_NEXT))
    1168                 :          0 :                     aReference.ReferenceItemType = sheet::DataPilotFieldReferenceItemType::NEXT;
    1169                 :            :             }
    1170 [ #  # ][ #  # ]:          0 :             else if (IsXMLToken(aLocalName, XML_MEMBER_NAME))
    1171                 :            :             {
    1172                 :          0 :                 aReference.ReferenceItemName = sValue;
    1173                 :            :             }
    1174                 :            :         }
    1175                 :          0 :     }
    1176         [ #  # ]:          0 :     pDataPilotField->SetFieldReference(aReference);
    1177                 :          0 : }
    1178                 :            : 
    1179                 :          0 : ScXMLDataPilotFieldReferenceContext::~ScXMLDataPilotFieldReferenceContext()
    1180                 :            : {
    1181         [ #  # ]:          0 : }
    1182                 :            : 
    1183                 :         22 : ScXMLDataPilotLevelContext::ScXMLDataPilotLevelContext( ScXMLImport& rImport,
    1184                 :            :                                       sal_uInt16 nPrfx,
    1185                 :            :                                       const ::rtl::OUString& rLName,
    1186                 :            :                                       const ::com::sun::star::uno::Reference<
    1187                 :            :                                       ::com::sun::star::xml::sax::XAttributeList>& xAttrList,
    1188                 :            :                                         ScXMLDataPilotFieldContext* pTempDataPilotField) :
    1189                 :            :     SvXMLImportContext( rImport, nPrfx, rLName ),
    1190                 :         22 :     pDataPilotField(pTempDataPilotField)
    1191                 :            : {
    1192 [ +  - ][ +  - ]:         22 :     sal_Int16 nAttrCount = xAttrList.is() ? xAttrList->getLength() : 0;
                 [ +  - ]
    1193         [ +  - ]:         22 :     const SvXMLTokenMap& rAttrTokenMap = GetScImport().GetDataPilotLevelAttrTokenMap();
    1194         [ +  + ]:         32 :     for( sal_Int16 i=0; i < nAttrCount; ++i )
    1195                 :            :     {
    1196 [ +  - ][ +  - ]:         10 :         const rtl::OUString& sAttrName(xAttrList->getNameByIndex( i ));
    1197                 :         10 :         rtl::OUString aLocalName;
    1198                 :         10 :         sal_uInt16 nPrefix = GetScImport().GetNamespaceMap().GetKeyByAttrName(
    1199         [ +  - ]:         10 :                                             sAttrName, &aLocalName );
    1200 [ +  - ][ +  - ]:         10 :         const rtl::OUString& sValue(xAttrList->getValueByIndex( i ));
    1201                 :            : 
    1202 [ +  - ][ +  - ]:         10 :         switch( rAttrTokenMap.Get( nPrefix, aLocalName ) )
    1203                 :            :         {
    1204                 :            :             case XML_TOK_DATA_PILOT_LEVEL_ATTR_SHOW_EMPTY :
    1205                 :            :             {
    1206 [ +  - ][ +  - ]:         10 :                 pDataPilotField->SetShowEmpty(IsXMLToken(sValue, XML_TRUE));
    1207                 :            :             }
    1208                 :         10 :             break;
    1209                 :            :         }
    1210                 :         10 :     }
    1211                 :         22 : }
    1212                 :            : 
    1213                 :         22 : ScXMLDataPilotLevelContext::~ScXMLDataPilotLevelContext()
    1214                 :            : {
    1215         [ -  + ]:         44 : }
    1216                 :            : 
    1217                 :         38 : SvXMLImportContext *ScXMLDataPilotLevelContext::CreateChildContext( sal_uInt16 nPrefix,
    1218                 :            :                                             const ::rtl::OUString& rLName,
    1219                 :            :                                             const ::com::sun::star::uno::Reference<
    1220                 :            :                                           ::com::sun::star::xml::sax::XAttributeList>& xAttrList )
    1221                 :            : {
    1222                 :         38 :     SvXMLImportContext *pContext = 0;
    1223                 :            : 
    1224                 :         38 :     const SvXMLTokenMap& rTokenMap = GetScImport().GetDataPilotLevelElemTokenMap();
    1225   [ +  +  +  +  :         38 :     switch( rTokenMap.Get( nPrefix, rLName ) )
                   +  - ]
    1226                 :            :     {
    1227                 :            :         case XML_TOK_DATA_PILOT_LEVEL_ELEM_DATA_PILOT_SUBTOTALS :
    1228         [ +  - ]:          6 :             pContext = new ScXMLDataPilotSubTotalsContext(GetScImport(), nPrefix, rLName, xAttrList, pDataPilotField);
    1229                 :          6 :         break;
    1230                 :            :         case XML_TOK_DATA_PILOT_LEVEL_ELEM_DATA_PILOT_MEMBERS :
    1231         [ +  - ]:          8 :             pContext = new ScXMLDataPilotMembersContext(GetScImport(), nPrefix, rLName, xAttrList, pDataPilotField);
    1232                 :          8 :         break;
    1233                 :            :         case XML_TOK_DATA_PILOT_FIELD_ELEM_DATA_PILOT_DISPLAY_INFO :
    1234         [ +  - ]:          8 :             pContext = new ScXMLDataPilotDisplayInfoContext(GetScImport(), nPrefix, rLName, xAttrList, pDataPilotField);
    1235                 :          8 :         break;
    1236                 :            :         case XML_TOK_DATA_PILOT_FIELD_ELEM_DATA_PILOT_SORT_INFO :
    1237         [ +  - ]:          8 :             pContext = new ScXMLDataPilotSortInfoContext(GetScImport(), nPrefix, rLName, xAttrList, pDataPilotField);
    1238                 :          8 :         break;
    1239                 :            :         case XML_TOK_DATA_PILOT_FIELD_ELEM_DATA_PILOT_LAYOUT_INFO :
    1240         [ +  - ]:          8 :             pContext = new ScXMLDataPilotLayoutInfoContext(GetScImport(), nPrefix, rLName, xAttrList, pDataPilotField);
    1241                 :          8 :         break;
    1242                 :            :     }
    1243                 :            : 
    1244         [ -  + ]:         38 :     if( !pContext )
    1245         [ #  # ]:          0 :         pContext = new SvXMLImportContext( GetImport(), nPrefix, rLName );
    1246                 :            : 
    1247                 :         38 :     return pContext;
    1248                 :            : }
    1249                 :            : 
    1250                 :         22 : void ScXMLDataPilotLevelContext::EndElement()
    1251                 :            : {
    1252                 :         22 : }
    1253                 :            : 
    1254                 :          8 : ScXMLDataPilotDisplayInfoContext::ScXMLDataPilotDisplayInfoContext( ScXMLImport& rImport, sal_uInt16 nPrfx,
    1255                 :            :                         const ::rtl::OUString& rLName,
    1256                 :            :                         const ::com::sun::star::uno::Reference<
    1257                 :            :                         ::com::sun::star::xml::sax::XAttributeList>& xAttrList,
    1258                 :            :                         ScXMLDataPilotFieldContext* pDataPilotField) :
    1259                 :          8 :     SvXMLImportContext( rImport, nPrfx, rLName )
    1260                 :            : {
    1261                 :          8 :     sheet::DataPilotFieldAutoShowInfo aInfo;
    1262                 :            : 
    1263 [ +  - ][ +  - ]:          8 :     sal_Int16 nAttrCount = xAttrList.is() ? xAttrList->getLength() : 0;
                 [ +  - ]
    1264         [ +  + ]:         40 :     for( sal_Int16 i=0; i < nAttrCount; i++ )
    1265                 :            :     {
    1266 [ +  - ][ +  - ]:         32 :         rtl::OUString sAttrName(xAttrList->getNameByIndex( i ));
    1267                 :         32 :         rtl::OUString aLocalName;
    1268                 :         32 :         sal_uInt16 nPrefix = GetScImport().GetNamespaceMap().GetKeyByAttrName(
    1269         [ +  - ]:         32 :                                             sAttrName, &aLocalName );
    1270 [ +  - ][ +  - ]:         32 :         rtl::OUString sValue(xAttrList->getValueByIndex( i ));
    1271                 :            : 
    1272         [ +  - ]:         32 :         if ( nPrefix == XML_NAMESPACE_TABLE )
    1273                 :            :         {
    1274 [ +  - ][ +  + ]:         32 :             if (IsXMLToken(aLocalName, XML_ENABLED))
    1275                 :            :             {
    1276 [ +  - ][ -  + ]:          8 :                 if (IsXMLToken(sValue, XML_TRUE))
    1277                 :          0 :                     aInfo.IsEnabled = sal_True;
    1278                 :            :                 else
    1279                 :          8 :                     aInfo.IsEnabled = false;
    1280                 :            :             }
    1281 [ +  - ][ +  + ]:         24 :             else if (IsXMLToken(aLocalName, XML_DISPLAY_MEMBER_MODE))
    1282                 :            :             {
    1283 [ +  - ][ +  - ]:          8 :                 if (IsXMLToken(sValue, XML_FROM_TOP))
    1284                 :          8 :                     aInfo.ShowItemsMode = sheet::DataPilotFieldShowItemsMode::FROM_TOP;
    1285 [ #  # ][ #  # ]:          0 :                 else if (IsXMLToken(sValue, XML_FROM_BOTTOM))
    1286                 :          0 :                     aInfo.ShowItemsMode = sheet::DataPilotFieldShowItemsMode::FROM_BOTTOM;
    1287                 :            :             }
    1288 [ +  - ][ +  + ]:         16 :             else if (IsXMLToken(aLocalName, XML_MEMBER_COUNT))
    1289                 :            :             {
    1290                 :          8 :                 aInfo.ItemCount = sValue.toInt32();
    1291                 :            :             }
    1292 [ +  - ][ +  - ]:          8 :             else if (IsXMLToken(aLocalName, XML_DATA_FIELD))
    1293                 :            :             {
    1294                 :          8 :                 aInfo.DataField = sValue;
    1295                 :            :             }
    1296                 :            :         }
    1297                 :         32 :     }
    1298         [ +  - ]:          8 :     pDataPilotField->SetAutoShowInfo(aInfo);
    1299                 :          8 : }
    1300                 :            : 
    1301                 :          8 : ScXMLDataPilotDisplayInfoContext::~ScXMLDataPilotDisplayInfoContext()
    1302                 :            : {
    1303         [ -  + ]:         16 : }
    1304                 :            : 
    1305                 :          8 : ScXMLDataPilotSortInfoContext::ScXMLDataPilotSortInfoContext( ScXMLImport& rImport, sal_uInt16 nPrfx,
    1306                 :            :                         const ::rtl::OUString& rLName,
    1307                 :            :                         const ::com::sun::star::uno::Reference<
    1308                 :            :                         ::com::sun::star::xml::sax::XAttributeList>& xAttrList,
    1309                 :            :                         ScXMLDataPilotFieldContext* pDataPilotField) :
    1310                 :          8 :     SvXMLImportContext( rImport, nPrfx, rLName )
    1311                 :            : {
    1312                 :          8 :     sheet::DataPilotFieldSortInfo aInfo;
    1313                 :            : 
    1314 [ +  - ][ +  - ]:          8 :     sal_Int16 nAttrCount = xAttrList.is() ? xAttrList->getLength() : 0;
                 [ +  - ]
    1315         [ +  + ]:         24 :     for( sal_Int16 i=0; i < nAttrCount; i++ )
    1316                 :            :     {
    1317 [ +  - ][ +  - ]:         16 :         rtl::OUString sAttrName(xAttrList->getNameByIndex( i ));
    1318                 :         16 :         rtl::OUString aLocalName;
    1319                 :         16 :         sal_uInt16 nPrefix = GetScImport().GetNamespaceMap().GetKeyByAttrName(
    1320         [ +  - ]:         16 :                                             sAttrName, &aLocalName );
    1321 [ +  - ][ +  - ]:         16 :         rtl::OUString sValue(xAttrList->getValueByIndex( i ));
    1322                 :            : 
    1323         [ +  - ]:         16 :         if ( nPrefix == XML_NAMESPACE_TABLE )
    1324                 :            :         {
    1325 [ +  - ][ +  + ]:         16 :             if (IsXMLToken(aLocalName, XML_ORDER))
    1326                 :            :             {
    1327 [ +  - ][ +  - ]:          8 :                 if (IsXMLToken(sValue, XML_ASCENDING))
    1328                 :          8 :                     aInfo.IsAscending = sal_True;
    1329 [ #  # ][ #  # ]:          0 :                 else if (IsXMLToken(sValue, XML_DESCENDING))
    1330                 :          0 :                     aInfo.IsAscending = false;
    1331                 :            :             }
    1332 [ +  - ][ +  - ]:          8 :             else if (IsXMLToken(aLocalName, XML_SORT_MODE))
    1333                 :            :             {
    1334 [ +  - ][ -  + ]:          8 :                 if (IsXMLToken(sValue, XML_NONE))
    1335                 :          0 :                     aInfo.Mode = sheet::DataPilotFieldSortMode::NONE;
    1336 [ +  - ][ -  + ]:          8 :                 else if (IsXMLToken(sValue, XML_MANUAL))
    1337                 :          0 :                     aInfo.Mode = sheet::DataPilotFieldSortMode::MANUAL;
    1338 [ +  - ][ +  - ]:          8 :                 else if (IsXMLToken(sValue, XML_NAME))
    1339                 :          8 :                     aInfo.Mode = sheet::DataPilotFieldSortMode::NAME;
    1340 [ #  # ][ #  # ]:          0 :                 else if (IsXMLToken(sValue, XML_DATA))
    1341                 :          0 :                     aInfo.Mode = sheet::DataPilotFieldSortMode::DATA;
    1342                 :            :             }
    1343 [ #  # ][ #  # ]:          0 :             else if (IsXMLToken(aLocalName, XML_DATA_FIELD))
    1344                 :          0 :                 aInfo.Field = sValue;
    1345                 :            :         }
    1346                 :         16 :     }
    1347         [ +  - ]:          8 :     pDataPilotField->SetSortInfo(aInfo);
    1348                 :          8 : }
    1349                 :            : 
    1350                 :          8 : ScXMLDataPilotSortInfoContext::~ScXMLDataPilotSortInfoContext()
    1351                 :            : {
    1352         [ -  + ]:         16 : }
    1353                 :            : 
    1354                 :          8 : ScXMLDataPilotLayoutInfoContext::ScXMLDataPilotLayoutInfoContext( ScXMLImport& rImport, sal_uInt16 nPrfx,
    1355                 :            :                         const ::rtl::OUString& rLName,
    1356                 :            :                         const ::com::sun::star::uno::Reference<
    1357                 :            :                         ::com::sun::star::xml::sax::XAttributeList>& xAttrList,
    1358                 :            :                         ScXMLDataPilotFieldContext* pDataPilotField) :
    1359                 :          8 :     SvXMLImportContext( rImport, nPrfx, rLName )
    1360                 :            : {
    1361                 :          8 :     sheet::DataPilotFieldLayoutInfo aInfo;
    1362                 :            : 
    1363 [ +  - ][ +  - ]:          8 :     sal_Int16 nAttrCount = xAttrList.is() ? xAttrList->getLength() : 0;
                 [ +  - ]
    1364         [ +  + ]:         24 :     for( sal_Int16 i=0; i < nAttrCount; i++ )
    1365                 :            :     {
    1366 [ +  - ][ +  - ]:         16 :         rtl::OUString sAttrName(xAttrList->getNameByIndex( i ));
    1367                 :         16 :         rtl::OUString aLocalName;
    1368                 :         16 :         sal_uInt16 nPrefix = GetScImport().GetNamespaceMap().GetKeyByAttrName(
    1369         [ +  - ]:         16 :                                             sAttrName, &aLocalName );
    1370 [ +  - ][ +  - ]:         16 :         rtl::OUString sValue(xAttrList->getValueByIndex( i ));
    1371                 :            : 
    1372         [ +  - ]:         16 :         if ( nPrefix == XML_NAMESPACE_TABLE )
    1373                 :            :         {
    1374 [ +  - ][ +  + ]:         16 :             if (IsXMLToken(aLocalName, XML_ADD_EMPTY_LINES))
    1375                 :            :             {
    1376 [ +  - ][ -  + ]:          8 :                 if (IsXMLToken(sValue, XML_TRUE))
    1377                 :          0 :                     aInfo.AddEmptyLines = sal_True;
    1378                 :            :                 else
    1379                 :          8 :                     aInfo.AddEmptyLines = false;
    1380                 :            :             }
    1381 [ +  - ][ +  - ]:          8 :             else if (IsXMLToken(aLocalName, XML_LAYOUT_MODE))
    1382                 :            :             {
    1383 [ +  - ][ +  - ]:          8 :                 if (IsXMLToken(sValue, XML_TABULAR_LAYOUT))
    1384                 :          8 :                     aInfo.LayoutMode = sheet::DataPilotFieldLayoutMode::TABULAR_LAYOUT;
    1385 [ #  # ][ #  # ]:          0 :                 else if (IsXMLToken(sValue, XML_OUTLINE_SUBTOTALS_TOP))
    1386                 :          0 :                     aInfo.LayoutMode = sheet::DataPilotFieldLayoutMode::OUTLINE_SUBTOTALS_TOP;
    1387 [ #  # ][ #  # ]:          0 :                 else if (IsXMLToken(sValue, XML_OUTLINE_SUBTOTALS_BOTTOM))
    1388                 :          0 :                     aInfo.LayoutMode = sheet::DataPilotFieldLayoutMode::OUTLINE_SUBTOTALS_BOTTOM;
    1389                 :            :             }
    1390                 :            :         }
    1391                 :         16 :     }
    1392         [ +  - ]:          8 :     pDataPilotField->SetLayoutInfo(aInfo);}
    1393                 :            : 
    1394                 :          8 : ScXMLDataPilotLayoutInfoContext::~ScXMLDataPilotLayoutInfoContext()
    1395                 :            : {
    1396         [ -  + ]:         16 : }
    1397                 :            : 
    1398                 :          6 : ScXMLDataPilotSubTotalsContext::ScXMLDataPilotSubTotalsContext( ScXMLImport& rImport,
    1399                 :            :                                       sal_uInt16 nPrfx,
    1400                 :            :                                       const ::rtl::OUString& rLName,
    1401                 :            :                                       const ::com::sun::star::uno::Reference<
    1402                 :            :                                       ::com::sun::star::xml::sax::XAttributeList>& /* xAttrList */,
    1403                 :            :                                         ScXMLDataPilotFieldContext* pTempDataPilotField) :
    1404                 :            :     SvXMLImportContext( rImport, nPrfx, rLName ),
    1405                 :            :     pDataPilotField(pTempDataPilotField),
    1406                 :            :     nFunctionCount(0),
    1407                 :          6 :     pFunctions(NULL)
    1408                 :            : {
    1409                 :            : 
    1410                 :            :     // has no attributes
    1411                 :          6 : }
    1412                 :            : 
    1413                 :          6 : ScXMLDataPilotSubTotalsContext::~ScXMLDataPilotSubTotalsContext()
    1414                 :            : {
    1415         [ -  + ]:         12 : }
    1416                 :            : 
    1417                 :          6 : SvXMLImportContext *ScXMLDataPilotSubTotalsContext::CreateChildContext( sal_uInt16 nPrefix,
    1418                 :            :                                             const ::rtl::OUString& rLName,
    1419                 :            :                                             const ::com::sun::star::uno::Reference<
    1420                 :            :                                           ::com::sun::star::xml::sax::XAttributeList>& xAttrList )
    1421                 :            : {
    1422                 :          6 :     SvXMLImportContext *pContext = 0;
    1423                 :            : 
    1424                 :          6 :     const SvXMLTokenMap& rTokenMap = GetScImport().GetDataPilotSubTotalsElemTokenMap();
    1425         [ +  - ]:          6 :     switch( rTokenMap.Get( nPrefix, rLName ) )
    1426                 :            :     {
    1427                 :            :         case XML_TOK_DATA_PILOT_SUBTOTALS_ELEM_DATA_PILOT_SUBTOTAL :
    1428         [ +  - ]:          6 :             pContext = new ScXMLDataPilotSubTotalContext(GetScImport(), nPrefix, rLName, xAttrList, this);
    1429                 :          6 :         break;
    1430                 :            :     }
    1431                 :            : 
    1432         [ -  + ]:          6 :     if( !pContext )
    1433         [ #  # ]:          0 :         pContext = new SvXMLImportContext( GetImport(), nPrefix, rLName );
    1434                 :            : 
    1435                 :          6 :     return pContext;
    1436                 :            : }
    1437                 :            : 
    1438                 :          6 : void ScXMLDataPilotSubTotalsContext::EndElement()
    1439                 :            : {
    1440                 :          6 :     pDataPilotField->SetSubTotals(pFunctions, nFunctionCount);
    1441         [ -  + ]:          6 :     if (!maDisplayName.isEmpty())
    1442                 :          0 :         pDataPilotField->SetSubTotalName(maDisplayName);
    1443                 :          6 : }
    1444                 :            : 
    1445                 :          6 : void ScXMLDataPilotSubTotalsContext::AddFunction(sal_Int16 nFunction)
    1446                 :            : {
    1447         [ -  + ]:          6 :     if (nFunctionCount)
    1448                 :            :     {
    1449                 :          0 :         ++nFunctionCount;
    1450                 :          0 :         sal_uInt16* pTemp = new sal_uInt16[nFunctionCount];
    1451         [ #  # ]:          0 :         for (sal_Int16 i = 0; i < nFunctionCount - 1; ++i)
    1452                 :          0 :             pTemp[i] = pFunctions[i];
    1453                 :          0 :         pTemp[nFunctionCount - 1] = nFunction;
    1454         [ #  # ]:          0 :         delete[] pFunctions;
    1455                 :          0 :         pFunctions = pTemp;
    1456                 :            :     }
    1457                 :            :     else
    1458                 :            :     {
    1459                 :          6 :         nFunctionCount = 1;
    1460                 :          6 :         pFunctions = new sal_uInt16[nFunctionCount];
    1461                 :          6 :         pFunctions[0] = nFunction;
    1462                 :            :     }
    1463                 :          6 : }
    1464                 :            : 
    1465                 :          0 : void ScXMLDataPilotSubTotalsContext::SetDisplayName(const OUString& rName)
    1466                 :            : {
    1467                 :          0 :     maDisplayName = rName;
    1468                 :          0 : }
    1469                 :            : 
    1470                 :          6 : ScXMLDataPilotSubTotalContext::ScXMLDataPilotSubTotalContext( ScXMLImport& rImport,
    1471                 :            :                                       sal_uInt16 nPrfx,
    1472                 :            :                                       const ::rtl::OUString& rLName,
    1473                 :            :                                       const ::com::sun::star::uno::Reference<
    1474                 :            :                                       ::com::sun::star::xml::sax::XAttributeList>& xAttrList,
    1475                 :            :                                         ScXMLDataPilotSubTotalsContext* pTempDataPilotSubTotals) :
    1476                 :            :     SvXMLImportContext( rImport, nPrfx, rLName ),
    1477                 :          6 :     pDataPilotSubTotals(pTempDataPilotSubTotals)
    1478                 :            : {
    1479 [ +  - ][ +  - ]:          6 :     sal_Int16 nAttrCount = xAttrList.is() ? xAttrList->getLength() : 0;
                 [ +  - ]
    1480         [ +  - ]:          6 :     const SvXMLTokenMap& rAttrTokenMap = GetScImport().GetDataPilotSubTotalAttrTokenMap();
    1481         [ +  + ]:         12 :     for( sal_Int16 i=0; i < nAttrCount; ++i )
    1482                 :            :     {
    1483 [ +  - ][ +  - ]:          6 :         const rtl::OUString& sAttrName(xAttrList->getNameByIndex( i ));
    1484                 :          6 :         rtl::OUString aLocalName;
    1485                 :          6 :         sal_uInt16 nPrefix = GetScImport().GetNamespaceMap().GetKeyByAttrName(
    1486         [ +  - ]:          6 :                                             sAttrName, &aLocalName );
    1487 [ +  - ][ +  - ]:          6 :         const rtl::OUString& sValue(xAttrList->getValueByIndex( i ));
    1488                 :            : 
    1489         [ +  - ]:          6 :         switch( rAttrTokenMap.Get( nPrefix, aLocalName ) )
              [ +  -  - ]
    1490                 :            :         {
    1491                 :            :             case XML_TOK_DATA_PILOT_SUBTOTAL_ATTR_FUNCTION :
    1492                 :            :             {
    1493                 :            :                 pDataPilotSubTotals->AddFunction( sal::static_int_cast<sal_Int16>(
    1494 [ +  - ][ +  - ]:          6 :                                 ScXMLConverter::GetFunctionFromString( sValue ) ) );
    1495                 :            :             }
    1496                 :          6 :             break;
    1497                 :            :             case XML_TOK_DATA_PILOT_SUBTOTAL_ATTR_DISPLAY_NAME:
    1498                 :            :             case XML_TOK_DATA_PILOT_SUBTOTAL_ATTR_DISPLAY_NAME_EXT:
    1499                 :          0 :                 pDataPilotSubTotals->SetDisplayName(sValue);
    1500                 :          0 :             break;
    1501                 :            :         }
    1502                 :          6 :     }
    1503                 :          6 : }
    1504                 :            : 
    1505                 :          6 : ScXMLDataPilotSubTotalContext::~ScXMLDataPilotSubTotalContext()
    1506                 :            : {
    1507         [ -  + ]:         12 : }
    1508                 :            : 
    1509                 :          0 : SvXMLImportContext *ScXMLDataPilotSubTotalContext::CreateChildContext( sal_uInt16 nPrefix,
    1510                 :            :                                             const ::rtl::OUString& rLName,
    1511                 :            :                                             const ::com::sun::star::uno::Reference<
    1512                 :            :                                         ::com::sun::star::xml::sax::XAttributeList>& /* xAttrList */ )
    1513                 :            : {
    1514                 :          0 :     SvXMLImportContext *pContext = 0;
    1515                 :            : 
    1516         [ #  # ]:          0 :     if( !pContext )
    1517         [ #  # ]:          0 :         pContext = new SvXMLImportContext( GetImport(), nPrefix, rLName );
    1518                 :            : 
    1519                 :          0 :     return pContext;
    1520                 :            : }
    1521                 :            : 
    1522                 :          6 : void ScXMLDataPilotSubTotalContext::EndElement()
    1523                 :            : {
    1524                 :          6 : }
    1525                 :            : 
    1526                 :          8 : ScXMLDataPilotMembersContext::ScXMLDataPilotMembersContext( ScXMLImport& rImport,
    1527                 :            :                                       sal_uInt16 nPrfx,
    1528                 :            :                                       const ::rtl::OUString& rLName,
    1529                 :            :                                       const ::com::sun::star::uno::Reference<
    1530                 :            :                                       ::com::sun::star::xml::sax::XAttributeList>& /* xAttrList */,
    1531                 :            :                                         ScXMLDataPilotFieldContext* pTempDataPilotField) :
    1532                 :            :     SvXMLImportContext( rImport, nPrfx, rLName ),
    1533                 :          8 :     pDataPilotField(pTempDataPilotField)
    1534                 :            : {
    1535                 :            :     // has no attributes
    1536                 :          8 : }
    1537                 :            : 
    1538                 :          8 : ScXMLDataPilotMembersContext::~ScXMLDataPilotMembersContext()
    1539                 :            : {
    1540         [ -  + ]:         16 : }
    1541                 :            : 
    1542                 :         40 : SvXMLImportContext *ScXMLDataPilotMembersContext::CreateChildContext( sal_uInt16 nPrefix,
    1543                 :            :                                             const ::rtl::OUString& rLName,
    1544                 :            :                                             const ::com::sun::star::uno::Reference<
    1545                 :            :                                           ::com::sun::star::xml::sax::XAttributeList>& xAttrList )
    1546                 :            : {
    1547                 :         40 :     SvXMLImportContext *pContext = 0;
    1548                 :            : 
    1549                 :         40 :     const SvXMLTokenMap& rTokenMap = GetScImport().GetDataPilotMembersElemTokenMap();
    1550         [ +  - ]:         40 :     switch( rTokenMap.Get( nPrefix, rLName ) )
    1551                 :            :     {
    1552                 :            :         case XML_TOK_DATA_PILOT_MEMBERS_ELEM_DATA_PILOT_MEMBER :
    1553         [ +  - ]:         40 :             pContext = new ScXMLDataPilotMemberContext(GetScImport(), nPrefix, rLName, xAttrList, pDataPilotField);
    1554                 :         40 :         break;
    1555                 :            :     }
    1556                 :            : 
    1557         [ -  + ]:         40 :     if( !pContext )
    1558         [ #  # ]:          0 :         pContext = new SvXMLImportContext( GetImport(), nPrefix, rLName );
    1559                 :            : 
    1560                 :         40 :     return pContext;
    1561                 :            : }
    1562                 :            : 
    1563                 :          8 : void ScXMLDataPilotMembersContext::EndElement()
    1564                 :            : {
    1565                 :          8 : }
    1566                 :            : 
    1567                 :         40 : ScXMLDataPilotMemberContext::ScXMLDataPilotMemberContext( ScXMLImport& rImport,
    1568                 :            :                                       sal_uInt16 nPrfx,
    1569                 :            :                                       const ::rtl::OUString& rLName,
    1570                 :            :                                       const ::com::sun::star::uno::Reference<
    1571                 :            :                                       ::com::sun::star::xml::sax::XAttributeList>& xAttrList,
    1572                 :            :                                         ScXMLDataPilotFieldContext* pTempDataPilotField) :
    1573                 :            :     SvXMLImportContext( rImport, nPrfx, rLName ),
    1574                 :            :     pDataPilotField(pTempDataPilotField),
    1575                 :            :     bDisplay( sal_True ),
    1576                 :            :     bDisplayDetails( sal_True ),
    1577                 :         40 :     bHasName( false )
    1578                 :            : {
    1579 [ +  - ][ +  - ]:         40 :     sal_Int16 nAttrCount = xAttrList.is() ? xAttrList->getLength() : 0;
                 [ +  - ]
    1580         [ +  - ]:         40 :     const SvXMLTokenMap& rAttrTokenMap = GetScImport().GetDataPilotMemberAttrTokenMap();
    1581         [ +  + ]:        160 :     for( sal_Int16 i=0; i < nAttrCount; ++i )
    1582                 :            :     {
    1583 [ +  - ][ +  - ]:        120 :         const rtl::OUString& sAttrName(xAttrList->getNameByIndex( i ));
    1584                 :        120 :         rtl::OUString aLocalName;
    1585                 :        120 :         sal_uInt16 nPrefix = GetScImport().GetNamespaceMap().GetKeyByAttrName(
    1586         [ +  - ]:        120 :                                             sAttrName, &aLocalName );
    1587 [ +  - ][ +  - ]:        120 :         const rtl::OUString& sValue(xAttrList->getValueByIndex( i ));
    1588                 :            : 
    1589 [ +  - ][ +  -  :        120 :         switch( rAttrTokenMap.Get( nPrefix, aLocalName ) )
                +  +  - ]
    1590                 :            :         {
    1591                 :            :             case XML_TOK_DATA_PILOT_MEMBER_ATTR_NAME :
    1592                 :            :             {
    1593                 :         40 :                 sName = sValue;
    1594                 :         40 :                 bHasName = sal_True;
    1595                 :            :             }
    1596                 :         40 :             break;
    1597                 :            :             case XML_TOK_DATA_PILOT_MEMBER_ATTR_DISPLAY_NAME:
    1598                 :            :             case XML_TOK_DATA_PILOT_MEMBER_ATTR_DISPLAY_NAME_EXT:
    1599                 :            :             {
    1600                 :          0 :                 maDisplayName = sValue;
    1601                 :            :             }
    1602                 :            :             case XML_TOK_DATA_PILOT_MEMBER_ATTR_DISPLAY :
    1603                 :            :             {
    1604         [ +  - ]:         40 :                 bDisplay = IsXMLToken(sValue, XML_TRUE);
    1605                 :            :             }
    1606                 :         40 :             break;
    1607                 :            :             case XML_TOK_DATA_PILOT_MEMBER_ATTR_SHOW_DETAILS :
    1608                 :            :             {
    1609         [ +  - ]:         40 :                 bDisplayDetails = IsXMLToken(sValue, XML_TRUE);
    1610                 :            :             }
    1611                 :         40 :             break;
    1612                 :            :         }
    1613                 :        120 :     }
    1614                 :         40 : }
    1615                 :            : 
    1616                 :         40 : ScXMLDataPilotMemberContext::~ScXMLDataPilotMemberContext()
    1617                 :            : {
    1618         [ -  + ]:         80 : }
    1619                 :            : 
    1620                 :          0 : SvXMLImportContext *ScXMLDataPilotMemberContext::CreateChildContext( sal_uInt16 nPrefix,
    1621                 :            :                                             const ::rtl::OUString& rLName,
    1622                 :            :                                             const ::com::sun::star::uno::Reference<
    1623                 :            :                                         ::com::sun::star::xml::sax::XAttributeList>& /* xAttrList */ )
    1624                 :            : {
    1625                 :          0 :     SvXMLImportContext *pContext = 0;
    1626                 :            : 
    1627         [ #  # ]:          0 :     if( !pContext )
    1628         [ #  # ]:          0 :         pContext = new SvXMLImportContext( GetImport(), nPrefix, rLName );
    1629                 :            : 
    1630                 :          0 :     return pContext;
    1631                 :            : }
    1632                 :            : 
    1633                 :         40 : void ScXMLDataPilotMemberContext::EndElement()
    1634                 :            : {
    1635         [ +  - ]:         40 :     if (bHasName)   // #i53407# don't check sName, empty name is allowed
    1636                 :            :     {
    1637         [ +  - ]:         40 :         ScDPSaveMember* pMember = new ScDPSaveMember(sName);
    1638         [ -  + ]:         40 :         if (!maDisplayName.isEmpty())
    1639                 :          0 :             pMember->SetLayoutName(maDisplayName);
    1640                 :         40 :         pMember->SetIsVisible(bDisplay);
    1641                 :         40 :         pMember->SetShowDetails(bDisplayDetails);
    1642                 :         40 :         pDataPilotField->AddMember(pMember);
    1643                 :            :     }
    1644                 :         40 : }
    1645                 :            : 
    1646                 :          0 : ScXMLDataPilotGroupsContext::ScXMLDataPilotGroupsContext( ScXMLImport& rImport,
    1647                 :            :                                       sal_uInt16 nPrfx,
    1648                 :            :                                       const ::rtl::OUString& rLName,
    1649                 :            :                                       const ::com::sun::star::uno::Reference<
    1650                 :            :                                       ::com::sun::star::xml::sax::XAttributeList>& xAttrList,
    1651                 :            :                                         ScXMLDataPilotFieldContext* pTempDataPilotField) :
    1652                 :            :     SvXMLImportContext( rImport, nPrfx, rLName ),
    1653                 :          0 :     pDataPilotField(pTempDataPilotField)
    1654                 :            : {
    1655                 :          0 :     rtl::OUString               sGroupSource;
    1656                 :          0 :     double                      fStart(0.0);
    1657                 :          0 :     double                      fEnd(0.0);
    1658                 :          0 :     double                      fStep(0.0);
    1659                 :          0 :     sal_Int32                   nGroupPart(0);
    1660                 :          0 :     sal_Bool                    bDateValue(false);
    1661                 :          0 :     sal_Bool                    bAutoStart(sal_True);
    1662                 :          0 :     sal_Bool                    bAutoEnd(sal_True);
    1663                 :            : 
    1664 [ #  # ][ #  # ]:          0 :     sal_Int16 nAttrCount = xAttrList.is() ? xAttrList->getLength() : 0;
                 [ #  # ]
    1665         [ #  # ]:          0 :     for( sal_Int16 i=0; i < nAttrCount; i++ )
    1666                 :            :     {
    1667 [ #  # ][ #  # ]:          0 :         rtl::OUString sAttrName = xAttrList->getNameByIndex( i );
    1668                 :          0 :         rtl::OUString aLocalName;
    1669                 :          0 :         sal_uInt16 nPrefix = GetScImport().GetNamespaceMap().GetKeyByAttrName(
    1670         [ #  # ]:          0 :                                             sAttrName, &aLocalName );
    1671 [ #  # ][ #  # ]:          0 :         rtl::OUString sValue = xAttrList->getValueByIndex( i );
    1672                 :            : 
    1673                 :            :         (void)nPrefix;  //! compare below!
    1674                 :            : 
    1675 [ #  # ][ #  # ]:          0 :         if (IsXMLToken(aLocalName, XML_SOURCE_FIELD_NAME))
    1676                 :          0 :                 sGroupSource = sValue;
    1677 [ #  # ][ #  # ]:          0 :         else if (IsXMLToken(aLocalName, XML_DATE_START))
    1678                 :            :         {
    1679                 :          0 :             bDateValue = sal_True;
    1680 [ #  # ][ #  # ]:          0 :             if (IsXMLToken(sValue, XML_AUTO))
    1681                 :          0 :                 bAutoStart = sal_True;
    1682                 :            :             else
    1683                 :            :             {
    1684         [ #  # ]:          0 :                 GetScImport().GetMM100UnitConverter().convertDateTime(fStart, sValue);
    1685                 :          0 :                 bAutoStart = false;
    1686                 :            :             }
    1687                 :            :         }
    1688 [ #  # ][ #  # ]:          0 :         else if (IsXMLToken(aLocalName, XML_DATE_END))
    1689                 :            :         {
    1690                 :          0 :             bDateValue = sal_True;
    1691 [ #  # ][ #  # ]:          0 :             if (IsXMLToken(sValue, XML_AUTO))
    1692                 :          0 :                 bAutoEnd = sal_True;
    1693                 :            :             else
    1694                 :            :             {
    1695         [ #  # ]:          0 :                 GetScImport().GetMM100UnitConverter().convertDateTime(fEnd, sValue);
    1696                 :          0 :                 bAutoEnd = false;
    1697                 :            :             }
    1698                 :            :         }
    1699 [ #  # ][ #  # ]:          0 :         else if (IsXMLToken(aLocalName, XML_START))
    1700                 :            :         {
    1701 [ #  # ][ #  # ]:          0 :             if (IsXMLToken(sValue, XML_AUTO))
    1702                 :          0 :                 bAutoStart = sal_True;
    1703                 :            :             else
    1704                 :            :             {
    1705         [ #  # ]:          0 :                 ::sax::Converter::convertDouble(fStart, sValue);
    1706                 :          0 :                 bAutoStart = false;
    1707                 :            :             }
    1708                 :            :         }
    1709 [ #  # ][ #  # ]:          0 :         else if (IsXMLToken(aLocalName, XML_END))
    1710                 :            :         {
    1711 [ #  # ][ #  # ]:          0 :             if (IsXMLToken(sValue, XML_AUTO))
    1712                 :          0 :                 bAutoEnd = sal_True;
    1713                 :            :             else
    1714                 :            :             {
    1715         [ #  # ]:          0 :                 ::sax::Converter::convertDouble(fEnd, sValue);
    1716                 :          0 :                 bAutoEnd = false;
    1717                 :            :             }
    1718                 :            :         }
    1719 [ #  # ][ #  # ]:          0 :         else if (IsXMLToken(aLocalName, XML_STEP))
    1720                 :            :         {
    1721         [ #  # ]:          0 :                 ::sax::Converter::convertDouble(fStep, sValue);
    1722                 :            :         }
    1723 [ #  # ][ #  # ]:          0 :         else if (IsXMLToken(aLocalName, XML_GROUPED_BY))
    1724                 :            :         {
    1725 [ #  # ][ #  # ]:          0 :             if (IsXMLToken(sValue, XML_SECONDS))
    1726                 :          0 :                 nGroupPart = com::sun::star::sheet::DataPilotFieldGroupBy::SECONDS;
    1727 [ #  # ][ #  # ]:          0 :             else if (IsXMLToken(sValue, XML_MINUTES))
    1728                 :          0 :                 nGroupPart = com::sun::star::sheet::DataPilotFieldGroupBy::MINUTES;
    1729 [ #  # ][ #  # ]:          0 :             else if (IsXMLToken(sValue, XML_HOURS))
    1730                 :          0 :                 nGroupPart = com::sun::star::sheet::DataPilotFieldGroupBy::HOURS;
    1731 [ #  # ][ #  # ]:          0 :             else if (IsXMLToken(sValue, XML_DAYS))
    1732                 :          0 :                 nGroupPart = com::sun::star::sheet::DataPilotFieldGroupBy::DAYS;
    1733 [ #  # ][ #  # ]:          0 :             else if (IsXMLToken(sValue, XML_MONTHS))
    1734                 :          0 :                 nGroupPart = com::sun::star::sheet::DataPilotFieldGroupBy::MONTHS;
    1735 [ #  # ][ #  # ]:          0 :             else if (IsXMLToken(sValue, XML_QUARTERS))
    1736                 :          0 :                 nGroupPart = com::sun::star::sheet::DataPilotFieldGroupBy::QUARTERS;
    1737 [ #  # ][ #  # ]:          0 :             else if (IsXMLToken(sValue, XML_YEARS))
    1738                 :          0 :                 nGroupPart = com::sun::star::sheet::DataPilotFieldGroupBy::YEARS;
    1739                 :            :         }
    1740                 :          0 :     }
    1741                 :          0 :     pDataPilotField->SetGrouping(sGroupSource, fStart, fEnd, fStep, nGroupPart, bDateValue, bAutoStart, bAutoEnd);
    1742                 :          0 : }
    1743                 :            : 
    1744                 :          0 : ScXMLDataPilotGroupsContext::~ScXMLDataPilotGroupsContext()
    1745                 :            : {
    1746         [ #  # ]:          0 : }
    1747                 :            : 
    1748                 :          0 : SvXMLImportContext *ScXMLDataPilotGroupsContext::CreateChildContext( sal_uInt16 nPrefix,
    1749                 :            :                                             const ::rtl::OUString& rLName,
    1750                 :            :                                             const ::com::sun::star::uno::Reference<
    1751                 :            :                                           ::com::sun::star::xml::sax::XAttributeList>& xAttrList )
    1752                 :            : {
    1753                 :          0 :     SvXMLImportContext *pContext = 0;
    1754                 :            : 
    1755         [ #  # ]:          0 :     if (nPrefix == XML_NAMESPACE_TABLE)
    1756                 :            :     {
    1757         [ #  # ]:          0 :         if (IsXMLToken(rLName, XML_DATA_PILOT_GROUP))
    1758         [ #  # ]:          0 :             pContext = new ScXMLDataPilotGroupContext(GetScImport(), nPrefix, rLName,  xAttrList, pDataPilotField);
    1759                 :            :     }
    1760                 :            : 
    1761         [ #  # ]:          0 :     if( !pContext )
    1762         [ #  # ]:          0 :         pContext = new SvXMLImportContext( GetImport(), nPrefix, rLName );
    1763                 :            : 
    1764                 :          0 :     return pContext;
    1765                 :            : }
    1766                 :            : 
    1767                 :          0 : void ScXMLDataPilotGroupsContext::EndElement()
    1768                 :            : {
    1769                 :          0 : }
    1770                 :            : 
    1771                 :          0 : ScXMLDataPilotGroupContext::ScXMLDataPilotGroupContext( ScXMLImport& rImport,
    1772                 :            :                                       sal_uInt16 nPrfx,
    1773                 :            :                                       const ::rtl::OUString& rLName,
    1774                 :            :                                       const ::com::sun::star::uno::Reference<
    1775                 :            :                                       ::com::sun::star::xml::sax::XAttributeList>& xAttrList,
    1776                 :            :                                         ScXMLDataPilotFieldContext* pTempDataPilotField) :
    1777                 :            :     SvXMLImportContext( rImport, nPrfx, rLName ),
    1778         [ #  # ]:          0 :     pDataPilotField(pTempDataPilotField)
    1779                 :            : {
    1780 [ #  # ][ #  # ]:          0 :     sal_Int16 nAttrCount = xAttrList.is() ? xAttrList->getLength() : 0;
                 [ #  # ]
    1781         [ #  # ]:          0 :     for( sal_Int16 i=0; i < nAttrCount; i++ )
    1782                 :            :     {
    1783 [ #  # ][ #  # ]:          0 :         rtl::OUString sAttrName = xAttrList->getNameByIndex( i );
    1784                 :          0 :         rtl::OUString aLocalName;
    1785                 :          0 :         sal_uInt16 nPrefix = GetScImport().GetNamespaceMap().GetKeyByAttrName(
    1786         [ #  # ]:          0 :                                             sAttrName, &aLocalName );
    1787 [ #  # ][ #  # ]:          0 :         rtl::OUString sValue = xAttrList->getValueByIndex( i );
    1788                 :            : 
    1789         [ #  # ]:          0 :         if (nPrefix == XML_NAMESPACE_TABLE)
    1790                 :            :         {
    1791 [ #  # ][ #  # ]:          0 :             if (IsXMLToken(aLocalName, XML_NAME))
    1792                 :          0 :                 sName = sValue;
    1793                 :            :         }
    1794                 :          0 :     }
    1795                 :          0 : }
    1796                 :            : 
    1797                 :          0 : ScXMLDataPilotGroupContext::~ScXMLDataPilotGroupContext()
    1798                 :            : {
    1799         [ #  # ]:          0 : }
    1800                 :            : 
    1801                 :          0 : SvXMLImportContext *ScXMLDataPilotGroupContext::CreateChildContext( sal_uInt16 nPrefix,
    1802                 :            :                                             const ::rtl::OUString& rLName,
    1803                 :            :                                             const ::com::sun::star::uno::Reference<
    1804                 :            :                                           ::com::sun::star::xml::sax::XAttributeList>& xAttrList )
    1805                 :            : {
    1806                 :          0 :     SvXMLImportContext *pContext = 0;
    1807                 :            : 
    1808         [ #  # ]:          0 :     if (nPrefix == XML_NAMESPACE_TABLE)
    1809                 :            :     {
    1810         [ #  # ]:          0 :         if (IsXMLToken(rLName, XML_DATA_PILOT_MEMBER))
    1811         [ #  # ]:          0 :             pContext = new ScXMLDataPilotGroupMemberContext(GetScImport(), nPrefix, rLName, xAttrList, this);
    1812                 :            :     }
    1813                 :            : 
    1814         [ #  # ]:          0 :     if( !pContext )
    1815         [ #  # ]:          0 :         pContext = new SvXMLImportContext( GetImport(), nPrefix, rLName );
    1816                 :            : 
    1817                 :          0 :     return pContext;
    1818                 :            : }
    1819                 :            : 
    1820                 :          0 : void ScXMLDataPilotGroupContext::EndElement()
    1821                 :            : {
    1822                 :          0 :     pDataPilotField->AddGroup(aMembers, sName);
    1823                 :          0 : }
    1824                 :            : 
    1825                 :          0 : ScXMLDataPilotGroupMemberContext::ScXMLDataPilotGroupMemberContext( ScXMLImport& rImport,
    1826                 :            :                                       sal_uInt16 nPrfx,
    1827                 :            :                                       const ::rtl::OUString& rLName,
    1828                 :            :                                       const ::com::sun::star::uno::Reference<
    1829                 :            :                                       ::com::sun::star::xml::sax::XAttributeList>& xAttrList,
    1830                 :            :                                         ScXMLDataPilotGroupContext* pTempDataPilotGroup) :
    1831                 :            :     SvXMLImportContext( rImport, nPrfx, rLName ),
    1832                 :          0 :     pDataPilotGroup(pTempDataPilotGroup)
    1833                 :            : {
    1834 [ #  # ][ #  # ]:          0 :     sal_Int16 nAttrCount = xAttrList.is() ? xAttrList->getLength() : 0;
                 [ #  # ]
    1835         [ #  # ]:          0 :     for( sal_Int16 i=0; i < nAttrCount; i++ )
    1836                 :            :     {
    1837 [ #  # ][ #  # ]:          0 :         rtl::OUString sAttrName = xAttrList->getNameByIndex( i );
    1838                 :          0 :         rtl::OUString aLocalName;
    1839                 :          0 :         sal_uInt16 nPrefix = GetScImport().GetNamespaceMap().GetKeyByAttrName(
    1840         [ #  # ]:          0 :                                             sAttrName, &aLocalName );
    1841 [ #  # ][ #  # ]:          0 :         rtl::OUString sValue = xAttrList->getValueByIndex( i );
    1842                 :            : 
    1843         [ #  # ]:          0 :         if (nPrefix == XML_NAMESPACE_TABLE)
    1844                 :            :         {
    1845 [ #  # ][ #  # ]:          0 :             if (IsXMLToken(aLocalName, XML_NAME))
    1846                 :          0 :                 sName = sValue;
    1847                 :            :         }
    1848                 :          0 :     }
    1849                 :          0 : }
    1850                 :            : 
    1851                 :          0 : ScXMLDataPilotGroupMemberContext::~ScXMLDataPilotGroupMemberContext()
    1852                 :            : {
    1853         [ #  # ]:          0 : }
    1854                 :            : 
    1855                 :          0 : SvXMLImportContext *ScXMLDataPilotGroupMemberContext::CreateChildContext( sal_uInt16 nPrefix,
    1856                 :            :                                             const ::rtl::OUString& rLName,
    1857                 :            :                                             const ::com::sun::star::uno::Reference<
    1858                 :            :                                         ::com::sun::star::xml::sax::XAttributeList>& /* xAttrList */ )
    1859                 :            : {
    1860                 :          0 :     SvXMLImportContext *pContext = 0;
    1861                 :            : 
    1862         [ #  # ]:          0 :     if( !pContext )
    1863         [ #  # ]:          0 :         pContext = new SvXMLImportContext( GetImport(), nPrefix, rLName );
    1864                 :            : 
    1865                 :          0 :     return pContext;
    1866                 :            : }
    1867                 :            : 
    1868                 :          0 : void ScXMLDataPilotGroupMemberContext::EndElement()
    1869                 :            : {
    1870         [ #  # ]:          0 :     if (!sName.isEmpty())
    1871                 :          0 :         pDataPilotGroup->AddMember(sName);
    1872 [ +  - ][ +  - ]:        153 : }
    1873                 :            : 
    1874                 :            : /* vim:set shiftwidth=4 softtabstop=4 expandtab: */

Generated by: LCOV version 1.10