summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMohammed Abdul Azeem <azeemmysore@gmail.com>2017-07-23 20:04:33 +0530
committerMarkus Mohrhard <markus.mohrhard@googlemail.com>2017-07-27 21:22:41 +0200
commite89548c16b39cd716925cc23f2eb9e54748233c7 (patch)
tree496af6498d8c99f1771f58dffd18cfe4c661696a
parent3358e7317c58ceea9e55af077d8fe268231f46cf (diff)
Moving legacy contexts to FastContexts:
ScXMLDataPilotTableContext ScXMLDPSourceSQLContext ScXMLDPSourceTableContext ScXMLDPSourceQueryContext ScXMLSourceServiceContext ScXMLDataPilotGrandTotalContext ScXMLSourceCellRangeContext ScXMLDataPilotFieldContext ScXMLDataPilotFieldReferenceContext ScXMLDataPilotLevelContext ScXMLDataPilotDisplayInfoContext ScXMLDataPilotSortInfoContext ScXMLDataPilotLayoutInfoContext ScXMLDataPilotSubTotalsContext ScXMLDataPilotSubTotalContext ScXMLDataPilotMembersContext ScXMLDataPilotMemberContext ScXMLDataPilotGroupsContext ScXMLDataPilotGroupContext ScXMLDataPilotGroupMemberContext ScXMLDPFilterContext Change-Id: Ie01ddb0f740a1b41a44e4abc9fe1bea3ab32cb12 Reviewed-on: https://gerrit.libreoffice.org/40326 Tested-by: Jenkins <ci@libreoffice.org> Reviewed-by: Markus Mohrhard <markus.mohrhard@googlemail.com>
-rw-r--r--sc/source/filter/xml/xmldpimp.cxx1384
-rw-r--r--sc/source/filter/xml/xmldpimp.hxx208
-rw-r--r--sc/source/filter/xml/xmlfilti.cxx75
-rw-r--r--sc/source/filter/xml/xmlfilti.hxx7
4 files changed, 690 insertions, 984 deletions
diff --git a/sc/source/filter/xml/xmldpimp.cxx b/sc/source/filter/xml/xmldpimp.cxx
index f6fb88942fc8..27dfb894a7dd 100644
--- a/sc/source/filter/xml/xmldpimp.cxx
+++ b/sc/source/filter/xml/xmldpimp.cxx
@@ -69,25 +69,22 @@ ScXMLDataPilotTablesContext::~ScXMLDataPilotTablesContext()
GetScImport().UnlockSolarMutex();
}
-SvXMLImportContext *ScXMLDataPilotTablesContext::CreateChildContext( sal_uInt16 nPrefix,
- const OUString& rLName,
- const css::uno::Reference<css::xml::sax::XAttributeList>& xAttrList )
+uno::Reference< xml::sax::XFastContextHandler > SAL_CALL ScXMLDataPilotTablesContext::createFastChildContext(
+ sal_Int32 nElement, const uno::Reference< xml::sax::XFastAttributeList >& xAttrList )
{
SvXMLImportContext *pContext = nullptr;
- const SvXMLTokenMap& rTokenMap = GetScImport().GetDataPilotTablesElemTokenMap();
- switch( rTokenMap.Get( nPrefix, rLName ) )
+ switch (nElement)
{
- case XML_TOK_DATA_PILOT_TABLE :
+ case XML_ELEMENT( TABLE, XML_DATA_PILOT_TABLE ) :
{
- pContext = new ScXMLDataPilotTableContext( GetScImport(), nPrefix,
- rLName, xAttrList);
+ pContext = new ScXMLDataPilotTableContext( GetScImport(), nElement, xAttrList);
}
break;
}
if( !pContext )
- pContext = new SvXMLImportContext( GetImport(), nPrefix, rLName );
+ pContext = new SvXMLImportContext( GetImport() );
return pContext;
}
@@ -96,10 +93,9 @@ ScXMLDataPilotTableContext::GrandTotalItem::GrandTotalItem() :
mbVisible(true) {}
ScXMLDataPilotTableContext::ScXMLDataPilotTableContext( ScXMLImport& rImport,
- sal_uInt16 nPrfx,
- const OUString& rLName,
- const css::uno::Reference<css::xml::sax::XAttributeList>& xAttrList) :
- ScXMLImportContext( rImport, nPrfx, rLName ),
+ sal_Int32 /*nElement*/,
+ const css::uno::Reference<css::xml::sax::XFastAttributeList>& xAttrList) :
+ ScXMLImportContext( rImport ),
pDoc(GetScImport().GetDocument()),
pDPObject(nullptr),
pDPDimSaveData(nullptr),
@@ -120,88 +116,86 @@ ScXMLDataPilotTableContext::ScXMLDataPilotTableContext( ScXMLImport& rImport,
bDrillDown(true),
bHeaderGridLayout(false)
{
- sal_Int16 nAttrCount = xAttrList.is() ? xAttrList->getLength() : 0;
- const SvXMLTokenMap& rAttrTokenMap = GetScImport().GetDataPilotTableAttrTokenMap();
- for( sal_Int16 i=0; i < nAttrCount; ++i )
+ if ( xAttrList.is() )
{
- const OUString& sAttrName(xAttrList->getNameByIndex( i ));
- OUString aLocalName;
- sal_uInt16 nPrefix = GetScImport().GetNamespaceMap().GetKeyByAttrName(
- sAttrName, &aLocalName );
- const OUString& sValue(xAttrList->getValueByIndex( i ));
+ sax_fastparser::FastAttributeList *pAttribList =
+ sax_fastparser::FastAttributeList::castToFastAttributeList( xAttrList );
- switch( rAttrTokenMap.Get( nPrefix, aLocalName ) )
+ for (auto &aIter : *pAttribList)
{
- case XML_TOK_DATA_PILOT_TABLE_ATTR_NAME :
- {
- sDataPilotTableName = sValue;
- }
- break;
- case XML_TOK_DATA_PILOT_TABLE_ATTR_APPLICATION_DATA :
+ switch (aIter.getToken())
{
- sApplicationData = sValue;
- }
- break;
- case XML_TOK_DATA_PILOT_TABLE_ATTR_GRAND_TOTAL :
- {
- if (IsXMLToken(sValue, XML_BOTH))
+ case XML_ELEMENT( TABLE, XML_NAME ):
{
- maRowGrandTotal.mbVisible = true;
- maColGrandTotal.mbVisible = true;
+ sDataPilotTableName = aIter.toString();
}
- else if (IsXMLToken(sValue, XML_ROW))
+ break;
+ case XML_ELEMENT( TABLE, XML_APPLICATION_DATA ):
{
- maRowGrandTotal.mbVisible = true;
- maColGrandTotal.mbVisible = false;
+ sApplicationData = aIter.toString();
}
- else if (IsXMLToken(sValue, XML_COLUMN))
+ break;
+ case XML_ELEMENT( TABLE, XML_GRAND_TOTAL ):
{
- maRowGrandTotal.mbVisible = false;
- maColGrandTotal.mbVisible = true;
+ if (IsXMLToken(aIter, XML_BOTH))
+ {
+ maRowGrandTotal.mbVisible = true;
+ maColGrandTotal.mbVisible = true;
+ }
+ else if (IsXMLToken(aIter, XML_ROW))
+ {
+ maRowGrandTotal.mbVisible = true;
+ maColGrandTotal.mbVisible = false;
+ }
+ else if (IsXMLToken(aIter, XML_COLUMN))
+ {
+ maRowGrandTotal.mbVisible = false;
+ maColGrandTotal.mbVisible = true;
+ }
+ else
+ {
+ maRowGrandTotal.mbVisible = false;
+ maColGrandTotal.mbVisible = false;
+ }
}
- else
+ break;
+ case XML_ELEMENT( TABLE, XML_IGNORE_EMPTY_ROWS ):
{
- maRowGrandTotal.mbVisible = false;
- maColGrandTotal.mbVisible = false;
+ bIgnoreEmptyRows = IsXMLToken(aIter, XML_TRUE);
}
+ break;
+ case XML_ELEMENT( TABLE, XML_IDENTIFY_CATEGORIES ):
+ {
+ bIdentifyCategories = IsXMLToken(aIter, XML_TRUE);
+ }
+ break;
+ case XML_ELEMENT( TABLE, XML_TARGET_RANGE_ADDRESS ):
+ {
+ sal_Int32 nOffset(0);
+ bTargetRangeAddress = ScRangeStringConverter::GetRangeFromString( aTargetRangeAddress, aIter.toString(), pDoc, ::formula::FormulaGrammar::CONV_OOO, nOffset );
+ }
+ break;
+ case XML_ELEMENT( TABLE, XML_BUTTONS ):
+ {
+ sButtons = aIter.toString();
+ }
+ break;
+ case XML_ELEMENT( TABLE, XML_SHOW_FILTER_BUTTON ):
+ {
+ bShowFilter = IsXMLToken(aIter, XML_TRUE);
+ }
+ break;
+ case XML_ELEMENT( TABLE, XML_DRILL_DOWN_ON_DOUBLE_CLICK ):
+ {
+ bDrillDown = IsXMLToken(aIter, XML_TRUE);
+ }
+ break;
+ case XML_ELEMENT( TABLE, XML_HEADER_GRID_LAYOUT ):
+ {
+ bHeaderGridLayout = IsXMLToken(aIter, XML_TRUE);
+ }
+ break;
}
- break;
- case XML_TOK_DATA_PILOT_TABLE_ATTR_IGNORE_EMPTY_ROWS :
- {
- bIgnoreEmptyRows = IsXMLToken(sValue, XML_TRUE);
- }
- break;
- case XML_TOK_DATA_PILOT_TABLE_ATTR_IDENTIFY_CATEGORIES :
- {
- bIdentifyCategories = IsXMLToken(sValue, XML_TRUE);
- }
- break;
- case XML_TOK_DATA_PILOT_TABLE_ATTR_TARGET_RANGE_ADDRESS :
- {
- sal_Int32 nOffset(0);
- bTargetRangeAddress = ScRangeStringConverter::GetRangeFromString( aTargetRangeAddress, sValue, pDoc, ::formula::FormulaGrammar::CONV_OOO, nOffset );
- }
- break;
- case XML_TOK_DATA_PILOT_TABLE_ATTR_BUTTONS :
- {
- sButtons = sValue;
- }
- break;
- case XML_TOK_DATA_PILOT_TABLE_ATTR_SHOW_FILTER_BUTTON :
- {
- bShowFilter = IsXMLToken(sValue, XML_TRUE);
- }
- break;
- case XML_TOK_DATA_PILOT_TABLE_ATTR_DRILL_DOWN :
- {
- bDrillDown = IsXMLToken(sValue, XML_TRUE);
- }
- break;
- case XML_TOK_DATA_PILOT_TABLE_ATTR_HEADER_GRID_LAYOUT :
- {
- bHeaderGridLayout = IsXMLToken(sValue, XML_TRUE);
- }
- break;
}
}
@@ -213,58 +207,56 @@ ScXMLDataPilotTableContext::~ScXMLDataPilotTableContext()
{
}
-SvXMLImportContext *ScXMLDataPilotTableContext::CreateChildContext( sal_uInt16 nPrefix,
- const OUString& rLName,
- const css::uno::Reference<css::xml::sax::XAttributeList>& xAttrList )
+uno::Reference< xml::sax::XFastContextHandler > SAL_CALL ScXMLDataPilotTableContext::createFastChildContext(
+ sal_Int32 nElement, const uno::Reference< xml::sax::XFastAttributeList >& xAttrList )
{
SvXMLImportContext *pContext = nullptr;
- const SvXMLTokenMap& rTokenMap = GetScImport().GetDataPilotTableElemTokenMap();
- switch( rTokenMap.Get( nPrefix, rLName ) )
+ switch (nElement)
{
- case XML_TOK_DATA_PILOT_TABLE_ELEM_SOURCE_SQL :
+ case XML_ELEMENT( TABLE, XML_DATABASE_SOURCE_SQL ):
{
- pContext = new ScXMLDPSourceSQLContext(GetScImport(), nPrefix, rLName, xAttrList, this);
+ pContext = new ScXMLDPSourceSQLContext(GetScImport(), nElement, xAttrList, this);
nSourceType = SQL;
}
break;
- case XML_TOK_DATA_PILOT_TABLE_ELEM_SOURCE_TABLE :
+ case XML_ELEMENT( TABLE, XML_DATABASE_SOURCE_TABLE ):
{
- pContext = new ScXMLDPSourceTableContext(GetScImport(), nPrefix, rLName, xAttrList, this);
+ pContext = new ScXMLDPSourceTableContext(GetScImport(), nElement, xAttrList, this);
nSourceType = TABLE;
}
break;
- case XML_TOK_DATA_PILOT_TABLE_ELEM_SOURCE_QUERY :
+ case XML_ELEMENT( TABLE, XML_DATABASE_SOURCE_QUERY ):
{
- pContext = new ScXMLDPSourceQueryContext(GetScImport(), nPrefix, rLName, xAttrList, this);
+ pContext = new ScXMLDPSourceQueryContext(GetScImport(), nElement, xAttrList, this);
nSourceType = QUERY;
}
break;
- case XML_TOK_DATA_PILOT_TABLE_ELEM_SOURCE_SERVICE :
+ case XML_ELEMENT( TABLE, XML_SOURCE_SERVICE ):
{
- pContext = new ScXMLSourceServiceContext(GetScImport(), nPrefix, rLName, xAttrList, this);
+ pContext = new ScXMLSourceServiceContext(GetScImport(), nElement, xAttrList, this);
nSourceType = SERVICE;
}
break;
- case XML_TOK_DATA_PILOT_TABLE_ELEM_GRAND_TOTAL:
- case XML_TOK_DATA_PILOT_TABLE_ELEM_GRAND_TOTAL_EXT:
+ case XML_ELEMENT( TABLE, XML_DATA_PILOT_GRAND_TOTAL ):
+ case XML_ELEMENT( TABLE_EXT, XML_DATA_PILOT_GRAND_TOTAL ):
{
- pContext = new ScXMLDataPilotGrandTotalContext(GetScImport(), nPrefix, rLName, xAttrList, this);
+ pContext = new ScXMLDataPilotGrandTotalContext(GetScImport(), nElement, xAttrList, this);
}
break;
- case XML_TOK_DATA_PILOT_TABLE_ELEM_SOURCE_CELL_RANGE :
+ case XML_ELEMENT( TABLE, XML_SOURCE_CELL_RANGE ):
{
- pContext = new ScXMLSourceCellRangeContext(GetScImport(), nPrefix, rLName, xAttrList, this);
+ pContext = new ScXMLSourceCellRangeContext(GetScImport(), nElement, xAttrList, this);
nSourceType = CELLRANGE;
}
break;
- case XML_TOK_DATA_PILOT_TABLE_ELEM_DATA_PILOT_FIELD :
- pContext = new ScXMLDataPilotFieldContext(GetScImport(), nPrefix, rLName, xAttrList, this);
+ case XML_ELEMENT( TABLE, XML_DATA_PILOT_FIELD ):
+ pContext = new ScXMLDataPilotFieldContext(GetScImport(), nElement, xAttrList, this);
break;
}
if( !pContext )
- pContext = new SvXMLImportContext( GetImport(), nPrefix, rLName );
+ pContext = new SvXMLImportContext( GetImport() );
return pContext;
}
@@ -459,7 +451,7 @@ void ScXMLDataPilotTableContext::AddGroupDim(const ScDPSaveGroupDimension& aGrou
pDPDimSaveData->AddGroupDimension(aGroupDim);
}
-void ScXMLDataPilotTableContext::EndElement()
+void SAL_CALL ScXMLDataPilotTableContext::endFastElement( sal_Int32 /*nElement*/ )
{
if (!bTargetRangeAddress)
return;
@@ -583,40 +575,31 @@ void ScXMLDataPilotTableContext::SetGrandTotal(
}
ScXMLDPSourceSQLContext::ScXMLDPSourceSQLContext( ScXMLImport& rImport,
- sal_uInt16 nPrfx,
- const OUString& rLName,
- const css::uno::Reference<css::xml::sax::XAttributeList>& xAttrList,
+ sal_Int32 /*nElement*/,
+ const css::uno::Reference<css::xml::sax::XFastAttributeList>& xAttrList,
ScXMLDataPilotTableContext* pTempDataPilotTable) :
- ScXMLImportContext( rImport, nPrfx, rLName ),
+ ScXMLImportContext( rImport ),
pDataPilotTable(pTempDataPilotTable)
{
- sal_Int16 nAttrCount = xAttrList.is() ? xAttrList->getLength() : 0;
- const SvXMLTokenMap& rAttrTokenMap = GetScImport().GetDatabaseRangeSourceSQLAttrTokenMap();
- for( sal_Int16 i=0; i < nAttrCount; ++i )
+ if ( xAttrList.is() )
{
- const OUString& sAttrName(xAttrList->getNameByIndex( i ));
- OUString aLocalName;
- sal_uInt16 nPrefix = GetScImport().GetNamespaceMap().GetKeyByAttrName(
- sAttrName, &aLocalName );
- const OUString& sValue(xAttrList->getValueByIndex( i ));
+ sax_fastparser::FastAttributeList *pAttribList =
+ sax_fastparser::FastAttributeList::castToFastAttributeList( xAttrList );
- switch( rAttrTokenMap.Get( nPrefix, aLocalName ) )
+ for (auto &aIter : *pAttribList)
{
- case XML_TOK_SOURCE_SQL_ATTR_DATABASE_NAME :
+ switch (aIter.getToken())
{
- pDataPilotTable->SetDatabaseName(sValue);
- }
- break;
- case XML_TOK_SOURCE_SQL_ATTR_SQL_STATEMENT :
- {
- pDataPilotTable->SetSourceObject(sValue);
- }
- break;
- case XML_TOK_SOURCE_SQL_ATTR_PARSE_SQL_STATEMENT :
- {
- pDataPilotTable->SetNative(!IsXMLToken(sValue, XML_TRUE));
+ case XML_ELEMENT( TABLE, XML_DATABASE_NAME ):
+ pDataPilotTable->SetDatabaseName(aIter.toString());
+ break;
+ case XML_ELEMENT( TABLE, XML_SQL_STATEMENT ):
+ pDataPilotTable->SetSourceObject(aIter.toString());
+ break;
+ case XML_ELEMENT( TABLE, XML_PARSE_SQL_STATEMENT ):
+ pDataPilotTable->SetNative(!IsXMLToken(aIter, XML_TRUE));
+ break;
}
- break;
}
}
}
@@ -625,47 +608,30 @@ ScXMLDPSourceSQLContext::~ScXMLDPSourceSQLContext()
{
}
-SvXMLImportContext *ScXMLDPSourceSQLContext::CreateChildContext( sal_uInt16 nPrefix,
- const OUString& rLName,
- const css::uno::Reference<css::xml::sax::XAttributeList>& /* xAttrList */ )
-{
- return new SvXMLImportContext( GetImport(), nPrefix, rLName );
-}
-
-void ScXMLDPSourceSQLContext::EndElement()
-{
-}
-
ScXMLDPSourceTableContext::ScXMLDPSourceTableContext( ScXMLImport& rImport,
- sal_uInt16 nPrfx,
- const OUString& rLName,
- const css::uno::Reference<css::xml::sax::XAttributeList>& xAttrList,
+ sal_Int32 /*nElement*/,
+ const css::uno::Reference<css::xml::sax::XFastAttributeList>& xAttrList,
ScXMLDataPilotTableContext* pTempDataPilotTable) :
- ScXMLImportContext( rImport, nPrfx, rLName ),
+ ScXMLImportContext( rImport ),
pDataPilotTable(pTempDataPilotTable)
{
- sal_Int16 nAttrCount = xAttrList.is() ? xAttrList->getLength() : 0;
- const SvXMLTokenMap& rAttrTokenMap = GetScImport().GetDatabaseRangeSourceTableAttrTokenMap();
- for( sal_Int16 i=0; i < nAttrCount; ++i )
+ if ( xAttrList.is() )
{
- const OUString& sAttrName(xAttrList->getNameByIndex( i ));
- OUString aLocalName;
- sal_uInt16 nPrefix = GetScImport().GetNamespaceMap().GetKeyByAttrName(
- sAttrName, &aLocalName );
- const OUString& sValue(xAttrList->getValueByIndex( i ));
+ sax_fastparser::FastAttributeList *pAttribList =
+ sax_fastparser::FastAttributeList::castToFastAttributeList( xAttrList );
- switch( rAttrTokenMap.Get( nPrefix, aLocalName ) )
+ for (auto &aIter : *pAttribList)
{
- case XML_TOK_SOURCE_TABLE_ATTR_DATABASE_NAME :
+ switch (aIter.getToken())
{
- pDataPilotTable->SetDatabaseName(sValue);
- }
- break;
- case XML_TOK_SOURCE_TABLE_ATTR_TABLE_NAME :
- {
- pDataPilotTable->SetSourceObject(sValue);
+ case XML_ELEMENT( TABLE, XML_DATABASE_NAME ):
+ pDataPilotTable->SetDatabaseName(aIter.toString());
+ break;
+ case XML_ELEMENT( TABLE, XML_TABLE_NAME ):
+ case XML_ELEMENT( TABLE, XML_DATABASE_TABLE_NAME ):
+ pDataPilotTable->SetSourceObject(aIter.toString());
+ break;
}
- break;
}
}
}
@@ -674,47 +640,29 @@ ScXMLDPSourceTableContext::~ScXMLDPSourceTableContext()
{
}
-SvXMLImportContext *ScXMLDPSourceTableContext::CreateChildContext( sal_uInt16 nPrefix,
- const OUString& rLName,
- const css::uno::Reference<css::xml::sax::XAttributeList>& /* xAttrList */ )
-{
- return new SvXMLImportContext( GetImport(), nPrefix, rLName );
-}
-
-void ScXMLDPSourceTableContext::EndElement()
-{
-}
-
ScXMLDPSourceQueryContext::ScXMLDPSourceQueryContext( ScXMLImport& rImport,
- sal_uInt16 nPrfx,
- const OUString& rLName,
- const css::uno::Reference<css::xml::sax::XAttributeList>& xAttrList,
+ sal_Int32 /*nElement*/,
+ const css::uno::Reference<css::xml::sax::XFastAttributeList>& xAttrList,
ScXMLDataPilotTableContext* pTempDataPilotTable) :
- ScXMLImportContext( rImport, nPrfx, rLName ),
+ ScXMLImportContext( rImport ),
pDataPilotTable(pTempDataPilotTable)
{
- sal_Int16 nAttrCount = xAttrList.is() ? xAttrList->getLength() : 0;
- const SvXMLTokenMap& rAttrTokenMap = GetScImport().GetDatabaseRangeSourceQueryAttrTokenMap();
- for( sal_Int16 i=0; i < nAttrCount; ++i )
+ if ( xAttrList.is() )
{
- const OUString& sAttrName(xAttrList->getNameByIndex( i ));
- OUString aLocalName;
- sal_uInt16 nPrefix = GetScImport().GetNamespaceMap().GetKeyByAttrName(
- sAttrName, &aLocalName );
- const OUString& sValue(xAttrList->getValueByIndex( i ));
+ sax_fastparser::FastAttributeList *pAttribList =
+ sax_fastparser::FastAttributeList::castToFastAttributeList( xAttrList );
- switch( rAttrTokenMap.Get( nPrefix, aLocalName ) )
+ for (auto &aIter : *pAttribList)
{
- case XML_TOK_SOURCE_QUERY_ATTR_DATABASE_NAME :
+ switch (aIter.getToken())
{
- pDataPilotTable->SetDatabaseName(sValue);
- }
- break;
- case XML_TOK_SOURCE_QUERY_ATTR_QUERY_NAME :
- {
- pDataPilotTable->SetSourceObject(sValue);
+ case XML_ELEMENT( TABLE, XML_DATABASE_NAME ):
+ pDataPilotTable->SetDatabaseName(aIter.toString());
+ break;
+ case XML_ELEMENT( TABLE, XML_QUERY_NAME ):
+ pDataPilotTable->SetSourceObject(aIter.toString());
+ break;
}
- break;
}
}
}
@@ -723,62 +671,38 @@ ScXMLDPSourceQueryContext::~ScXMLDPSourceQueryContext()
{
}
-SvXMLImportContext *ScXMLDPSourceQueryContext::CreateChildContext( sal_uInt16 nPrefix,
- const OUString& rLName,
- const css::uno::Reference<css::xml::sax::XAttributeList>& /* xAttrList */ )
-{
- return new SvXMLImportContext( GetImport(), nPrefix, rLName );
-}
-
-void ScXMLDPSourceQueryContext::EndElement()
-{
-}
-
ScXMLSourceServiceContext::ScXMLSourceServiceContext( ScXMLImport& rImport,
- sal_uInt16 nPrfx,
- const OUString& rLName,
- const css::uno::Reference<css::xml::sax::XAttributeList>& xAttrList,
+ sal_Int32 /*nElement*/,
+ const css::uno::Reference<css::xml::sax::XFastAttributeList>& xAttrList,
ScXMLDataPilotTableContext* pTempDataPilotTable) :
- ScXMLImportContext( rImport, nPrfx, rLName ),
+ ScXMLImportContext( rImport ),
pDataPilotTable(pTempDataPilotTable)
{
- sal_Int16 nAttrCount = xAttrList.is() ? xAttrList->getLength() : 0;
- const SvXMLTokenMap& rAttrTokenMap = GetScImport().GetDataPilotTableSourceServiceAttrTokenMap();
- for( sal_Int16 i=0; i < nAttrCount; ++i )
+ if ( xAttrList.is() )
{
- const OUString& sAttrName(xAttrList->getNameByIndex( i ));
- OUString aLocalName;
- sal_uInt16 nPrefix = GetScImport().GetNamespaceMap().GetKeyByAttrName(
- sAttrName, &aLocalName );
- const OUString& sValue(xAttrList->getValueByIndex( i ));
+ sax_fastparser::FastAttributeList *pAttribList =
+ sax_fastparser::FastAttributeList::castToFastAttributeList( xAttrList );
- switch( rAttrTokenMap.Get( nPrefix, aLocalName ) )
+ for (auto &aIter : *pAttribList)
{
- case XML_TOK_SOURCE_SERVICE_ATTR_NAME :
- {
- pDataPilotTable->SetServiceName(sValue);
- }
- break;
- case XML_TOK_SOURCE_SERVICE_ATTR_SOURCE_NAME :
- {
- pDataPilotTable->SetServiceSourceName(sValue);
- }
- break;
- case XML_TOK_SOURCE_SERVICE_ATTR_OBJECT_NAME :
- {
- pDataPilotTable->SetServiceSourceObject(sValue);
- }
- break;
- case XML_TOK_SOURCE_SERVICE_ATTR_USER_NAME :
+ switch (aIter.getToken())
{
- pDataPilotTable->SetServiceUsername(sValue);
- }
- break;
- case XML_TOK_SOURCE_SERVICE_ATTR_PASSWORD :
- {
- pDataPilotTable->SetServicePassword(sValue);
+ case XML_ELEMENT( TABLE, XML_NAME ):
+ pDataPilotTable->SetServiceName(aIter.toString());
+ break;
+ case XML_ELEMENT( TABLE, XML_SOURCE_NAME ):
+ pDataPilotTable->SetServiceSourceName(aIter.toString());
+ break;
+ case XML_ELEMENT( TABLE, XML_OBJECT_NAME ):
+ pDataPilotTable->SetServiceSourceObject(aIter.toString());
+ break;
+ case XML_ELEMENT( TABLE, XML_USER_NAME ):
+ pDataPilotTable->SetServiceUsername(aIter.toString());
+ break;
+ case XML_ELEMENT( TABLE, XML_PASSWORD ):
+ pDataPilotTable->SetServicePassword(aIter.toString());
+ break;
}
- break;
}
}
}
@@ -787,53 +711,41 @@ ScXMLSourceServiceContext::~ScXMLSourceServiceContext()
{
}
-SvXMLImportContext *ScXMLSourceServiceContext::CreateChildContext( sal_uInt16 nPrefix,
- const OUString& rLName,
- const css::uno::Reference<css::xml::sax::XAttributeList>& /* xAttrList */ )
-{
- return new SvXMLImportContext( GetImport(), nPrefix, rLName );
-}
-
-void ScXMLSourceServiceContext::EndElement()
-{
-}
-
ScXMLDataPilotGrandTotalContext::ScXMLDataPilotGrandTotalContext(
- ScXMLImport& rImport, sal_uInt16 nPrefix, const OUString& rLName, const Reference<XAttributeList>& xAttrList,
+ ScXMLImport& rImport, sal_Int32 /*nElement*/, const Reference<xml::sax::XFastAttributeList>& xAttrList,
ScXMLDataPilotTableContext* pTableContext ) :
- ScXMLImportContext( rImport, nPrefix, rLName ),
+ ScXMLImportContext( rImport ),
mpTableContext(pTableContext),
meOrientation(NONE),
mbVisible(false)
{
- sal_Int16 nAttrCount = xAttrList.is() ? xAttrList->getLength() : 0;
- const SvXMLTokenMap& rAttrTokenMap = GetScImport().GetDataPilotGrandTotalAttrTokenMap();
- for (sal_Int16 i = 0; i < nAttrCount; ++i)
+ if ( xAttrList.is() )
{
- const OUString& rAttrName = xAttrList->getNameByIndex(i);
- const OUString& rAttrValue = xAttrList->getValueByIndex(i);
+ sax_fastparser::FastAttributeList *pAttribList =
+ sax_fastparser::FastAttributeList::castToFastAttributeList( xAttrList );
- OUString aLocalName;
- sal_uInt16 nLocalPrefix = GetScImport().GetNamespaceMap().GetKeyByAttrName(rAttrName, &aLocalName);
- switch (rAttrTokenMap.Get(nLocalPrefix, aLocalName))
+ for (auto &aIter : *pAttribList)
{
- case XML_TOK_DATA_PILOT_GRAND_TOTAL_ATTR_DISPLAY:
- mbVisible = IsXMLToken(rAttrValue, XML_TRUE);
- break;
- case XML_TOK_DATA_PILOT_GRAND_TOTAL_ATTR_ORIENTATION:
- if (IsXMLToken(rAttrValue, XML_BOTH))
- meOrientation = BOTH;
- else if (IsXMLToken(rAttrValue, XML_ROW))
- meOrientation = ROW;
- else if (IsXMLToken(rAttrValue, XML_COLUMN))
- meOrientation = COLUMN;
- break;
- case XML_TOK_DATA_PILOT_GRAND_TOTAL_ATTR_DISPLAY_NAME:
- case XML_TOK_DATA_PILOT_GRAND_TOTAL_ATTR_DISPLAY_NAME_EXT:
- maDisplayName = rAttrValue;
- break;
- default:
+ switch (aIter.getToken())
+ {
+ case XML_ELEMENT( TABLE, XML_DISPLAY ):
+ mbVisible = IsXMLToken(aIter, XML_TRUE);
break;
+ case XML_ELEMENT( TABLE, XML_ORIENTATION ):
+ if (IsXMLToken(aIter, XML_BOTH))
+ meOrientation = BOTH;
+ else if (IsXMLToken(aIter, XML_ROW))
+ meOrientation = ROW;
+ else if (IsXMLToken(aIter, XML_COLUMN))
+ meOrientation = COLUMN;
+ break;
+ case XML_ELEMENT( TABLE, XML_DISPLAY_NAME ):
+ case XML_ELEMENT( TABLE_EXT, XML_DISPLAY_NAME ):
+ maDisplayName = aIter.toString();
+ break;
+ default:
+ break;
+ }
}
}
}
@@ -842,13 +754,7 @@ ScXMLDataPilotGrandTotalContext::~ScXMLDataPilotGrandTotalContext()
{
}
-SvXMLImportContext* ScXMLDataPilotGrandTotalContext::CreateChildContext(
- sal_uInt16 nPrefix, const OUString& rLocalName, const Reference<XAttributeList>& /*xAttrList*/ )
-{
- return new SvXMLImportContext( GetImport(), nPrefix, rLocalName );
-}
-
-void ScXMLDataPilotGrandTotalContext::EndElement()
+ void SAL_CALL ScXMLDataPilotGrandTotalContext::endFastElement( sal_Int32 /*nElement*/ )
{
XMLTokenEnum eOrient = XML_NONE;
switch (meOrientation)
@@ -869,36 +775,33 @@ void ScXMLDataPilotGrandTotalContext::EndElement()
}
ScXMLSourceCellRangeContext::ScXMLSourceCellRangeContext( ScXMLImport& rImport,
- sal_uInt16 nPrfx,
- const OUString& rLName,
- const css::uno::Reference<css::xml::sax::XAttributeList>& xAttrList,
+ sal_Int32 /*nElement*/,
+ const css::uno::Reference<css::xml::sax::XFastAttributeList>& xAttrList,
ScXMLDataPilotTableContext* pTempDataPilotTable) :
- ScXMLImportContext( rImport, nPrfx, rLName ),
+ ScXMLImportContext( rImport ),
pDataPilotTable(pTempDataPilotTable)
{
- sal_Int16 nAttrCount = xAttrList.is() ? xAttrList->getLength() : 0;
- const SvXMLTokenMap& rAttrTokenMap = GetScImport().GetDataPilotTableSourceCellRangeAttrTokenMap();
- for( sal_Int16 i=0; i < nAttrCount; ++i )
+ if ( xAttrList.is() )
{
- const OUString& sAttrName(xAttrList->getNameByIndex( i ));
- OUString aLocalName;
- sal_uInt16 nPrefix = GetScImport().GetNamespaceMap().GetKeyByAttrName(
- sAttrName, &aLocalName );
- const OUString& sValue(xAttrList->getValueByIndex( i ));
+ sax_fastparser::FastAttributeList *pAttribList =
+ sax_fastparser::FastAttributeList::castToFastAttributeList( xAttrList );
- switch( rAttrTokenMap.Get( nPrefix, aLocalName ) )
+ for (auto &aIter : *pAttribList)
{
- case XML_TOK_SOURCE_CELL_RANGE_ATTR_CELL_RANGE_ADDRESS :
+ switch (aIter.getToken())
{
- ScRange aSourceRangeAddress;
- sal_Int32 nOffset(0);
- if (ScRangeStringConverter::GetRangeFromString( aSourceRangeAddress, sValue, GetScImport().GetDocument(), ::formula::FormulaGrammar::CONV_OOO, nOffset ))
- pDataPilotTable->SetSourceCellRangeAddress(aSourceRangeAddress);
+ case XML_ELEMENT( TABLE, XML_CELL_RANGE_ADDRESS ):
+ {
+ ScRange aSourceRangeAddress;
+ sal_Int32 nOffset(0);
+ if (ScRangeStringConverter::GetRangeFromString( aSourceRangeAddress, aIter.toString(), GetScImport().GetDocument(), ::formula::FormulaGrammar::CONV_OOO, nOffset ))
+ pDataPilotTable->SetSourceCellRangeAddress(aSourceRangeAddress);
+ }
+ break;
+ case XML_ELEMENT( TABLE, XML_NAME ):
+ pDataPilotTable->SetSourceRangeName(aIter.toString());
+ break;
}
- break;
- case XML_TOK_SOURCE_CELL_RANGE_ATTR_NAME:
- pDataPilotTable->SetSourceRangeName(sValue);
- break;
}
}
}
@@ -907,37 +810,29 @@ ScXMLSourceCellRangeContext::~ScXMLSourceCellRangeContext()
{
}
-SvXMLImportContext *ScXMLSourceCellRangeContext::CreateChildContext( sal_uInt16 nPrefix,
- const OUString& rLName,
- const css::uno::Reference<
- css::xml::sax::XAttributeList>& xAttrList )
+uno::Reference< xml::sax::XFastContextHandler > SAL_CALL ScXMLSourceCellRangeContext::createFastChildContext(
+ sal_Int32 nElement, const uno::Reference< xml::sax::XFastAttributeList >& xAttrList )
{
SvXMLImportContext *pContext = nullptr;
- const SvXMLTokenMap& rTokenMap = GetScImport().GetDataPilotTableSourceCellRangeElemTokenMap();
- switch( rTokenMap.Get( nPrefix, rLName ) )
+ switch (nElement)
{
- case XML_TOK_SOURCE_CELL_RANGE_ELEM_FILTER :
- pContext = new ScXMLDPFilterContext(GetScImport(), nPrefix, rLName, xAttrList, pDataPilotTable);
+ case XML_ELEMENT( TABLE, XML_FILTER ):
+ pContext = new ScXMLDPFilterContext(GetScImport(), nElement, xAttrList, pDataPilotTable);
break;
}
if( !pContext )
- pContext = new SvXMLImportContext( GetImport(), nPrefix, rLName );
+ pContext = new SvXMLImportContext( GetImport() );
return pContext;
}
-void ScXMLSourceCellRangeContext::EndElement()
-{
-}
-
ScXMLDataPilotFieldContext::ScXMLDataPilotFieldContext( ScXMLImport& rImport,
- sal_uInt16 nPrfx,
- const OUString& rLName,
- const css::uno::Reference<css::xml::sax::XAttributeList>& xAttrList,
+ sal_Int32 /*nElement*/,
+ const css::uno::Reference<css::xml::sax::XFastAttributeList>& xAttrList,
ScXMLDataPilotTableContext* pTempDataPilotTable) :
- ScXMLImportContext( rImport, nPrfx, rLName ),
+ ScXMLImportContext( rImport ),
pDataPilotTable(pTempDataPilotTable),
xDim(),
fStart(0.0),
@@ -958,61 +853,43 @@ ScXMLDataPilotFieldContext::ScXMLDataPilotFieldContext( ScXMLImport& rImport,
bool bDataLayout = false;
bool bIgnoreSelectedPage = false;
OUString aDisplayName;
- sal_Int16 nAttrCount = xAttrList.is() ? xAttrList->getLength() : 0;
- const SvXMLTokenMap& rAttrTokenMap = GetScImport().GetDataPilotFieldAttrTokenMap();
- for( sal_Int16 i=0; i < nAttrCount; ++i )
+ if ( xAttrList.is() )
{
- const OUString& sAttrName(xAttrList->getNameByIndex( i ));
- OUString aLocalName;
- sal_uInt16 nPrefix = GetScImport().GetNamespaceMap().GetKeyByAttrName(
- sAttrName, &aLocalName );
- const OUString& sValue(xAttrList->getValueByIndex( i ));
+ sax_fastparser::FastAttributeList *pAttribList =
+ sax_fastparser::FastAttributeList::castToFastAttributeList( xAttrList );
- switch( rAttrTokenMap.Get( nPrefix, aLocalName ) )
+ for (auto &aIter : *pAttribList)
{
- case XML_TOK_DATA_PILOT_FIELD_ATTR_SOURCE_FIELD_NAME :
- {
- sName = sValue;
- bHasName = true;
- }
- break;
- case XML_TOK_DATA_PILOT_FIELD_ATTR_DISPLAY_NAME:
- case XML_TOK_DATA_PILOT_FIELD_ATTR_DISPLAY_NAME_EXT:
- {
- aDisplayName = sValue;
- }
- break;
- case XML_TOK_DATA_PILOT_FIELD_ATTR_IS_DATA_LAYOUT_FIELD :
- {
- bDataLayout = IsXMLToken(sValue, XML_TRUE);
- }
- break;
- case XML_TOK_DATA_PILOT_FIELD_ATTR_FUNCTION :
- {
- nFunction = ScXMLConverter::GetFunctionFromString2( sValue );
- }
- break;
- case XML_TOK_DATA_PILOT_FIELD_ATTR_ORIENTATION :
- {
- nOrientation = ScXMLConverter::GetOrientationFromString( sValue );
- }
- break;
- case XML_TOK_DATA_PILOT_FIELD_ATTR_SELECTED_PAGE :
- {
- sSelectedPage = sValue;
- bSelectedPage = true;
- }
- break;
- case XML_TOK_DATA_PILOT_FIELD_ATTR_IGNORE_SELECTED_PAGE:
+ switch (aIter.getToken())
{
- bIgnoreSelectedPage = true;
- }
- break;
- case XML_TOK_DATA_PILOT_FIELD_ATTR_USED_HIERARCHY :
- {
- nUsedHierarchy = sValue.toInt32();
+ case XML_ELEMENT( TABLE, XML_SOURCE_FIELD_NAME ):
+ sName = aIter.toString();
+ bHasName = true;
+ break;
+ case XML_ELEMENT( TABLE, XML_DISPLAY_NAME ):
+ case XML_ELEMENT( TABLE_EXT, XML_DISPLAY_NAME ):
+ aDisplayName = aIter.toString();
+ break;
+ case XML_ELEMENT( TABLE, XML_IS_DATA_LAYOUT_FIELD ):
+ bDataLayout = IsXMLToken(aIter, XML_TRUE);
+ break;
+ case XML_ELEMENT( TABLE, XML_FUNCTION ):
+ nFunction = ScXMLConverter::GetFunctionFromString2( aIter.toString() );
+ break;
+ case XML_ELEMENT( TABLE, XML_ORIENTATION ):
+ nOrientation = ScXMLConverter::GetOrientationFromString( aIter.toString() );
+ break;
+ case XML_ELEMENT( TABLE, XML_SELECTED_PAGE ):
+ sSelectedPage = aIter.toString();
+ bSelectedPage = true;
+ break;
+ case XML_ELEMENT( LO_EXT, XML_IGNORE_SELECTED_PAGE ):
+ bIgnoreSelectedPage = true;
+ break;
+ case XML_ELEMENT( TABLE, XML_USED_HIERARCHY ):
+ nUsedHierarchy = aIter.toInt32();
+ break;
}
- break;
}
}
@@ -1032,28 +909,26 @@ ScXMLDataPilotFieldContext::~ScXMLDataPilotFieldContext()
{
}
-SvXMLImportContext *ScXMLDataPilotFieldContext::CreateChildContext( sal_uInt16 nPrefix,
- const OUString& rLName,
- const css::uno::Reference<css::xml::sax::XAttributeList>& xAttrList )
+uno::Reference< xml::sax::XFastContextHandler > SAL_CALL ScXMLDataPilotFieldContext::createFastChildContext(
+ sal_Int32 nElement, const uno::Reference< xml::sax::XFastAttributeList >& xAttrList )
{
SvXMLImportContext *pContext = nullptr;
- const SvXMLTokenMap& rTokenMap = GetScImport().GetDataPilotFieldElemTokenMap();
- switch( rTokenMap.Get( nPrefix, rLName ) )
+ switch (nElement)
{
- case XML_TOK_DATA_PILOT_FIELD_ELEM_DATA_PILOT_LEVEL :
- pContext = new ScXMLDataPilotLevelContext(GetScImport(), nPrefix, rLName, xAttrList, this);
+ case XML_ELEMENT( TABLE, XML_DATA_PILOT_LEVEL ):
+ pContext = new ScXMLDataPilotLevelContext(GetScImport(), nElement, xAttrList, this);
break;
- case XML_TOK_DATA_PILOT_FIELD_ELEM_DATA_PILOT_REFERENCE :
- pContext = new ScXMLDataPilotFieldReferenceContext(GetScImport(), nPrefix, rLName, xAttrList, this);
+ case XML_ELEMENT( TABLE, XML_DATA_PILOT_FIELD_REFERENCE ):
+ pContext = new ScXMLDataPilotFieldReferenceContext(GetScImport(), nElement, xAttrList, this);
break;
- case XML_TOK_DATA_PILOT_FIELD_ELEM_DATA_PILOT_GROUPS :
- pContext = new ScXMLDataPilotGroupsContext(GetScImport(), nPrefix, rLName, xAttrList, this);
+ case XML_ELEMENT( TABLE, XML_DATA_PILOT_GROUPS ):
+ pContext = new ScXMLDataPilotGroupsContext(GetScImport(), nElement, xAttrList, this);
break;
}
if( !pContext )
- pContext = new SvXMLImportContext( GetImport(), nPrefix, rLName );
+ pContext = new SvXMLImportContext( GetImport() );
return pContext;
}
@@ -1085,7 +960,7 @@ void ScXMLDataPilotFieldContext::AddGroup(const ::std::vector<OUString>& rMember
aGroups.push_back(aGroup);
}
-void ScXMLDataPilotFieldContext::EndElement()
+void SAL_CALL ScXMLDataPilotFieldContext::endFastElement( sal_Int32 /*nElement*/ )
{
if (xDim)
{
@@ -1143,62 +1018,64 @@ void ScXMLDataPilotFieldContext::EndElement()
}
}
-ScXMLDataPilotFieldReferenceContext::ScXMLDataPilotFieldReferenceContext( ScXMLImport& rImport, sal_uInt16 nPrfx,
- const OUString& rLName,
- const uno::Reference<xml::sax::XAttributeList>& xAttrList,
+ScXMLDataPilotFieldReferenceContext::ScXMLDataPilotFieldReferenceContext( ScXMLImport& rImport, sal_Int32 /*+*/,
+ const uno::Reference<xml::sax::XFastAttributeList>& xAttrList,
ScXMLDataPilotFieldContext* pDataPilotField) :
- ScXMLImportContext( rImport, nPrfx, rLName )
+ ScXMLImportContext( rImport )
{
sheet::DataPilotFieldReference aReference;
- sal_Int16 nAttrCount = xAttrList.is() ? xAttrList->getLength() : 0;
- for( sal_Int16 i=0; i < nAttrCount; i++ )
+ if ( xAttrList.is() )
{
- OUString sAttrName(xAttrList->getNameByIndex( i ));
- OUString aLocalName;
- sal_uInt16 nPrefix = GetScImport().GetNamespaceMap().GetKeyByAttrName(
- sAttrName, &aLocalName );
- OUString sValue(xAttrList->getValueByIndex( i ));
+ sax_fastparser::FastAttributeList *pAttribList =
+ sax_fastparser::FastAttributeList::castToFastAttributeList( xAttrList );
- if ( nPrefix == XML_NAMESPACE_TABLE )
+ for (auto &aIter : *pAttribList)
{
- if (IsXMLToken(aLocalName, XML_TYPE))
+ switch (aIter.getToken())
{
- if (IsXMLToken(sValue, XML_NONE))
- aReference.ReferenceType = sheet::DataPilotFieldReferenceType::NONE;
- else if (IsXMLToken(sValue, XML_MEMBER_DIFFERENCE))
- aReference.ReferenceType = sheet::DataPilotFieldReferenceType::ITEM_DIFFERENCE;
- else if (IsXMLToken(sValue, XML_MEMBER_PERCENTAGE))
- aReference.ReferenceType = sheet::DataPilotFieldReferenceType::ITEM_PERCENTAGE;
- else if (IsXMLToken(sValue, XML_MEMBER_PERCENTAGE_DIFFERENCE))
- aReference.ReferenceType = sheet::DataPilotFieldReferenceType::ITEM_PERCENTAGE_DIFFERENCE;
- else if (IsXMLToken(sValue, XML_RUNNING_TOTAL))
- aReference.ReferenceType = sheet::DataPilotFieldReferenceType::RUNNING_TOTAL;
- else if (IsXMLToken(sValue, XML_ROW_PERCENTAGE))
- aReference.ReferenceType = sheet::DataPilotFieldReferenceType::ROW_PERCENTAGE;
- else if (IsXMLToken(sValue, XML_COLUMN_PERCENTAGE))
- aReference.ReferenceType = sheet::DataPilotFieldReferenceType::COLUMN_PERCENTAGE;
- else if (IsXMLToken(sValue, XML_TOTAL_PERCENTAGE))
- aReference.ReferenceType = sheet::DataPilotFieldReferenceType::TOTAL_PERCENTAGE;
- else if (IsXMLToken(sValue, XML_INDEX))
- aReference.ReferenceType = sheet::DataPilotFieldReferenceType::INDEX;
- }
- else if (IsXMLToken(aLocalName, XML_FIELD_NAME))
- {
- aReference.ReferenceField = sValue;
- }
- else if (IsXMLToken(aLocalName, XML_MEMBER_TYPE))
- {
- if (IsXMLToken(sValue, XML_NAMED))
- aReference.ReferenceItemType = sheet::DataPilotFieldReferenceItemType::NAMED;
- else if (IsXMLToken(sValue, XML_PREVIOUS))
- aReference.ReferenceItemType = sheet::DataPilotFieldReferenceItemType::PREVIOUS;
- else if (IsXMLToken(sValue, XML_NEXT))
- aReference.ReferenceItemType = sheet::DataPilotFieldReferenceItemType::NEXT;
- }
- else if (IsXMLToken(aLocalName, XML_MEMBER_NAME))
- {
- aReference.ReferenceItemName = sValue;
+ case XML_ELEMENT( TABLE, XML_TYPE ):
+ {
+ if (IsXMLToken(aIter, XML_NONE))
+ aReference.ReferenceType = sheet::DataPilotFieldReferenceType::NONE;
+ else if (IsXMLToken(aIter, XML_MEMBER_DIFFERENCE))
+ aReference.ReferenceType = sheet::DataPilotFieldReferenceType::ITEM_DIFFERENCE;
+ else if (IsXMLToken(aIter, XML_MEMBER_PERCENTAGE))
+ aReference.ReferenceType = sheet::DataPilotFieldReferenceType::ITEM_PERCENTAGE;
+ else if (IsXMLToken(aIter, XML_MEMBER_PERCENTAGE_DIFFERENCE))
+ aReference.ReferenceType = sheet::DataPilotFieldReferenceType::ITEM_PERCENTAGE_DIFFERENCE;
+ else if (IsXMLToken(aIter, XML_RUNNING_TOTAL))
+ aReference.ReferenceType = sheet::DataPilotFieldReferenceType::RUNNING_TOTAL;
+ else if (IsXMLToken(aIter, XML_ROW_PERCENTAGE))
+ aReference.ReferenceType = sheet::DataPilotFieldReferenceType::ROW_PERCENTAGE;
+ else if (IsXMLToken(aIter, XML_COLUMN_PERCENTAGE))
+ aReference.ReferenceType = sheet::DataPilotFieldReferenceType::COLUMN_PERCENTAGE;
+ else if (IsXMLToken(aIter, XML_TOTAL_PERCENTAGE))
+ aReference.ReferenceType = sheet::DataPilotFieldReferenceType::TOTAL_PERCENTAGE;
+ else if (IsXMLToken(aIter, XML_INDEX))
+ aReference.ReferenceType = sheet::DataPilotFieldReferenceType::INDEX;
+ }
+ break;
+ case XML_ELEMENT( TABLE, XML_FIELD_NAME ):
+ {
+ aReference.ReferenceField = aIter.toString();
+ }
+ break;
+ case XML_ELEMENT( TABLE, XML_MEMBER_TYPE ):
+ {
+ if (IsXMLToken(aIter, XML_NAMED))
+ aReference.ReferenceItemType = sheet::DataPilotFieldReferenceItemType::NAMED;
+ else if (IsXMLToken(aIter, XML_PREVIOUS))
+ aReference.ReferenceItemType = sheet::DataPilotFieldReferenceItemType::PREVIOUS;
+ else if (IsXMLToken(aIter, XML_NEXT))
+ aReference.ReferenceItemType = sheet::DataPilotFieldReferenceItemType::NEXT;
+ }
+ break;
+ case XML_ELEMENT( TABLE, XML_MEMBER_NAME ):
+ {
+ aReference.ReferenceItemName = aIter.toString();
+ }
+ break;
}
}
}
@@ -1210,35 +1087,28 @@ ScXMLDataPilotFieldReferenceContext::~ScXMLDataPilotFieldReferenceContext()
}
ScXMLDataPilotLevelContext::ScXMLDataPilotLevelContext( ScXMLImport& rImport,
- sal_uInt16 nPrfx,
- const OUString& rLName,
- const css::uno::Reference<css::xml::sax::XAttributeList>& xAttrList,
+ sal_Int32 /*nElement*/,
+ const css::uno::Reference<css::xml::sax::XFastAttributeList>& xAttrList,
ScXMLDataPilotFieldContext* pTempDataPilotField) :
- ScXMLImportContext( rImport, nPrfx, rLName ),
+ ScXMLImportContext( rImport ),
pDataPilotField(pTempDataPilotField)
{
- sal_Int16 nAttrCount = xAttrList.is() ? xAttrList->getLength() : 0;
- const SvXMLTokenMap& rAttrTokenMap = GetScImport().GetDataPilotLevelAttrTokenMap();
- for( sal_Int16 i=0; i < nAttrCount; ++i )
+ if ( xAttrList.is() )
{
- const OUString& sAttrName(xAttrList->getNameByIndex( i ));
- OUString aLocalName;
- sal_uInt16 nPrefix = GetScImport().GetNamespaceMap().GetKeyByAttrName(
- sAttrName, &aLocalName );
- const OUString& sValue(xAttrList->getValueByIndex( i ));
+ sax_fastparser::FastAttributeList *pAttribList =
+ sax_fastparser::FastAttributeList::castToFastAttributeList( xAttrList );
- switch( rAttrTokenMap.Get( nPrefix, aLocalName ) )
+ for (auto &aIter : *pAttribList)
{
- case XML_TOK_DATA_PILOT_LEVEL_ATTR_SHOW_EMPTY :
+ switch (aIter.getToken())
{
- pDataPilotField->SetShowEmpty(IsXMLToken(sValue, XML_TRUE));
- }
- break;
- case XML_TOK_DATA_PILOT_LEVEL_ATTR_REPEAT_ITEM_LABELS :
- {
- pDataPilotField->SetRepeatItemLabels(IsXMLToken(sValue, XML_TRUE));
+ case XML_ELEMENT( TABLE, XML_SHOW_EMPTY ):
+ pDataPilotField->SetShowEmpty(IsXMLToken(aIter, XML_TRUE));
+ break;
+ case XML_ELEMENT( CALC_EXT, XML_REPEAT_ITEM_LABELS ):
+ pDataPilotField->SetRepeatItemLabels(IsXMLToken(aIter, XML_TRUE));
+ break;
}
- break;
}
}
}
@@ -1247,82 +1117,70 @@ ScXMLDataPilotLevelContext::~ScXMLDataPilotLevelContext()
{
}
-SvXMLImportContext *ScXMLDataPilotLevelContext::CreateChildContext( sal_uInt16 nPrefix,
- const OUString& rLName,
- const css::uno::Reference<css::xml::sax::XAttributeList>& xAttrList )
+uno::Reference< xml::sax::XFastContextHandler > SAL_CALL ScXMLDataPilotLevelContext::createFastChildContext(
+ sal_Int32 nElement, const uno::Reference< xml::sax::XFastAttributeList >& xAttrList )
{
SvXMLImportContext *pContext = nullptr;
- const SvXMLTokenMap& rTokenMap = GetScImport().GetDataPilotLevelElemTokenMap();
- switch( rTokenMap.Get( nPrefix, rLName ) )
+ switch (nElement)
{
- case XML_TOK_DATA_PILOT_LEVEL_ELEM_DATA_PILOT_SUBTOTALS :
- pContext = new ScXMLDataPilotSubTotalsContext(GetScImport(), nPrefix, rLName, xAttrList, pDataPilotField);
+ case XML_ELEMENT( TABLE, XML_DATA_PILOT_SUBTOTALS ):
+ pContext = new ScXMLDataPilotSubTotalsContext(GetScImport(), nElement, xAttrList, pDataPilotField);
break;
- case XML_TOK_DATA_PILOT_LEVEL_ELEM_DATA_PILOT_MEMBERS :
- pContext = new ScXMLDataPilotMembersContext(GetScImport(), nPrefix, rLName, xAttrList, pDataPilotField);
+ case XML_ELEMENT( TABLE, XML_DATA_PILOT_MEMBERS ):
+ pContext = new ScXMLDataPilotMembersContext(GetScImport(), nElement, xAttrList, pDataPilotField);
break;
- case XML_TOK_DATA_PILOT_FIELD_ELEM_DATA_PILOT_DISPLAY_INFO :
- pContext = new ScXMLDataPilotDisplayInfoContext(GetScImport(), nPrefix, rLName, xAttrList, pDataPilotField);
+ case XML_ELEMENT( TABLE, XML_DATA_PILOT_DISPLAY_INFO ):
+ pContext = new ScXMLDataPilotDisplayInfoContext(GetScImport(), nElement, xAttrList, pDataPilotField);
break;
- case XML_TOK_DATA_PILOT_FIELD_ELEM_DATA_PILOT_SORT_INFO :
- pContext = new ScXMLDataPilotSortInfoContext(GetScImport(), nPrefix, rLName, xAttrList, pDataPilotField);
+ case XML_ELEMENT( TABLE, XML_DATA_PILOT_SORT_INFO ):
+ pContext = new ScXMLDataPilotSortInfoContext(GetScImport(), nElement, xAttrList, pDataPilotField);
break;
- case XML_TOK_DATA_PILOT_FIELD_ELEM_DATA_PILOT_LAYOUT_INFO :
- pContext = new ScXMLDataPilotLayoutInfoContext(GetScImport(), nPrefix, rLName, xAttrList, pDataPilotField);
+ case XML_ELEMENT( TABLE, XML_DATA_PILOT_LAYOUT_INFO ):
+ pContext = new ScXMLDataPilotLayoutInfoContext(GetScImport(), nElement, xAttrList, pDataPilotField);
break;
}
if( !pContext )
- pContext = new SvXMLImportContext( GetImport(), nPrefix, rLName );
+ pContext = new SvXMLImportContext( GetImport() );
return pContext;
}
-void ScXMLDataPilotLevelContext::EndElement()
-{
-}
-
-ScXMLDataPilotDisplayInfoContext::ScXMLDataPilotDisplayInfoContext( ScXMLImport& rImport, sal_uInt16 nPrfx,
- const OUString& rLName,
- const css::uno::Reference<css::xml::sax::XAttributeList>& xAttrList,
+ScXMLDataPilotDisplayInfoContext::ScXMLDataPilotDisplayInfoContext( ScXMLImport& rImport, sal_Int32 /*nElement*/,
+ const css::uno::Reference<css::xml::sax::XFastAttributeList>& xAttrList,
ScXMLDataPilotFieldContext* pDataPilotField) :
- ScXMLImportContext( rImport, nPrfx, rLName )
+ ScXMLImportContext( rImport )
{
sheet::DataPilotFieldAutoShowInfo aInfo;
- sal_Int16 nAttrCount = xAttrList.is() ? xAttrList->getLength() : 0;
- for( sal_Int16 i=0; i < nAttrCount; i++ )
+ if ( xAttrList.is() )
{
- OUString sAttrName(xAttrList->getNameByIndex( i ));
- OUString aLocalName;
- sal_uInt16 nPrefix = GetScImport().GetNamespaceMap().GetKeyByAttrName(
- sAttrName, &aLocalName );
- OUString sValue(xAttrList->getValueByIndex( i ));
+ sax_fastparser::FastAttributeList *pAttribList =
+ sax_fastparser::FastAttributeList::castToFastAttributeList( xAttrList );
- if ( nPrefix == XML_NAMESPACE_TABLE )
+ for (auto &aIter : *pAttribList)
{
- if (IsXMLToken(aLocalName, XML_ENABLED))
- {
- if (IsXMLToken(sValue, XML_TRUE))
- aInfo.IsEnabled = true;
- else
- aInfo.IsEnabled = false;
- }
- else if (IsXMLToken(aLocalName, XML_DISPLAY_MEMBER_MODE))
- {
- if (IsXMLToken(sValue, XML_FROM_TOP))
- aInfo.ShowItemsMode = sheet::DataPilotFieldShowItemsMode::FROM_TOP;
- else if (IsXMLToken(sValue, XML_FROM_BOTTOM))
- aInfo.ShowItemsMode = sheet::DataPilotFieldShowItemsMode::FROM_BOTTOM;
- }
- else if (IsXMLToken(aLocalName, XML_MEMBER_COUNT))
+ switch (aIter.getToken())
{
- aInfo.ItemCount = sValue.toInt32();
- }
- else if (IsXMLToken(aLocalName, XML_DATA_FIELD))
- {
- aInfo.DataField = sValue;
+ case XML_ELEMENT( TABLE, XML_ENABLED ):
+ if (IsXMLToken(aIter, XML_TRUE))
+ aInfo.IsEnabled = true;
+ else
+ aInfo.IsEnabled = false;
+ break;
+ case XML_ELEMENT( TABLE, XML_DISPLAY_MEMBER_MODE ):
+ if (IsXMLToken(aIter, XML_FROM_TOP))
+ aInfo.ShowItemsMode = sheet::DataPilotFieldShowItemsMode::FROM_TOP;
+ else if (IsXMLToken(aIter, XML_FROM_BOTTOM))
+ aInfo.ShowItemsMode = sheet::DataPilotFieldShowItemsMode::FROM_BOTTOM;
+ break;
+ case XML_ELEMENT( TABLE, XML_MEMBER_COUNT ):
+ aInfo.ItemCount = aIter.toInt32();
+ break;
+ case XML_ELEMENT( TABLE, XML_DATA_FIELD ):
+ aInfo.DataField = aIter.toString();
+ break;
}
}
}
@@ -1333,45 +1191,42 @@ ScXMLDataPilotDisplayInfoContext::~ScXMLDataPilotDisplayInfoContext()
{
}
-ScXMLDataPilotSortInfoContext::ScXMLDataPilotSortInfoContext( ScXMLImport& rImport, sal_uInt16 nPrfx,
- const OUString& rLName,
- const css::uno::Reference<css::xml::sax::XAttributeList>& xAttrList,
+ScXMLDataPilotSortInfoContext::ScXMLDataPilotSortInfoContext( ScXMLImport& rImport, sal_Int32 /*nElement*/,
+ const css::uno::Reference<css::xml::sax::XFastAttributeList>& xAttrList,
ScXMLDataPilotFieldContext* pDataPilotField) :
- ScXMLImportContext( rImport, nPrfx, rLName )
+ ScXMLImportContext( rImport )
{
sheet::DataPilotFieldSortInfo aInfo;
- sal_Int16 nAttrCount = xAttrList.is() ? xAttrList->getLength() : 0;
- for( sal_Int16 i=0; i < nAttrCount; i++ )
+ if ( xAttrList.is() )
{
- OUString sAttrName(xAttrList->getNameByIndex( i ));
- OUString aLocalName;
- sal_uInt16 nPrefix = GetScImport().GetNamespaceMap().GetKeyByAttrName(
- sAttrName, &aLocalName );
- OUString sValue(xAttrList->getValueByIndex( i ));
+ sax_fastparser::FastAttributeList *pAttribList =
+ sax_fastparser::FastAttributeList::castToFastAttributeList( xAttrList );
- if ( nPrefix == XML_NAMESPACE_TABLE )
+ for (auto &aIter : *pAttribList)
{
- if (IsXMLToken(aLocalName, XML_ORDER))
+ switch (aIter.getToken())
{
- if (IsXMLToken(sValue, XML_ASCENDING))
- aInfo.IsAscending = true;
- else if (IsXMLToken(sValue, XML_DESCENDING))
- aInfo.IsAscending = false;
- }
- else if (IsXMLToken(aLocalName, XML_SORT_MODE))
- {
- if (IsXMLToken(sValue, XML_NONE))
- aInfo.Mode = sheet::DataPilotFieldSortMode::NONE;
- else if (IsXMLToken(sValue, XML_MANUAL))
- aInfo.Mode = sheet::DataPilotFieldSortMode::MANUAL;
- else if (IsXMLToken(sValue, XML_NAME))
- aInfo.Mode = sheet::DataPilotFieldSortMode::NAME;
- else if (IsXMLToken(sValue, XML_DATA))
- aInfo.Mode = sheet::DataPilotFieldSortMode::DATA;
+ case XML_ELEMENT( TABLE, XML_ORDER ):
+ if (IsXMLToken(aIter, XML_ASCENDING))
+ aInfo.IsAscending = true;
+ else if (IsXMLToken(aIter, XML_DESCENDING))
+ aInfo.IsAscending = false;
+ break;
+ case XML_ELEMENT( TABLE, XML_SORT_MODE ):
+ if (IsXMLToken(aIter, XML_NONE))
+ aInfo.Mode = sheet::DataPilotFieldSortMode::NONE;
+ else if (IsXMLToken(aIter, XML_MANUAL))
+ aInfo.Mode = sheet::DataPilotFieldSortMode::MANUAL;
+ else if (IsXMLToken(aIter, XML_NAME))
+ aInfo.Mode = sheet::DataPilotFieldSortMode::NAME;
+ else if (IsXMLToken(aIter, XML_DATA))
+ aInfo.Mode = sheet::DataPilotFieldSortMode::DATA;
+ break;
+ case XML_ELEMENT( TABLE, XML_DATA_FIELD ):
+ aInfo.Field = aIter.toString();
+ break;
}
- else if (IsXMLToken(aLocalName, XML_DATA_FIELD))
- aInfo.Field = sValue;
}
}
pDataPilotField->SetSortInfo(aInfo);
@@ -1381,40 +1236,36 @@ ScXMLDataPilotSortInfoContext::~ScXMLDataPilotSortInfoContext()
{
}
-ScXMLDataPilotLayoutInfoContext::ScXMLDataPilotLayoutInfoContext( ScXMLImport& rImport, sal_uInt16 nPrfx,
- const OUString& rLName,
- const css::uno::Reference<css::xml::sax::XAttributeList>& xAttrList,
+ScXMLDataPilotLayoutInfoContext::ScXMLDataPilotLayoutInfoContext( ScXMLImport& rImport, sal_Int32 /*nElement*/,
+ const css::uno::Reference<css::xml::sax::XFastAttributeList>& xAttrList,
ScXMLDataPilotFieldContext* pDataPilotField) :
- ScXMLImportContext( rImport, nPrfx, rLName )
+ ScXMLImportContext( rImport )
{
sheet::DataPilotFieldLayoutInfo aInfo;
- sal_Int16 nAttrCount = xAttrList.is() ? xAttrList->getLength() : 0;
- for( sal_Int16 i=0; i < nAttrCount; i++ )
+ if ( xAttrList.is() )
{
- OUString sAttrName(xAttrList->getNameByIndex( i ));
- OUString aLocalName;
- sal_uInt16 nPrefix = GetScImport().GetNamespaceMap().GetKeyByAttrName(
- sAttrName, &aLocalName );
- OUString sValue(xAttrList->getValueByIndex( i ));
+ sax_fastparser::FastAttributeList *pAttribList =
+ sax_fastparser::FastAttributeList::castToFastAttributeList( xAttrList );
- if ( nPrefix == XML_NAMESPACE_TABLE )
+ for (auto &aIter : *pAttribList)
{
- if (IsXMLToken(aLocalName, XML_ADD_EMPTY_LINES))
- {
- if (IsXMLToken(sValue, XML_TRUE))
- aInfo.AddEmptyLines = true;
- else
- aInfo.AddEmptyLines = false;
- }
- else if (IsXMLToken(aLocalName, XML_LAYOUT_MODE))
+ switch (aIter.getToken())
{
- if (IsXMLToken(sValue, XML_TABULAR_LAYOUT))
- aInfo.LayoutMode = sheet::DataPilotFieldLayoutMode::TABULAR_LAYOUT;
- else if (IsXMLToken(sValue, XML_OUTLINE_SUBTOTALS_TOP))
- aInfo.LayoutMode = sheet::DataPilotFieldLayoutMode::OUTLINE_SUBTOTALS_TOP;
- else if (IsXMLToken(sValue, XML_OUTLINE_SUBTOTALS_BOTTOM))
- aInfo.LayoutMode = sheet::DataPilotFieldLayoutMode::OUTLINE_SUBTOTALS_BOTTOM;
+ case XML_ELEMENT( TABLE, XML_ADD_EMPTY_LINES ):
+ if (IsXMLToken(aIter, XML_TRUE))
+ aInfo.AddEmptyLines = true;
+ else
+ aInfo.AddEmptyLines = false;
+ break;
+ case XML_ELEMENT( TABLE, XML_LAYOUT_MODE ):
+ if (IsXMLToken(aIter, XML_TABULAR_LAYOUT))
+ aInfo.LayoutMode = sheet::DataPilotFieldLayoutMode::TABULAR_LAYOUT;
+ else if (IsXMLToken(aIter, XML_OUTLINE_SUBTOTALS_TOP))
+ aInfo.LayoutMode = sheet::DataPilotFieldLayoutMode::OUTLINE_SUBTOTALS_TOP;
+ else if (IsXMLToken(aIter, XML_OUTLINE_SUBTOTALS_BOTTOM))
+ aInfo.LayoutMode = sheet::DataPilotFieldLayoutMode::OUTLINE_SUBTOTALS_BOTTOM;
+ break;
}
}
}
@@ -1425,11 +1276,10 @@ ScXMLDataPilotLayoutInfoContext::~ScXMLDataPilotLayoutInfoContext()
}
ScXMLDataPilotSubTotalsContext::ScXMLDataPilotSubTotalsContext( ScXMLImport& rImport,
- sal_uInt16 nPrfx,
- const OUString& rLName,
- const css::uno::Reference<css::xml::sax::XAttributeList>& /* xAttrList */,
+ sal_Int32 /*nElement*/,
+ const css::uno::Reference<css::xml::sax::XFastAttributeList>& /* xAttrList */,
ScXMLDataPilotFieldContext* pTempDataPilotField) :
- ScXMLImportContext( rImport, nPrfx, rLName ),
+ ScXMLImportContext( rImport ),
pDataPilotField(pTempDataPilotField)
{
@@ -1440,27 +1290,25 @@ ScXMLDataPilotSubTotalsContext::~ScXMLDataPilotSubTotalsContext()
{
}
-SvXMLImportContext *ScXMLDataPilotSubTotalsContext::CreateChildContext( sal_uInt16 nPrefix,
- const OUString& rLName,
- const css::uno::Reference<css::xml::sax::XAttributeList>& xAttrList )
+uno::Reference< xml::sax::XFastContextHandler > SAL_CALL ScXMLDataPilotSubTotalsContext::createFastChildContext(
+ sal_Int32 nElement, const uno::Reference< xml::sax::XFastAttributeList >& xAttrList )
{
SvXMLImportContext *pContext = nullptr;
- const SvXMLTokenMap& rTokenMap = GetScImport().GetDataPilotSubTotalsElemTokenMap();
- switch( rTokenMap.Get( nPrefix, rLName ) )
+ switch (nElement)
{
- case XML_TOK_DATA_PILOT_SUBTOTALS_ELEM_DATA_PILOT_SUBTOTAL :
- pContext = new ScXMLDataPilotSubTotalContext(GetScImport(), nPrefix, rLName, xAttrList, this);
+ case XML_ELEMENT( TABLE, XML_DATA_PILOT_SUBTOTAL ):
+ pContext = new ScXMLDataPilotSubTotalContext(GetScImport(), nElement, xAttrList, this);
break;
}
if( !pContext )
- pContext = new SvXMLImportContext( GetImport(), nPrefix, rLName );
+ pContext = new SvXMLImportContext( GetImport() );
return pContext;
}
-void ScXMLDataPilotSubTotalsContext::EndElement()
+void SAL_CALL ScXMLDataPilotSubTotalsContext::endFastElement( sal_Int32 /*nElement*/ )
{
pDataPilotField->SetSubTotals(maFunctions);
if (!maDisplayName.isEmpty())
@@ -1478,34 +1326,29 @@ void ScXMLDataPilotSubTotalsContext::SetDisplayName(const OUString& rName)
}
ScXMLDataPilotSubTotalContext::ScXMLDataPilotSubTotalContext( ScXMLImport& rImport,
- sal_uInt16 nPrfx,
- const OUString& rLName,
- const css::uno::Reference<css::xml::sax::XAttributeList>& xAttrList,
+ sal_Int32 /*nElement*/,
+ const css::uno::Reference<css::xml::sax::XFastAttributeList>& xAttrList,
ScXMLDataPilotSubTotalsContext* pTempDataPilotSubTotals) :
- ScXMLImportContext( rImport, nPrfx, rLName ),
+ ScXMLImportContext( rImport ),
pDataPilotSubTotals(pTempDataPilotSubTotals)
{
- sal_Int16 nAttrCount = xAttrList.is() ? xAttrList->getLength() : 0;
- const SvXMLTokenMap& rAttrTokenMap = GetScImport().GetDataPilotSubTotalAttrTokenMap();
- for( sal_Int16 i=0; i < nAttrCount; ++i )
+ if ( xAttrList.is() )
{
- const OUString& sAttrName(xAttrList->getNameByIndex( i ));
- OUString aLocalName;
- sal_uInt16 nPrefix = GetScImport().GetNamespaceMap().GetKeyByAttrName(
- sAttrName, &aLocalName );
- const OUString& sValue(xAttrList->getValueByIndex( i ));
+ sax_fastparser::FastAttributeList *pAttribList =
+ sax_fastparser::FastAttributeList::castToFastAttributeList( xAttrList );
- switch( rAttrTokenMap.Get( nPrefix, aLocalName ) )
+ for (auto &aIter : *pAttribList)
{
- case XML_TOK_DATA_PILOT_SUBTOTAL_ATTR_FUNCTION :
+ switch (aIter.getToken())
{
- pDataPilotSubTotals->AddFunction( ScXMLConverter::GetFunctionFromString2( sValue ) );
+ case XML_ELEMENT( TABLE, XML_FUNCTION ):
+ pDataPilotSubTotals->AddFunction( ScXMLConverter::GetFunctionFromString2( aIter.toString() ) );
+ break;
+ case XML_ELEMENT( TABLE, XML_DISPLAY_NAME ):
+ case XML_ELEMENT( TABLE_EXT, XML_DISPLAY_NAME ):
+ pDataPilotSubTotals->SetDisplayName(aIter.toString());
+ break;
}
- break;
- case XML_TOK_DATA_PILOT_SUBTOTAL_ATTR_DISPLAY_NAME:
- case XML_TOK_DATA_PILOT_SUBTOTAL_ATTR_DISPLAY_NAME_EXT:
- pDataPilotSubTotals->SetDisplayName(sValue);
- break;
}
}
}
@@ -1514,23 +1357,11 @@ ScXMLDataPilotSubTotalContext::~ScXMLDataPilotSubTotalContext()
{
}
-SvXMLImportContext *ScXMLDataPilotSubTotalContext::CreateChildContext( sal_uInt16 nPrefix,
- const OUString& rLName,
- const css::uno::Reference<css::xml::sax::XAttributeList>& /* xAttrList */ )
-{
- return new SvXMLImportContext( GetImport(), nPrefix, rLName );
-}
-
-void ScXMLDataPilotSubTotalContext::EndElement()
-{
-}
-
ScXMLDataPilotMembersContext::ScXMLDataPilotMembersContext( ScXMLImport& rImport,
- sal_uInt16 nPrfx,
- const OUString& rLName,
- const css::uno::Reference<css::xml::sax::XAttributeList>& /* xAttrList */,
+ sal_Int32 /*nElement*/,
+ const css::uno::Reference<css::xml::sax::XFastAttributeList>& /* xAttrList */,
ScXMLDataPilotFieldContext* pTempDataPilotField) :
- ScXMLImportContext( rImport, nPrfx, rLName ),
+ ScXMLImportContext( rImport ),
pDataPilotField(pTempDataPilotField)
{
// has no attributes
@@ -1540,76 +1371,58 @@ ScXMLDataPilotMembersContext::~ScXMLDataPilotMembersContext()
{
}
-SvXMLImportContext *ScXMLDataPilotMembersContext::CreateChildContext( sal_uInt16 nPrefix,
- const OUString& rLName,
- const css::uno::Reference<
- css::xml::sax::XAttributeList>& xAttrList )
+uno::Reference< xml::sax::XFastContextHandler > SAL_CALL ScXMLDataPilotMembersContext::createFastChildContext(
+ sal_Int32 nElement, const uno::Reference< xml::sax::XFastAttributeList >& xAttrList )
{
SvXMLImportContext *pContext = nullptr;
- const SvXMLTokenMap& rTokenMap = GetScImport().GetDataPilotMembersElemTokenMap();
- switch( rTokenMap.Get( nPrefix, rLName ) )
+ switch (nElement)
{
- case XML_TOK_DATA_PILOT_MEMBERS_ELEM_DATA_PILOT_MEMBER :
- pContext = new ScXMLDataPilotMemberContext(GetScImport(), nPrefix, rLName, xAttrList, pDataPilotField);
+ case XML_ELEMENT( TABLE, XML_DATA_PILOT_MEMBER ):
+ pContext = new ScXMLDataPilotMemberContext(GetScImport(), nElement, xAttrList, pDataPilotField);
break;
}
if( !pContext )
- pContext = new SvXMLImportContext( GetImport(), nPrefix, rLName );
+ pContext = new SvXMLImportContext( GetImport() );
return pContext;
}
-void ScXMLDataPilotMembersContext::EndElement()
-{
-}
-
ScXMLDataPilotMemberContext::ScXMLDataPilotMemberContext( ScXMLImport& rImport,
- sal_uInt16 nPrfx,
- const OUString& rLName,
- const css::uno::Reference<css::xml::sax::XAttributeList>& xAttrList,
+ sal_Int32 /*nElement*/,
+ const css::uno::Reference<css::xml::sax::XFastAttributeList>& xAttrList,
ScXMLDataPilotFieldContext* pTempDataPilotField) :
- ScXMLImportContext( rImport, nPrfx, rLName ),
+ ScXMLImportContext( rImport ),
pDataPilotField(pTempDataPilotField),
bDisplay( true ),
bDisplayDetails( true ),
bHasName( false )
{
- sal_Int16 nAttrCount = xAttrList.is() ? xAttrList->getLength() : 0;
- const SvXMLTokenMap& rAttrTokenMap = GetScImport().GetDataPilotMemberAttrTokenMap();
- for( sal_Int16 i=0; i < nAttrCount; ++i )
+ if ( xAttrList.is() )
{
- const OUString& sAttrName(xAttrList->getNameByIndex( i ));
- OUString aLocalName;
- sal_uInt16 nPrefix = GetScImport().GetNamespaceMap().GetKeyByAttrName(
- sAttrName, &aLocalName );
- const OUString& sValue(xAttrList->getValueByIndex( i ));
+ sax_fastparser::FastAttributeList *pAttribList =
+ sax_fastparser::FastAttributeList::castToFastAttributeList( xAttrList );
- switch( rAttrTokenMap.Get( nPrefix, aLocalName ) )
+ for (auto &aIter : *pAttribList)
{
- case XML_TOK_DATA_PILOT_MEMBER_ATTR_NAME :
- {
- sName = sValue;
- bHasName = true;
- }
- break;
- case XML_TOK_DATA_PILOT_MEMBER_ATTR_DISPLAY_NAME:
- case XML_TOK_DATA_PILOT_MEMBER_ATTR_DISPLAY_NAME_EXT:
- {
- maDisplayName = sValue;
- }
- break;
- case XML_TOK_DATA_PILOT_MEMBER_ATTR_DISPLAY :
+ switch (aIter.getToken())
{
- bDisplay = IsXMLToken(sValue, XML_TRUE);
- }
- break;
- case XML_TOK_DATA_PILOT_MEMBER_ATTR_SHOW_DETAILS :
- {
- bDisplayDetails = IsXMLToken(sValue, XML_TRUE);
+ case XML_ELEMENT( TABLE, XML_NAME ):
+ sName = aIter.toString();
+ bHasName = true;
+ break;
+ case XML_ELEMENT( TABLE, XML_DISPLAY_NAME ):
+ case XML_ELEMENT( TABLE_EXT, XML_DISPLAY_NAME ):
+ maDisplayName = aIter.toString();
+ break;
+ case XML_ELEMENT( TABLE, XML_DISPLAY ):
+ bDisplay = IsXMLToken(aIter, XML_TRUE);
+ break;
+ case XML_ELEMENT( TABLE, XML_SHOW_DETAILS ):
+ bDisplayDetails = IsXMLToken(aIter, XML_TRUE);
+ break;
}
- break;
}
}
}
@@ -1618,14 +1431,7 @@ ScXMLDataPilotMemberContext::~ScXMLDataPilotMemberContext()
{
}
-SvXMLImportContext *ScXMLDataPilotMemberContext::CreateChildContext( sal_uInt16 nPrefix,
- const OUString& rLName,
- const css::uno::Reference<css::xml::sax::XAttributeList>& /* xAttrList */ )
-{
- return new SvXMLImportContext( GetImport(), nPrefix, rLName );
-}
-
-void ScXMLDataPilotMemberContext::EndElement()
+void SAL_CALL ScXMLDataPilotMemberContext::endFastElement( sal_Int32 /*nElement*/ )
{
if (bHasName) // #i53407# don't check sName, empty name is allowed
{
@@ -1639,11 +1445,10 @@ void ScXMLDataPilotMemberContext::EndElement()
}
ScXMLDataPilotGroupsContext::ScXMLDataPilotGroupsContext( ScXMLImport& rImport,
- sal_uInt16 nPrfx,
- const OUString& rLName,
- const css::uno::Reference<css::xml::sax::XAttributeList>& xAttrList,
+ sal_Int32 /*nElement*/,
+ const css::uno::Reference<css::xml::sax::XFastAttributeList>& xAttrList,
ScXMLDataPilotFieldContext* pTempDataPilotField) :
- ScXMLImportContext( rImport, nPrfx, rLName ),
+ ScXMLImportContext( rImport ),
pDataPilotField(pTempDataPilotField)
{
OUString sGroupSource;
@@ -1655,80 +1460,91 @@ ScXMLDataPilotGroupsContext::ScXMLDataPilotGroupsContext( ScXMLImport& rImport,
bool bAutoStart(true);
bool bAutoEnd(true);
- sal_Int16 nAttrCount = xAttrList.is() ? xAttrList->getLength() : 0;
- for( sal_Int16 i=0; i < nAttrCount; i++ )
+ if ( xAttrList.is() )
{
- OUString sAttrName = xAttrList->getNameByIndex( i );
- OUString aLocalName;
- GetScImport().GetNamespaceMap().GetKeyByAttrName(
- sAttrName, &aLocalName );
- OUString sValue = xAttrList->getValueByIndex( i );
-
- if (IsXMLToken(aLocalName, XML_SOURCE_FIELD_NAME))
- sGroupSource = sValue;
- else if (IsXMLToken(aLocalName, XML_DATE_START))
- {
- bDateValue = true;
- if (IsXMLToken(sValue, XML_AUTO))
- bAutoStart = true;
- else
- {
- GetScImport().GetMM100UnitConverter().convertDateTime(fStart, sValue);
- bAutoStart = false;
- }
- }
- else if (IsXMLToken(aLocalName, XML_DATE_END))
- {
- bDateValue = true;
- if (IsXMLToken(sValue, XML_AUTO))
- bAutoEnd = true;
- else
- {
- GetScImport().GetMM100UnitConverter().convertDateTime(fEnd, sValue);
- bAutoEnd = false;
- }
- }
- else if (IsXMLToken(aLocalName, XML_START))
- {
- if (IsXMLToken(sValue, XML_AUTO))
- bAutoStart = true;
- else
- {
- ::sax::Converter::convertDouble(fStart, sValue);
- bAutoStart = false;
- }
- }
- else if (IsXMLToken(aLocalName, XML_END))
+ sax_fastparser::FastAttributeList *pAttribList =
+ sax_fastparser::FastAttributeList::castToFastAttributeList( xAttrList );
+
+ for (auto &aIter : *pAttribList)
{
- if (IsXMLToken(sValue, XML_AUTO))
- bAutoEnd = true;
- else
+ switch (aIter.getToken() & TOKEN_MASK)
{
- ::sax::Converter::convertDouble(fEnd, sValue);
- bAutoEnd = false;
+ case XML_SOURCE_FIELD_NAME :
+ {
+ sGroupSource = aIter.toString();
+ }
+ break;
+ case XML_DATE_START :
+ {
+ bDateValue = true;
+ if (IsXMLToken(aIter, XML_AUTO))
+ bAutoStart = true;
+ else
+ {
+ GetScImport().GetMM100UnitConverter().convertDateTime(fStart, aIter.toString());
+ bAutoStart = false;
+ }
+ }
+ break;
+ case XML_DATE_END :
+ {
+ bDateValue = true;
+ if (IsXMLToken(aIter, XML_AUTO))
+ bAutoEnd = true;
+ else
+ {
+ GetScImport().GetMM100UnitConverter().convertDateTime(fEnd, aIter.toString());
+ bAutoEnd = false;
+ }
+ }
+ break;
+ case XML_START :
+ {
+ if (IsXMLToken(aIter, XML_AUTO))
+ bAutoStart = true;
+ else
+ {
+ ::sax::Converter::convertDouble(fStart, aIter.toString());
+ bAutoStart = false;
+ }
+ }
+ break;
+ case XML_END :
+ {
+ if (IsXMLToken(aIter, XML_AUTO))
+ bAutoEnd = true;
+ else
+ {
+ ::sax::Converter::convertDouble(fEnd, aIter.toString());
+ bAutoEnd = false;
+ }
+ }
+ break;
+ case XML_STEP :
+ {
+ ::sax::Converter::convertDouble(fStep, aIter.toString());
+ }
+ break;
+ case XML_GROUPED_BY :
+ {
+ if (IsXMLToken(aIter, XML_SECONDS))
+ nGroupPart = css::sheet::DataPilotFieldGroupBy::SECONDS;
+ else if (IsXMLToken(aIter, XML_MINUTES))
+ nGroupPart = css::sheet::DataPilotFieldGroupBy::MINUTES;
+ else if (IsXMLToken(aIter, XML_HOURS))
+ nGroupPart = css::sheet::DataPilotFieldGroupBy::HOURS;
+ else if (IsXMLToken(aIter, XML_DAYS))
+ nGroupPart = css::sheet::DataPilotFieldGroupBy::DAYS;
+ else if (IsXMLToken(aIter, XML_MONTHS))
+ nGroupPart = css::sheet::DataPilotFieldGroupBy::MONTHS;
+ else if (IsXMLToken(aIter, XML_QUARTERS))
+ nGroupPart = css::sheet::DataPilotFieldGroupBy::QUARTERS;
+ else if (IsXMLToken(aIter, XML_YEARS))
+ nGroupPart = css::sheet::DataPilotFieldGroupBy::YEARS;
+ }
+ break;
}
}
- else if (IsXMLToken(aLocalName, XML_STEP))
- {
- ::sax::Converter::convertDouble(fStep, sValue);
- }
- else if (IsXMLToken(aLocalName, XML_GROUPED_BY))
- {
- if (IsXMLToken(sValue, XML_SECONDS))
- nGroupPart = css::sheet::DataPilotFieldGroupBy::SECONDS;
- else if (IsXMLToken(sValue, XML_MINUTES))
- nGroupPart = css::sheet::DataPilotFieldGroupBy::MINUTES;
- else if (IsXMLToken(sValue, XML_HOURS))
- nGroupPart = css::sheet::DataPilotFieldGroupBy::HOURS;
- else if (IsXMLToken(sValue, XML_DAYS))
- nGroupPart = css::sheet::DataPilotFieldGroupBy::DAYS;
- else if (IsXMLToken(sValue, XML_MONTHS))
- nGroupPart = css::sheet::DataPilotFieldGroupBy::MONTHS;
- else if (IsXMLToken(sValue, XML_QUARTERS))
- nGroupPart = css::sheet::DataPilotFieldGroupBy::QUARTERS;
- else if (IsXMLToken(sValue, XML_YEARS))
- nGroupPart = css::sheet::DataPilotFieldGroupBy::YEARS;
- }
}
pDataPilotField->SetGrouping(sGroupSource, fStart, fEnd, fStep, nGroupPart, bDateValue, bAutoStart, bAutoEnd);
}
@@ -1737,50 +1553,37 @@ ScXMLDataPilotGroupsContext::~ScXMLDataPilotGroupsContext()
{
}
-SvXMLImportContext *ScXMLDataPilotGroupsContext::CreateChildContext( sal_uInt16 nPrefix,
- const OUString& rLName,
- const css::uno::Reference<css::xml::sax::XAttributeList>& xAttrList )
+uno::Reference< xml::sax::XFastContextHandler > SAL_CALL ScXMLDataPilotGroupsContext::createFastChildContext(
+ sal_Int32 nElement, const uno::Reference< xml::sax::XFastAttributeList >& xAttrList )
{
SvXMLImportContext *pContext = nullptr;
- if (nPrefix == XML_NAMESPACE_TABLE)
+ if (nElement == XML_ELEMENT( TABLE, XML_DATA_PILOT_GROUP ))
{
- if (IsXMLToken(rLName, XML_DATA_PILOT_GROUP))
- pContext = new ScXMLDataPilotGroupContext(GetScImport(), nPrefix, rLName, xAttrList, pDataPilotField);
+ pContext = new ScXMLDataPilotGroupContext(GetScImport(), nElement, xAttrList, pDataPilotField);
}
if( !pContext )
- pContext = new SvXMLImportContext( GetImport(), nPrefix, rLName );
+ pContext = new SvXMLImportContext( GetImport() );
return pContext;
}
-void ScXMLDataPilotGroupsContext::EndElement()
-{
-}
-
ScXMLDataPilotGroupContext::ScXMLDataPilotGroupContext( ScXMLImport& rImport,
- sal_uInt16 nPrfx,
- const OUString& rLName,
- const css::uno::Reference<css::xml::sax::XAttributeList>& xAttrList,
+ sal_Int32 /*nElement*/,
+ const css::uno::Reference<css::xml::sax::XFastAttributeList>& xAttrList,
ScXMLDataPilotFieldContext* pTempDataPilotField) :
- ScXMLImportContext( rImport, nPrfx, rLName ),
+ ScXMLImportContext( rImport ),
pDataPilotField(pTempDataPilotField)
{
- sal_Int16 nAttrCount = xAttrList.is() ? xAttrList->getLength() : 0;
- for( sal_Int16 i=0; i < nAttrCount; i++ )
+ if ( xAttrList.is() )
{
- OUString sAttrName = xAttrList->getNameByIndex( i );
- OUString aLocalName;
- sal_uInt16 nPrefix = GetScImport().GetNamespaceMap().GetKeyByAttrName(
- sAttrName, &aLocalName );
- OUString sValue = xAttrList->getValueByIndex( i );
+ sax_fastparser::FastAttributeList *pAttribList =
+ sax_fastparser::FastAttributeList::castToFastAttributeList( xAttrList );
- if (nPrefix == XML_NAMESPACE_TABLE)
- {
- if (IsXMLToken(aLocalName, XML_NAME))
- sName = sValue;
- }
+ auto &aIter( pAttribList->find( XML_ELEMENT( TABLE, XML_NAME ) ) );
+ if (aIter != pAttribList->end())
+ sName = aIter.toString();
}
}
@@ -1788,51 +1591,43 @@ ScXMLDataPilotGroupContext::~ScXMLDataPilotGroupContext()
{
}
-SvXMLImportContext *ScXMLDataPilotGroupContext::CreateChildContext( sal_uInt16 nPrefix,
- const OUString& rLName,
- const css::uno::Reference<css::xml::sax::XAttributeList>& xAttrList )
+uno::Reference< xml::sax::XFastContextHandler > SAL_CALL ScXMLDataPilotGroupContext::createFastChildContext(
+ sal_Int32 nElement, const uno::Reference< xml::sax::XFastAttributeList >& xAttrList )
{
SvXMLImportContext *pContext = nullptr;
- if (nPrefix == XML_NAMESPACE_TABLE)
+ if (nElement == XML_ELEMENT( TABLE, XML_DATA_PILOT_MEMBER ) ||
+ nElement == XML_ELEMENT( TABLE, XML_DATA_PILOT_GROUP_MEMBER ))
{
- if (IsXMLToken(rLName, XML_DATA_PILOT_MEMBER) || IsXMLToken(rLName, XML_DATA_PILOT_GROUP_MEMBER))
- pContext = new ScXMLDataPilotGroupMemberContext(GetScImport(), nPrefix, rLName, xAttrList, this);
+ pContext = new ScXMLDataPilotGroupMemberContext(GetScImport(), nElement, xAttrList, this);
}
if( !pContext )
- pContext = new SvXMLImportContext( GetImport(), nPrefix, rLName );
+ pContext = new SvXMLImportContext( GetImport() );
return pContext;
}
-void ScXMLDataPilotGroupContext::EndElement()
+void SAL_CALL ScXMLDataPilotGroupContext::endFastElement( sal_Int32 /*nElement*/ )
{
pDataPilotField->AddGroup(aMembers, sName);
}
ScXMLDataPilotGroupMemberContext::ScXMLDataPilotGroupMemberContext( ScXMLImport& rImport,
- sal_uInt16 nPrfx,
- const OUString& rLName,
- const css::uno::Reference<css::xml::sax::XAttributeList>& xAttrList,
+ sal_Int32 /*nElement*/,
+ const css::uno::Reference<css::xml::sax::XFastAttributeList>& xAttrList,
ScXMLDataPilotGroupContext* pTempDataPilotGroup) :
- ScXMLImportContext( rImport, nPrfx, rLName ),
+ ScXMLImportContext( rImport ),
pDataPilotGroup(pTempDataPilotGroup)
{
- sal_Int16 nAttrCount = xAttrList.is() ? xAttrList->getLength() : 0;
- for( sal_Int16 i=0; i < nAttrCount; i++ )
+ if ( xAttrList.is() )
{
- OUString sAttrName = xAttrList->getNameByIndex( i );
- OUString aLocalName;
- sal_uInt16 nPrefix = GetScImport().GetNamespaceMap().GetKeyByAttrName(
- sAttrName, &aLocalName );
- OUString sValue = xAttrList->getValueByIndex( i );
+ sax_fastparser::FastAttributeList *pAttribList =
+ sax_fastparser::FastAttributeList::castToFastAttributeList( xAttrList );
- if (nPrefix == XML_NAMESPACE_TABLE)
- {
- if (IsXMLToken(aLocalName, XML_NAME))
- sName = sValue;
- }
+ auto &aIter( pAttribList->find( XML_ELEMENT( TABLE, XML_NAME ) ) );
+ if (aIter != pAttribList->end())
+ sName = aIter.toString();
}
}
@@ -1840,14 +1635,7 @@ ScXMLDataPilotGroupMemberContext::~ScXMLDataPilotGroupMemberContext()
{
}
-SvXMLImportContext *ScXMLDataPilotGroupMemberContext::CreateChildContext( sal_uInt16 nPrefix,
- const OUString& rLName,
- const css::uno::Reference<css::xml::sax::XAttributeList>& /* xAttrList */ )
-{
- return new SvXMLImportContext( GetImport(), nPrefix, rLName );
-}
-
-void ScXMLDataPilotGroupMemberContext::EndElement()
+void SAL_CALL ScXMLDataPilotGroupMemberContext::endFastElement( sal_Int32 /*nElement*/ )
{
if (!sName.isEmpty())
pDataPilotGroup->AddMember(sName);
diff --git a/sc/source/filter/xml/xmldpimp.hxx b/sc/source/filter/xml/xmldpimp.hxx
index 5b48837fe8b5..5ab66f585a44 100644
--- a/sc/source/filter/xml/xmldpimp.hxx
+++ b/sc/source/filter/xml/xmldpimp.hxx
@@ -57,9 +57,8 @@ public:
virtual ~ScXMLDataPilotTablesContext() override;
- virtual SvXMLImportContext *CreateChildContext( sal_uInt16 nPrefix,
- const OUString& rLocalName,
- const css::uno::Reference<css::xml::sax::XAttributeList>& xAttrList ) override;
+ virtual css::uno::Reference< css::xml::sax::XFastContextHandler > SAL_CALL createFastChildContext(
+ sal_Int32 nElement, const css::uno::Reference< css::xml::sax::XFastAttributeList >& xAttrList ) override;
};
class ScXMLDataPilotTableContext : public ScXMLImportContext
@@ -114,17 +113,15 @@ class ScXMLDataPilotTableContext : public ScXMLImportContext
public:
- ScXMLDataPilotTableContext( ScXMLImport& rImport, sal_uInt16 nPrfx,
- const OUString& rLName,
- const css::uno::Reference<css::xml::sax::XAttributeList>& xAttrList);
+ ScXMLDataPilotTableContext( ScXMLImport& rImport, sal_Int32 nElement,
+ const css::uno::Reference<css::xml::sax::XFastAttributeList>& xAttrList);
virtual ~ScXMLDataPilotTableContext() override;
- virtual SvXMLImportContext *CreateChildContext( sal_uInt16 nPrefix,
- const OUString& rLocalName,
- const css::uno::Reference<css::xml::sax::XAttributeList>& xAttrList ) override;
+ virtual css::uno::Reference< css::xml::sax::XFastContextHandler > SAL_CALL createFastChildContext(
+ sal_Int32 nElement, const css::uno::Reference< css::xml::sax::XFastAttributeList >& xAttrList ) override;
- virtual void EndElement() override;
+ virtual void SAL_CALL endFastElement( sal_Int32 nElement ) override;
void SetGrandTotal(::xmloff::token::XMLTokenEnum eOrientation, bool bVisible, const OUString& rDisplayName);
void SetDatabaseName(const OUString& sValue) { sDatabaseName = sValue; }
@@ -153,18 +150,11 @@ class ScXMLDPSourceSQLContext : public ScXMLImportContext
public:
- ScXMLDPSourceSQLContext( ScXMLImport& rImport, sal_uInt16 nPrfx,
- const OUString& rLName,
- const css::uno::Reference<css::xml::sax::XAttributeList>& xAttrList,
+ ScXMLDPSourceSQLContext( ScXMLImport& rImport, sal_Int32 nElement,
+ const css::uno::Reference<css::xml::sax::XFastAttributeList>& xAttrList,
ScXMLDataPilotTableContext* pDataPilotTable);
virtual ~ScXMLDPSourceSQLContext() override;
-
- virtual SvXMLImportContext *CreateChildContext( sal_uInt16 nPrefix,
- const OUString& rLocalName,
- const css::uno::Reference<css::xml::sax::XAttributeList>& xAttrList ) override;
-
- virtual void EndElement() override;
};
class ScXMLDPSourceTableContext : public ScXMLImportContext
@@ -173,18 +163,11 @@ class ScXMLDPSourceTableContext : public ScXMLImportContext
public:
- ScXMLDPSourceTableContext( ScXMLImport& rImport, sal_uInt16 nPrfx,
- const OUString& rLName,
- const css::uno::Reference<css::xml::sax::XAttributeList>& xAttrList,
+ ScXMLDPSourceTableContext( ScXMLImport& rImport, sal_Int32 nElement,
+ const css::uno::Reference<css::xml::sax::XFastAttributeList>& xAttrList,
ScXMLDataPilotTableContext* pDataPilotTable);
virtual ~ScXMLDPSourceTableContext() override;
-
- virtual SvXMLImportContext *CreateChildContext( sal_uInt16 nPrefix,
- const OUString& rLocalName,
- const css::uno::Reference<css::xml::sax::XAttributeList>& xAttrList ) override;
-
- virtual void EndElement() override;
};
class ScXMLDPSourceQueryContext : public ScXMLImportContext
@@ -193,18 +176,11 @@ class ScXMLDPSourceQueryContext : public ScXMLImportContext
public:
- ScXMLDPSourceQueryContext( ScXMLImport& rImport, sal_uInt16 nPrfx,
- const OUString& rLName,
- const css::uno::Reference<css::xml::sax::XAttributeList>& xAttrList,
+ ScXMLDPSourceQueryContext( ScXMLImport& rImport, sal_Int32 nElement,
+ const css::uno::Reference<css::xml::sax::XFastAttributeList>& xAttrList,
ScXMLDataPilotTableContext* pDataPilotTable);
virtual ~ScXMLDPSourceQueryContext() override;
-
- virtual SvXMLImportContext *CreateChildContext( sal_uInt16 nPrefix,
- const OUString& rLocalName,
- const css::uno::Reference<css::xml::sax::XAttributeList>& xAttrList ) override;
-
- virtual void EndElement() override;
};
class ScXMLSourceServiceContext : public ScXMLImportContext
@@ -213,18 +189,11 @@ class ScXMLSourceServiceContext : public ScXMLImportContext
public:
- ScXMLSourceServiceContext( ScXMLImport& rImport, sal_uInt16 nPrfx,
- const OUString& rLName,
- const css::uno::Reference<css::xml::sax::XAttributeList>& xAttrList,
+ ScXMLSourceServiceContext( ScXMLImport& rImport, sal_Int32 nElement,
+ const css::uno::Reference<css::xml::sax::XFastAttributeList>& xAttrList,
ScXMLDataPilotTableContext* pDataPilotTable);
virtual ~ScXMLSourceServiceContext() override;
-
- virtual SvXMLImportContext *CreateChildContext( sal_uInt16 nPrefix,
- const OUString& rLocalName,
- const css::uno::Reference<css::xml::sax::XAttributeList>& xAttrList ) override;
-
- virtual void EndElement() override;
};
class ScXMLDataPilotGrandTotalContext : public ScXMLImportContext
@@ -238,17 +207,13 @@ class ScXMLDataPilotGrandTotalContext : public ScXMLImportContext
public:
ScXMLDataPilotGrandTotalContext(
- ScXMLImport& rImport, sal_uInt16 nPrefix, const OUString& rLName,
- const css::uno::Reference<css::xml::sax::XAttributeList>& xAttrList,
+ ScXMLImport& rImport, sal_Int32 nElement,
+ const css::uno::Reference<css::xml::sax::XFastAttributeList>& xAttrList,
ScXMLDataPilotTableContext* pTableContext );
virtual ~ScXMLDataPilotGrandTotalContext() override;
- virtual SvXMLImportContext *CreateChildContext( sal_uInt16 nPrefix,
- const OUString& rLocalName,
- const css::uno::Reference<css::xml::sax::XAttributeList>& xAttrList ) override;
-
- virtual void EndElement() override;
+ virtual void SAL_CALL endFastElement( sal_Int32 nElement ) override;
};
class ScXMLSourceCellRangeContext : public ScXMLImportContext
@@ -257,18 +222,14 @@ class ScXMLSourceCellRangeContext : public ScXMLImportContext
public:
- ScXMLSourceCellRangeContext( ScXMLImport& rImport, sal_uInt16 nPrfx,
- const OUString& rLName,
- const css::uno::Reference<css::xml::sax::XAttributeList>& xAttrList,
+ ScXMLSourceCellRangeContext( ScXMLImport& rImport, sal_Int32 nElement,
+ const css::uno::Reference<css::xml::sax::XFastAttributeList>& xAttrList,
ScXMLDataPilotTableContext* pDataPilotTable);
virtual ~ScXMLSourceCellRangeContext() override;
- virtual SvXMLImportContext *CreateChildContext( sal_uInt16 nPrefix,
- const OUString& rLocalName,
- const css::uno::Reference<css::xml::sax::XAttributeList>& xAttrList ) override;
-
- virtual void EndElement() override;
+ virtual css::uno::Reference< css::xml::sax::XFastContextHandler > SAL_CALL createFastChildContext(
+ sal_Int32 nElement, const css::uno::Reference< css::xml::sax::XFastAttributeList >& xAttrList ) override;
};
struct ScXMLDataPilotGroup
@@ -303,18 +264,16 @@ class ScXMLDataPilotFieldContext : public ScXMLImportContext
public:
- ScXMLDataPilotFieldContext( ScXMLImport& rImport, sal_uInt16 nPrfx,
- const OUString& rLName,
- const css::uno::Reference<css::xml::sax::XAttributeList>& xAttrList,
+ ScXMLDataPilotFieldContext( ScXMLImport& rImport, sal_Int32 nElement,
+ const css::uno::Reference<css::xml::sax::XFastAttributeList>& xAttrList,
ScXMLDataPilotTableContext* pDataPilotTable);
virtual ~ScXMLDataPilotFieldContext() override;
- virtual SvXMLImportContext *CreateChildContext( sal_uInt16 nPrefix,
- const OUString& rLocalName,
- const css::uno::Reference<css::xml::sax::XAttributeList>& xAttrList ) override;
+ virtual css::uno::Reference< css::xml::sax::XFastContextHandler > SAL_CALL createFastChildContext(
+ sal_Int32 nElement, const css::uno::Reference< css::xml::sax::XFastAttributeList >& xAttrList ) override;
- virtual void EndElement() override;
+ virtual void SAL_CALL endFastElement( sal_Int32 nElement ) override;
void SetShowEmpty(const bool bValue) { if (xDim) xDim->SetShowEmpty(bValue); }
void SetRepeatItemLabels(const bool bSet) { if (xDim) xDim->SetRepeatItemLabels(bSet); }
@@ -345,9 +304,8 @@ class ScXMLDataPilotFieldReferenceContext : public ScXMLImportContext
{
public:
- ScXMLDataPilotFieldReferenceContext( ScXMLImport& rImport, sal_uInt16 nPrfx,
- const OUString& rLName,
- const css::uno::Reference<css::xml::sax::XAttributeList>& xAttrList,
+ ScXMLDataPilotFieldReferenceContext( ScXMLImport& rImport, sal_Int32 nElement,
+ const css::uno::Reference<css::xml::sax::XFastAttributeList>& xAttrList,
ScXMLDataPilotFieldContext* pDataPilotField);
virtual ~ScXMLDataPilotFieldReferenceContext() override;
@@ -359,27 +317,22 @@ class ScXMLDataPilotLevelContext : public ScXMLImportContext
public:
- ScXMLDataPilotLevelContext( ScXMLImport& rImport, sal_uInt16 nPrfx,
- const OUString& rLName,
- const css::uno::Reference<css::xml::sax::XAttributeList>& xAttrList,
+ ScXMLDataPilotLevelContext( ScXMLImport& rImport, sal_Int32 nElement,
+ const css::uno::Reference<css::xml::sax::XFastAttributeList>& xAttrList,
ScXMLDataPilotFieldContext* pDataPilotField);
virtual ~ScXMLDataPilotLevelContext() override;
- virtual SvXMLImportContext *CreateChildContext( sal_uInt16 nPrefix,
- const OUString& rLocalName,
- const css::uno::Reference<css::xml::sax::XAttributeList>& xAttrList ) override;
-
- virtual void EndElement() override;
+ virtual css::uno::Reference< css::xml::sax::XFastContextHandler > SAL_CALL createFastChildContext(
+ sal_Int32 nElement, const css::uno::Reference< css::xml::sax::XFastAttributeList >& xAttrList ) override;
};
class ScXMLDataPilotDisplayInfoContext : public ScXMLImportContext
{
public:
- ScXMLDataPilotDisplayInfoContext( ScXMLImport& rImport, sal_uInt16 nPrfx,
- const OUString& rLName,
- const css::uno::Reference<css::xml::sax::XAttributeList>& xAttrList,
+ ScXMLDataPilotDisplayInfoContext( ScXMLImport& rImport, sal_Int32 nElement,
+ const css::uno::Reference<css::xml::sax::XFastAttributeList>& xAttrList,
ScXMLDataPilotFieldContext* pDataPilotField);
virtual ~ScXMLDataPilotDisplayInfoContext() override;
@@ -389,9 +342,8 @@ class ScXMLDataPilotSortInfoContext : public ScXMLImportContext
{
public:
- ScXMLDataPilotSortInfoContext( ScXMLImport& rImport, sal_uInt16 nPrfx,
- const OUString& rLName,
- const css::uno::Reference<css::xml::sax::XAttributeList>& xAttrList,
+ ScXMLDataPilotSortInfoContext( ScXMLImport& rImport, sal_Int32 nElement,
+ const css::uno::Reference<css::xml::sax::XFastAttributeList>& xAttrList,
ScXMLDataPilotFieldContext* pDataPilotField);
virtual ~ScXMLDataPilotSortInfoContext() override;
@@ -401,9 +353,8 @@ class ScXMLDataPilotLayoutInfoContext : public ScXMLImportContext
{
public:
- ScXMLDataPilotLayoutInfoContext( ScXMLImport& rImport, sal_uInt16 nPrfx,
- const OUString& rLName,
- const css::uno::Reference<css::xml::sax::XAttributeList>& xAttrList,
+ ScXMLDataPilotLayoutInfoContext( ScXMLImport& rImport, sal_Int32 nElement,
+ const css::uno::Reference<css::xml::sax::XFastAttributeList>& xAttrList,
ScXMLDataPilotFieldContext* pDataPilotField);
virtual ~ScXMLDataPilotLayoutInfoContext() override;
@@ -417,18 +368,16 @@ class ScXMLDataPilotSubTotalsContext : public ScXMLImportContext
OUString maDisplayName;
public:
- ScXMLDataPilotSubTotalsContext( ScXMLImport& rImport, sal_uInt16 nPrfx,
- const OUString& rLName,
- const css::uno::Reference<css::xml::sax::XAttributeList>& xAttrList,
+ ScXMLDataPilotSubTotalsContext( ScXMLImport& rImport, sal_Int32 nElement,
+ const css::uno::Reference<css::xml::sax::XFastAttributeList>& xAttrList,
ScXMLDataPilotFieldContext* pDataPilotField);
virtual ~ScXMLDataPilotSubTotalsContext() override;
- virtual SvXMLImportContext *CreateChildContext( sal_uInt16 nPrefix,
- const OUString& rLocalName,
- const css::uno::Reference<css::xml::sax::XAttributeList>& xAttrList ) override;
+ virtual css::uno::Reference< css::xml::sax::XFastContextHandler > SAL_CALL createFastChildContext(
+ sal_Int32 nElement, const css::uno::Reference< css::xml::sax::XFastAttributeList >& xAttrList ) override;
- virtual void EndElement() override;
+ virtual void SAL_CALL endFastElement( sal_Int32 nElement ) override;
void AddFunction(ScGeneralFunction nFunction);
void SetDisplayName(const OUString& rName);
};
@@ -439,18 +388,11 @@ class ScXMLDataPilotSubTotalContext : public ScXMLImportContext
public:
- ScXMLDataPilotSubTotalContext( ScXMLImport& rImport, sal_uInt16 nPrfx,
- const OUString& rLName,
- const css::uno::Reference<css::xml::sax::XAttributeList>& xAttrList,
+ ScXMLDataPilotSubTotalContext( ScXMLImport& rImport, sal_Int32 nElement,
+ const css::uno::Reference<css::xml::sax::XFastAttributeList>& xAttrList,
ScXMLDataPilotSubTotalsContext* pDataPilotSubTotals);
virtual ~ScXMLDataPilotSubTotalContext() override;
-
- virtual SvXMLImportContext *CreateChildContext( sal_uInt16 nPrefix,
- const OUString& rLocalName,
- const css::uno::Reference<css::xml::sax::XAttributeList>& xAttrList ) override;
-
- virtual void EndElement() override;
};
class ScXMLDataPilotMembersContext : public ScXMLImportContext
@@ -459,18 +401,14 @@ class ScXMLDataPilotMembersContext : public ScXMLImportContext
public:
- ScXMLDataPilotMembersContext( ScXMLImport& rImport, sal_uInt16 nPrfx,
- const OUString& rLName,
- const css::uno::Reference<css::xml::sax::XAttributeList>& xAttrList,
+ ScXMLDataPilotMembersContext( ScXMLImport& rImport, sal_Int32 nElement,
+ const css::uno::Reference<css::xml::sax::XFastAttributeList>& xAttrList,
ScXMLDataPilotFieldContext* pDataPilotField);
virtual ~ScXMLDataPilotMembersContext() override;
- virtual SvXMLImportContext *CreateChildContext( sal_uInt16 nPrefix,
- const OUString& rLocalName,
- const css::uno::Reference<css::xml::sax::XAttributeList>& xAttrList ) override;
-
- virtual void EndElement() override;
+ virtual css::uno::Reference< css::xml::sax::XFastContextHandler > SAL_CALL createFastChildContext(
+ sal_Int32 nElement, const css::uno::Reference< css::xml::sax::XFastAttributeList >& xAttrList ) override;
};
class ScXMLDataPilotMemberContext : public ScXMLImportContext
@@ -485,18 +423,13 @@ class ScXMLDataPilotMemberContext : public ScXMLImportContext
public:
- ScXMLDataPilotMemberContext( ScXMLImport& rImport, sal_uInt16 nPrfx,
- const OUString& rLName,
- const css::uno::Reference<css::xml::sax::XAttributeList>& xAttrList,
+ ScXMLDataPilotMemberContext( ScXMLImport& rImport, sal_Int32 nElement,
+ const css::uno::Reference<css::xml::sax::XFastAttributeList>& xAttrList,
ScXMLDataPilotFieldContext* pDataPilotField);
virtual ~ScXMLDataPilotMemberContext() override;
- virtual SvXMLImportContext *CreateChildContext( sal_uInt16 nPrefix,
- const OUString& rLocalName,
- const css::uno::Reference<css::xml::sax::XAttributeList>& xAttrList ) override;
-
- virtual void EndElement() override;
+ virtual void SAL_CALL endFastElement( sal_Int32 nElement ) override;
};
class ScXMLDataPilotGroupsContext : public ScXMLImportContext
@@ -505,18 +438,14 @@ class ScXMLDataPilotGroupsContext : public ScXMLImportContext
public:
- ScXMLDataPilotGroupsContext( ScXMLImport& rImport, sal_uInt16 nPrfx,
- const OUString& rLName,
- const css::uno::Reference<css::xml::sax::XAttributeList>& xAttrList,
+ ScXMLDataPilotGroupsContext( ScXMLImport& rImport, sal_Int32 nElement,
+ const css::uno::Reference<css::xml::sax::XFastAttributeList>& xAttrList,
ScXMLDataPilotFieldContext* pDataPilotField);
virtual ~ScXMLDataPilotGroupsContext() override;
- virtual SvXMLImportContext *CreateChildContext( sal_uInt16 nPrefix,
- const OUString& rLocalName,
- const css::uno::Reference<css::xml::sax::XAttributeList>& xAttrList ) override;
-
- virtual void EndElement() override;
+ virtual css::uno::Reference< css::xml::sax::XFastContextHandler > SAL_CALL createFastChildContext(
+ sal_Int32 nElement, const css::uno::Reference< css::xml::sax::XFastAttributeList >& xAttrList ) override;
};
class ScXMLDataPilotGroupContext : public ScXMLImportContext
@@ -528,18 +457,16 @@ class ScXMLDataPilotGroupContext : public ScXMLImportContext
public:
- ScXMLDataPilotGroupContext( ScXMLImport& rImport, sal_uInt16 nPrfx,
- const OUString& rLName,
- const css::uno::Reference<css::xml::sax::XAttributeList>& xAttrList,
+ ScXMLDataPilotGroupContext( ScXMLImport& rImport, sal_Int32 nElement,
+ const css::uno::Reference<css::xml::sax::XFastAttributeList>& xAttrList,
ScXMLDataPilotFieldContext* pDataPilotField);
virtual ~ScXMLDataPilotGroupContext() override;
- virtual SvXMLImportContext *CreateChildContext( sal_uInt16 nPrefix,
- const OUString& rLocalName,
- const css::uno::Reference<css::xml::sax::XAttributeList>& xAttrList ) override;
+ virtual css::uno::Reference< css::xml::sax::XFastContextHandler > SAL_CALL createFastChildContext(
+ sal_Int32 nElement, const css::uno::Reference< css::xml::sax::XFastAttributeList >& xAttrList ) override;
- virtual void EndElement() override;
+ virtual void SAL_CALL endFastElement( sal_Int32 nElement ) override;
void AddMember(const OUString& sMember) { aMembers.push_back(sMember); }
};
@@ -551,18 +478,13 @@ class ScXMLDataPilotGroupMemberContext : public ScXMLImportContext
public:
- ScXMLDataPilotGroupMemberContext( ScXMLImport& rImport, sal_uInt16 nPrfx,
- const OUString& rLName,
- const css::uno::Reference<css::xml::sax::XAttributeList>& xAttrList,
+ ScXMLDataPilotGroupMemberContext( ScXMLImport& rImport, sal_Int32 nElement,
+ const css::uno::Reference<css::xml::sax::XFastAttributeList>& xAttrList,
ScXMLDataPilotGroupContext* pDataPilotGroup);
virtual ~ScXMLDataPilotGroupMemberContext() override;
- virtual SvXMLImportContext *CreateChildContext( sal_uInt16 nPrefix,
- const OUString& rLocalName,
- const css::uno::Reference<css::xml::sax::XAttributeList>& xAttrList ) override;
-
- virtual void EndElement() override;
+ virtual void SAL_CALL endFastElement( sal_Int32 nElement ) override;
};
#endif
diff --git a/sc/source/filter/xml/xmlfilti.cxx b/sc/source/filter/xml/xmlfilti.cxx
index 43c8296e3d95..944b64834a3d 100644
--- a/sc/source/filter/xml/xmlfilti.cxx
+++ b/sc/source/filter/xml/xmlfilti.cxx
@@ -513,11 +513,10 @@ void ScXMLSetItemContext::EndElement()
}
ScXMLDPFilterContext::ScXMLDPFilterContext( ScXMLImport& rImport,
- sal_uInt16 nPrfx,
- const OUString& rLName,
- const css::uno::Reference<css::xml::sax::XAttributeList>& xAttrList,
+ sal_Int32 /*nElement*/,
+ const css::uno::Reference<css::xml::sax::XFastAttributeList>& xAttrList,
ScXMLDataPilotTableContext* pTempDataPilotTableContext) :
- ScXMLImportContext( rImport, nPrfx, rLName ),
+ ScXMLImportContext( rImport ),
pDataPilotTable(pTempDataPilotTableContext),
aFilterFields(),
eSearchType(utl::SearchParam::SearchType::Normal),
@@ -531,46 +530,44 @@ ScXMLDPFilterContext::ScXMLDPFilterContext( ScXMLImport& rImport,
{
ScDocument* pDoc(GetScImport().GetDocument());
- sal_Int16 nAttrCount(xAttrList.is() ? xAttrList->getLength() : 0);
- const SvXMLTokenMap& rAttrTokenMap(GetScImport().GetFilterAttrTokenMap());
- for( sal_Int16 i=0; i < nAttrCount; ++i )
+ if ( xAttrList.is() )
{
- const OUString& sAttrName(xAttrList->getNameByIndex( i ));
- OUString aLocalName;
- sal_uInt16 nPrefix(GetScImport().GetNamespaceMap().GetKeyByAttrName(
- sAttrName, &aLocalName ));
- const OUString& sValue(xAttrList->getValueByIndex( i ));
+ sax_fastparser::FastAttributeList *pAttribList =
+ sax_fastparser::FastAttributeList::castToFastAttributeList( xAttrList );
- switch( rAttrTokenMap.Get( nPrefix, aLocalName ) )
+ for (auto &aIter : *pAttribList)
{
- case XML_TOK_FILTER_ATTR_TARGET_RANGE_ADDRESS :
+ switch (aIter.getToken())
{
- ScRange aScRange;
- sal_Int32 nOffset(0);
- if (ScRangeStringConverter::GetRangeFromString( aScRange, sValue, pDoc, ::formula::FormulaGrammar::CONV_OOO, nOffset ))
+ case XML_ELEMENT( TABLE, XML_TARGET_RANGE_ADDRESS ):
{
- aOutputPosition = aScRange.aStart;
- bCopyOutputData = true;
+ ScRange aScRange;
+ sal_Int32 nOffset(0);
+ if (ScRangeStringConverter::GetRangeFromString( aScRange, aIter.toString(), pDoc, ::formula::FormulaGrammar::CONV_OOO, nOffset ))
+ {
+ aOutputPosition = aScRange.aStart;
+ bCopyOutputData = true;
+ }
+ }
+ break;
+ case XML_ELEMENT( TABLE, XML_CONDITION_SOURCE_RANGE_ADDRESS ):
+ {
+ sal_Int32 nOffset(0);
+ if(ScRangeStringConverter::GetRangeFromString( aConditionSourceRangeAddress, aIter.toString(), pDoc, ::formula::FormulaGrammar::CONV_OOO, nOffset ))
+ bConditionSourceRange = true;
+ }
+ break;
+ case XML_ELEMENT( TABLE, XML_CONDITION_SOURCE ):
+ {
+ // not supported by StarOffice
+ }
+ break;
+ case XML_ELEMENT( TABLE, XML_DISPLAY_DUPLICATES ):
+ {
+ bSkipDuplicates = !IsXMLToken(aIter, XML_TRUE);
+ }
+ break;
}
- }
- break;
- case XML_TOK_FILTER_ATTR_CONDITION_SOURCE_RANGE_ADDRESS :
- {
- sal_Int32 nOffset(0);
- if(ScRangeStringConverter::GetRangeFromString( aConditionSourceRangeAddress, sValue, pDoc, ::formula::FormulaGrammar::CONV_OOO, nOffset ))
- bConditionSourceRange = true;
- }
- break;
- case XML_TOK_FILTER_ATTR_CONDITION_SOURCE :
- {
- // not supported by StarOffice
- }
- break;
- case XML_TOK_FILTER_ATTR_DISPLAY_DUPLICATES :
- {
- bSkipDuplicates = !IsXMLToken(sValue, XML_TRUE);
- }
- break;
}
}
}
@@ -614,7 +611,7 @@ SvXMLImportContext *ScXMLDPFilterContext::CreateChildContext( sal_uInt16 nPrefix
return pContext;
}
-void ScXMLDPFilterContext::EndElement()
+void SAL_CALL ScXMLDPFilterContext::endFastElement( sal_Int32 /*nElement*/ )
{
aFilterFields.eSearchType = eSearchType;
aFilterFields.bCaseSens = bIsCaseSensitive;
diff --git a/sc/source/filter/xml/xmlfilti.hxx b/sc/source/filter/xml/xmlfilti.hxx
index 29d2d3416f75..8767d4957091 100644
--- a/sc/source/filter/xml/xmlfilti.hxx
+++ b/sc/source/filter/xml/xmlfilti.hxx
@@ -188,9 +188,8 @@ class ScXMLDPFilterContext : public ScXMLImportContext
public:
- ScXMLDPFilterContext( ScXMLImport& rImport, sal_uInt16 nPrfx,
- const OUString& rLName,
- const css::uno::Reference<css::xml::sax::XAttributeList>& xAttrList,
+ ScXMLDPFilterContext( ScXMLImport& rImport, sal_Int32 nElement,
+ const css::uno::Reference<css::xml::sax::XFastAttributeList>& xAttrList,
ScXMLDataPilotTableContext* pTempDataPilotTableContext);
virtual ~ScXMLDPFilterContext() override;
@@ -199,7 +198,7 @@ public:
const OUString& rLocalName,
const css::uno::Reference<css::xml::sax::XAttributeList>& xAttrList ) override;
- virtual void EndElement() override;
+ virtual void SAL_CALL endFastElement( sal_Int32 nElement ) override;
void SetIsCaseSensitive(const bool bTemp) { bIsCaseSensitive = bTemp; }
void SetSearchType(const utl::SearchParam::SearchType eTemp)