summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMohammed Abdul Azeem <azeemmysore@gmail.com>2017-06-29 23:39:07 +0530
committerMohammed Abdul Azeem <azeemmysore@gmail.com>2017-07-01 06:32:03 +0200
commit4b5f5f868fa6a7c86535d251e77d8a6d956f2fa4 (patch)
tree288b13073c8220da91fcec9183b5844164ad079a
parentcac5c9f6081590b0548d3116bc4cd4a2509ec576 (diff)
Moving legacy contexts to FastContexts:
ScXMLTrackedChangesContext ScXMLCalculationSettingsContext ScXMLContentValidationsContext ScXMLLabelRangesContext ScXMLNamedExpressionsContext ScXMLDatabaseRangesContext ScXMLDatabaseRangeContext ScXMLDataPilotTablesContext ScXMLConsolidationContext ScXMLDDELinksContext ScXMLDataStreamContext Change-Id: I702d30e01af5e3707d34303ddebc3d07913d67e3 Reviewed-on: https://gerrit.libreoffice.org/39397 Tested-by: Jenkins <ci@libreoffice.org> Reviewed-by: Michael Meeks <michael.meeks@collabora.com>
-rw-r--r--sc/source/filter/xml/XMLCalculationSettingsContext.cxx69
-rw-r--r--sc/source/filter/xml/XMLCalculationSettingsContext.hxx7
-rw-r--r--sc/source/filter/xml/XMLConsolidationContext.cxx64
-rw-r--r--sc/source/filter/xml/XMLConsolidationContext.hxx7
-rw-r--r--sc/source/filter/xml/XMLDDELinksContext.cxx11
-rw-r--r--sc/source/filter/xml/XMLDDELinksContext.hxx7
-rw-r--r--sc/source/filter/xml/XMLTrackedChangesContext.cxx36
-rw-r--r--sc/source/filter/xml/XMLTrackedChangesContext.hxx5
-rw-r--r--sc/source/filter/xml/datastreamimport.cxx68
-rw-r--r--sc/source/filter/xml/datastreamimport.hxx6
-rw-r--r--sc/source/filter/xml/importcontext.cxx6
-rw-r--r--sc/source/filter/xml/importcontext.hxx4
-rw-r--r--sc/source/filter/xml/xmlbodyi.cxx109
-rw-r--r--sc/source/filter/xml/xmlbodyi.hxx4
-rw-r--r--sc/source/filter/xml/xmlcvali.cxx11
-rw-r--r--sc/source/filter/xml/xmlcvali.hxx7
-rw-r--r--sc/source/filter/xml/xmldpimp.cxx11
-rw-r--r--sc/source/filter/xml/xmldpimp.hxx7
-rw-r--r--sc/source/filter/xml/xmldrani.cxx164
-rw-r--r--sc/source/filter/xml/xmldrani.hxx20
-rw-r--r--sc/source/filter/xml/xmllabri.cxx11
-rw-r--r--sc/source/filter/xml/xmllabri.hxx6
-rw-r--r--sc/source/filter/xml/xmlnexpi.cxx12
-rw-r--r--sc/source/filter/xml/xmlnexpi.hxx6
-rw-r--r--sc/source/filter/xml/xmltabi.cxx16
25 files changed, 284 insertions, 390 deletions
diff --git a/sc/source/filter/xml/XMLCalculationSettingsContext.cxx b/sc/source/filter/xml/XMLCalculationSettingsContext.cxx
index 452cd3f97836..f39ccebe5eb6 100644
--- a/sc/source/filter/xml/XMLCalculationSettingsContext.cxx
+++ b/sc/source/filter/xml/XMLCalculationSettingsContext.cxx
@@ -32,10 +32,9 @@ using namespace com::sun::star;
using namespace xmloff::token;
ScXMLCalculationSettingsContext::ScXMLCalculationSettingsContext( 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 ),
fIterationEpsilon(0.001),
nIterationCount(100),
nYear2000(1930),
@@ -49,53 +48,45 @@ ScXMLCalculationSettingsContext::ScXMLCalculationSettingsContext( ScXMLImport& r
aNullDate.Day = 30;
aNullDate.Month = 12;
aNullDate.Year = 1899;
- sal_Int16 nAttrCount = xAttrList.is() ? xAttrList->getLength() : 0;
- 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 =
+ static_cast< sax_fastparser::FastAttributeList *>( xAttrList.get() );
- if (nPrefix == XML_NAMESPACE_TABLE)
+ for( auto &aIter : *pAttribList )
{
- if (IsXMLToken(aLocalName, XML_CASE_SENSITIVE))
+ switch( aIter.getToken() )
{
- if (IsXMLToken(sValue, XML_FALSE))
+ case XML_ELEMENT( TABLE, XML_CASE_SENSITIVE ):
+ if( IsXMLToken( aIter.toCString(), XML_FALSE ) )
bIgnoreCase = true;
- }
- else if (IsXMLToken(aLocalName, XML_PRECISION_AS_SHOWN))
- {
- if (IsXMLToken(sValue, XML_TRUE))
+ break;
+ case XML_ELEMENT( TABLE, XML_PRECISION_AS_SHOWN ):
+ if( IsXMLToken( aIter.toCString(), XML_TRUE ) )
bCalcAsShown = true;
- }
- else if (IsXMLToken(aLocalName, XML_SEARCH_CRITERIA_MUST_APPLY_TO_WHOLE_CELL))
- {
- if (IsXMLToken(sValue, XML_FALSE))
+ break;
+ case XML_ELEMENT( TABLE, XML_SEARCH_CRITERIA_MUST_APPLY_TO_WHOLE_CELL ):
+ if( IsXMLToken( aIter.toCString(), XML_FALSE ) )
bMatchWholeCell = false;
- }
- else if (IsXMLToken(aLocalName, XML_AUTOMATIC_FIND_LABELS))
- {
- if (IsXMLToken(sValue, XML_FALSE))
+ break;
+ case XML_ELEMENT( TABLE, XML_AUTOMATIC_FIND_LABELS ):
+ if( IsXMLToken( aIter.toCString(), XML_FALSE ) )
bLookUpLabels = false;
- }
- else if (IsXMLToken(aLocalName, XML_NULL_YEAR))
- {
+ break;
+ case XML_ELEMENT( TABLE, XML_NULL_YEAR ):
sal_Int32 nTemp;
- ::sax::Converter::convertNumber(nTemp, sValue);
+ ::sax::Converter::convertNumber( nTemp, aIter.toString() );
nYear2000 = static_cast<sal_uInt16>(nTemp);
- }
- else if (IsXMLToken(aLocalName, XML_USE_REGULAR_EXPRESSIONS))
- {
+ break;
+ case XML_ELEMENT( TABLE, XML_USE_REGULAR_EXPRESSIONS ):
// Overwrite only the default (regex true) value, not wildcard.
- if (eSearchType == utl::SearchParam::SearchType::Regexp && IsXMLToken(sValue, XML_FALSE))
+ if( eSearchType == utl::SearchParam::SearchType::Regexp && IsXMLToken( aIter.toCString(), XML_FALSE ) )
eSearchType = utl::SearchParam::SearchType::Normal;
- }
- else if (IsXMLToken(aLocalName, XML_USE_WILDCARDS))
- {
- if (IsXMLToken(sValue, XML_TRUE))
+ break;
+ case XML_ELEMENT( TABLE, XML_USE_WILDCARDS ):
+ if( IsXMLToken( aIter.toCString(), XML_TRUE ) )
eSearchType = utl::SearchParam::SearchType::Wildcard;
+ break;
}
}
}
@@ -125,7 +116,7 @@ SvXMLImportContext *ScXMLCalculationSettingsContext::CreateChildContext( sal_uIn
return pContext;
}
-void ScXMLCalculationSettingsContext::EndElement()
+void SAL_CALL ScXMLCalculationSettingsContext::endFastElement( sal_Int32 /*nElement*/ )
{
if (GetScImport().GetModel().is())
{
diff --git a/sc/source/filter/xml/XMLCalculationSettingsContext.hxx b/sc/source/filter/xml/XMLCalculationSettingsContext.hxx
index 3ad233a39407..fb0cd553a673 100644
--- a/sc/source/filter/xml/XMLCalculationSettingsContext.hxx
+++ b/sc/source/filter/xml/XMLCalculationSettingsContext.hxx
@@ -41,9 +41,8 @@ class ScXMLCalculationSettingsContext : public ScXMLImportContext
bool bMatchWholeCell;
public:
- ScXMLCalculationSettingsContext( ScXMLImport& rImport, sal_uInt16 nPrfx,
- const OUString& rLName,
- const css::uno::Reference< css::xml::sax::XAttributeList>& xAttrList);
+ ScXMLCalculationSettingsContext( ScXMLImport& rImport, sal_Int32 nElement,
+ const css::uno::Reference< css::xml::sax::XFastAttributeList>& xAttrList);
virtual ~ScXMLCalculationSettingsContext() override;
@@ -55,7 +54,7 @@ public:
void SetIterationStatus(const bool bValue) { bIsIterationEnabled = bValue; }
void SetIterationCount(const sal_Int32 nValue) { nIterationCount = nValue; }
void SetIterationEpsilon(const double fValue) { fIterationEpsilon = fValue; }
- virtual void EndElement() override;
+ virtual void SAL_CALL endFastElement( sal_Int32 Element ) override;
};
class ScXMLNullDateContext : public ScXMLImportContext
diff --git a/sc/source/filter/xml/XMLConsolidationContext.cxx b/sc/source/filter/xml/XMLConsolidationContext.cxx
index 217327a4a8cb..8e27b573de7b 100644
--- a/sc/source/filter/xml/XMLConsolidationContext.cxx
+++ b/sc/source/filter/xml/XMLConsolidationContext.cxx
@@ -24,54 +24,50 @@
#include "XMLConverter.hxx"
#include <xmloff/nmspmap.hxx>
#include <xmloff/xmltoken.hxx>
+#include <xmloff/xmlnmspe.hxx>
using namespace ::com::sun::star;
using namespace xmloff::token;
ScXMLConsolidationContext::ScXMLConsolidationContext(
ScXMLImport& rImport,
- sal_uInt16 nPrfx,
- const OUString& rLName,
- const uno::Reference< xml::sax::XAttributeList >& xAttrList ) :
- ScXMLImportContext( rImport, nPrfx, rLName ),
+ sal_Int32 /*nElement*/,
+ const uno::Reference< xml::sax::XFastAttributeList >& xAttrList ) :
+ ScXMLImportContext( rImport ),
eFunction( SUBTOTAL_FUNC_NONE ),
bLinkToSource( false ),
bTargetAddr(false)
{
rImport.LockSolarMutex();
- if( !xAttrList.is() ) return;
-
- sal_Int16 nAttrCount = xAttrList->getLength();
- const SvXMLTokenMap& rAttrTokenMap = GetScImport().GetConsolidationAttrTokenMap();
-
- for( sal_Int16 nIndex = 0; nIndex < nAttrCount; ++nIndex )
+ if( xAttrList.is() )
{
- const OUString& sAttrName (xAttrList->getNameByIndex( nIndex ));
- const OUString& sValue (xAttrList->getValueByIndex( nIndex ));
- OUString aLocalName;
- sal_uInt16 nPrefix = GetScImport().GetNamespaceMap().GetKeyByAttrName( sAttrName, &aLocalName );
+ sax_fastparser::FastAttributeList *pAttribList =
+ static_cast< sax_fastparser::FastAttributeList *>( xAttrList.get() );
- switch( rAttrTokenMap.Get( nPrefix, aLocalName ) )
+ for( auto &aIter : *pAttribList )
{
- case XML_TOK_CONSOLIDATION_ATTR_FUNCTION:
- eFunction = ScXMLConverter::GetSubTotalFuncFromString( sValue );
- break;
- case XML_TOK_CONSOLIDATION_ATTR_SOURCE_RANGES:
- sSourceList = sValue;
- break;
- case XML_TOK_CONSOLIDATION_ATTR_TARGET_ADDRESS:
- {
- sal_Int32 nOffset(0);
- bTargetAddr = ScRangeStringConverter::GetAddressFromString(
- aTargetAddr, sValue, GetScImport().GetDocument(), ::formula::FormulaGrammar::CONV_OOO, nOffset );
- }
+ switch( aIter.getToken() )
+ {
+ case XML_ELEMENT( TABLE, XML_FUNCTION ):
+ eFunction = ScXMLConverter::GetSubTotalFuncFromString( aIter.toString() );
+ break;
+ case XML_ELEMENT( TABLE, XML_SOURCE_CELL_RANGE_ADDRESSES ):
+ sSourceList = aIter.toString();
+ break;
+ case XML_ELEMENT( TABLE, XML_TARGET_CELL_ADDRESS ):
+ {
+ sal_Int32 nOffset(0);
+ bTargetAddr = ScRangeStringConverter::GetAddressFromString(
+ aTargetAddr, aIter.toString(), GetScImport().GetDocument(), ::formula::FormulaGrammar::CONV_OOO, nOffset );
+ }
+ break;
+ case XML_ELEMENT( TABLE, XML_USE_LABEL ):
+ sUseLabel = aIter.toString();
break;
- case XML_TOK_CONSOLIDATION_ATTR_USE_LABEL:
- sUseLabel = sValue;
- break;
- case XML_TOK_CONSOLIDATION_ATTR_LINK_TO_SOURCE:
- bLinkToSource = IsXMLToken(sValue, XML_TRUE);
- break;
+ case XML_ELEMENT( TABLE, XML_LINK_TO_SOURCE_DATA ):
+ bLinkToSource = IsXMLToken( aIter.toCString(), XML_TRUE );
+ break;
+ }
}
}
}
@@ -89,7 +85,7 @@ SvXMLImportContext *ScXMLConsolidationContext::CreateChildContext(
return new SvXMLImportContext( GetImport(), nPrefix, rLName );
}
-void ScXMLConsolidationContext::EndElement()
+void SAL_CALL ScXMLConsolidationContext::endFastElement( sal_Int32 /*nElement*/ )
{
if (bTargetAddr)
{
diff --git a/sc/source/filter/xml/XMLConsolidationContext.hxx b/sc/source/filter/xml/XMLConsolidationContext.hxx
index 499aab1ed55f..3a7ebf272331 100644
--- a/sc/source/filter/xml/XMLConsolidationContext.hxx
+++ b/sc/source/filter/xml/XMLConsolidationContext.hxx
@@ -40,9 +40,8 @@ private:
public:
ScXMLConsolidationContext(
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
);
virtual ~ScXMLConsolidationContext() override;
@@ -51,7 +50,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;
};
#endif
diff --git a/sc/source/filter/xml/XMLDDELinksContext.cxx b/sc/source/filter/xml/XMLDDELinksContext.cxx
index 4b0260231ad8..dc179e1c1451 100644
--- a/sc/source/filter/xml/XMLDDELinksContext.cxx
+++ b/sc/source/filter/xml/XMLDDELinksContext.cxx
@@ -32,10 +32,9 @@ using namespace com::sun::star;
using namespace xmloff::token;
ScXMLDDELinksContext::ScXMLDDELinksContext( 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 )
{
// here are no attributes
rImport.LockSolarMutex();
@@ -61,10 +60,6 @@ SvXMLImportContext *ScXMLDDELinksContext::CreateChildContext( sal_uInt16 nPrefix
return pContext;
}
-void ScXMLDDELinksContext::EndElement()
-{
-}
-
ScXMLDDELinkContext::ScXMLDDELinkContext( ScXMLImport& rImport,
sal_uInt16 nPrfx,
const OUString& rLName,
diff --git a/sc/source/filter/xml/XMLDDELinksContext.hxx b/sc/source/filter/xml/XMLDDELinksContext.hxx
index 43cfccab9758..79ec32644e7d 100644
--- a/sc/source/filter/xml/XMLDDELinksContext.hxx
+++ b/sc/source/filter/xml/XMLDDELinksContext.hxx
@@ -28,17 +28,14 @@
class ScXMLDDELinksContext : public ScXMLImportContext
{
public:
- ScXMLDDELinksContext( ScXMLImport& rImport, sal_uInt16 nPrfx,
- const OUString& rLName,
- const css::uno::Reference<css::xml::sax::XAttributeList>& xAttrList);
+ ScXMLDDELinksContext( ScXMLImport& rImport, sal_Int32 nElement,
+ const css::uno::Reference<css::xml::sax::XFastAttributeList>& xAttrList);
virtual ~ScXMLDDELinksContext() override;
virtual SvXMLImportContext *CreateChildContext( sal_uInt16 nPrefix,
const OUString& rLocalName,
const css::uno::Reference<css::xml::sax::XAttributeList>& xAttrList ) override;
-
- virtual void EndElement() override;
};
struct ScDDELinkCell
diff --git a/sc/source/filter/xml/XMLTrackedChangesContext.cxx b/sc/source/filter/xml/XMLTrackedChangesContext.cxx
index e6b3427eb9a0..ab95b71bc461 100644
--- a/sc/source/filter/xml/XMLTrackedChangesContext.cxx
+++ b/sc/source/filter/xml/XMLTrackedChangesContext.cxx
@@ -384,33 +384,27 @@ public:
};
ScXMLTrackedChangesContext::ScXMLTrackedChangesContext( ScXMLImport& rImport,
- sal_uInt16 nPrfx,
- const OUString& rLName,
- const uno::Reference<xml::sax::XAttributeList>& xAttrList,
+ sal_Int32 /*nElement*/,
+ const uno::Reference<xml::sax::XFastAttributeList>& xAttrList,
ScXMLChangeTrackingImportHelper* pTempChangeTrackingImportHelper ) :
- ScXMLImportContext( rImport, nPrfx, rLName ),
+ ScXMLImportContext( rImport ),
pChangeTrackingImportHelper(pTempChangeTrackingImportHelper)
{
rImport.LockSolarMutex();
- sal_Int16 nAttrCount(xAttrList.is() ? xAttrList->getLength() : 0);
- 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 ));
- if (nPrefix == XML_NAMESPACE_TABLE)
+ sax_fastparser::FastAttributeList *pAttribList =
+ static_cast< sax_fastparser::FastAttributeList *>( xAttrList.get() );
+
+ auto aIter( pAttribList->find( XML_ELEMENT( TABLE, XML_PROTECTION_KEY ) ) );
+ if( aIter != pAttribList->end() )
{
- if (IsXMLToken(aLocalName, XML_PROTECTION_KEY))
+ if( !aIter.isEmpty() )
{
- if (!sValue.isEmpty())
- {
- uno::Sequence<sal_Int8> aPass;
- ::sax::Converter::decodeBase64(aPass, sValue);
- pChangeTrackingImportHelper->SetProtection(aPass);
- }
+ uno::Sequence<sal_Int8> aPass;
+ ::sax::Converter::decodeBase64( aPass, aIter.toString() );
+ pChangeTrackingImportHelper->SetProtection(aPass);
}
}
}
@@ -457,10 +451,6 @@ SvXMLImportContext *ScXMLTrackedChangesContext::CreateChildContext( sal_uInt16 n
return pContext;
}
-void ScXMLTrackedChangesContext::EndElement()
-{
-}
-
ScXMLChangeInfoContext::ScXMLChangeInfoContext( ScXMLImport& rImport,
sal_uInt16 nPrfx,
const OUString& rLName,
diff --git a/sc/source/filter/xml/XMLTrackedChangesContext.hxx b/sc/source/filter/xml/XMLTrackedChangesContext.hxx
index c3313161f007..e059a8682abb 100644
--- a/sc/source/filter/xml/XMLTrackedChangesContext.hxx
+++ b/sc/source/filter/xml/XMLTrackedChangesContext.hxx
@@ -34,15 +34,14 @@ class ScXMLTrackedChangesContext : public ScXMLImportContext
ScXMLChangeTrackingImportHelper* pChangeTrackingImportHelper;
public:
- ScXMLTrackedChangesContext( ScXMLImport& rImport, sal_uInt16 nPrfx, const OUString& rLName,
- const css::uno::Reference<css::xml::sax::XAttributeList>& xAttrList,
+ ScXMLTrackedChangesContext( ScXMLImport& rImport, sal_Int32 nElement,
+ const css::uno::Reference<css::xml::sax::XFastAttributeList>& xAttrList,
ScXMLChangeTrackingImportHelper* pChangeTrackingImportHelper);
virtual ~ScXMLTrackedChangesContext() override;
virtual SvXMLImportContext *CreateChildContext( sal_uInt16 nPrefix,
const OUString& rLocalName,
const css::uno::Reference<css::xml::sax::XAttributeList>& xAttrList ) override;
- virtual void EndElement() override;
};
#endif
diff --git a/sc/source/filter/xml/datastreamimport.cxx b/sc/source/filter/xml/datastreamimport.cxx
index a764718e0c33..5e19c5215c15 100644
--- a/sc/source/filter/xml/datastreamimport.cxx
+++ b/sc/source/filter/xml/datastreamimport.cxx
@@ -13,6 +13,7 @@
#include <rangeutl.hxx>
#include <importfilterdata.hxx>
#include <xmloff/nmspmap.hxx>
+#include <xmloff/xmlnmspe.hxx>
#include <xmloff/xmltoken.hxx>
#include <formula/grammar.hxx>
@@ -20,56 +21,51 @@ using namespace com::sun::star;
using namespace xmloff::token;
ScXMLDataStreamContext::ScXMLDataStreamContext(
- ScXMLImport& rImport, sal_uInt16 nPrefix, const OUString& rLocalName,
- const css::uno::Reference< css::xml::sax::XAttributeList>& xAttrList ) :
- ScXMLImportContext(rImport, nPrefix, rLocalName),
+ ScXMLImport& rImport, sal_Int32 /*nElement*/,
+ const css::uno::Reference< css::xml::sax::XFastAttributeList>& xAttrList ) :
+ ScXMLImportContext(rImport),
mbRefreshOnEmpty(false),
meInsertPos(sc::ImportPostProcessData::DataStream::InsertBottom)
{
- if (!xAttrList.is())
- return;
-
- const SvXMLTokenMap& rAttrTokenMap = GetScImport().GetDataStreamAttrTokenMap();
-
- for (sal_Int32 i = 0; i < xAttrList->getLength(); ++i)
+ if( xAttrList.is() )
{
- const OUString& rName = xAttrList->getNameByIndex(i);
- OUString aLocalName;
- sal_uInt16 nLocalPrefix =
- GetScImport().GetNamespaceMap().GetKeyByAttrName(rName, &aLocalName);
+ sax_fastparser::FastAttributeList *pAttribList =
+ static_cast< sax_fastparser::FastAttributeList *>( xAttrList.get() );
- const OUString& rVal = xAttrList->getValueByIndex(i);
- switch (rAttrTokenMap.Get(nLocalPrefix, aLocalName))
+ for( auto &aIter : *pAttribList )
{
- case XML_TOK_DATA_STREAM_ATTR_URL:
- maURL = GetScImport().GetAbsoluteReference(rVal);
- break;
- case XML_TOK_DATA_STREAM_ATTR_RANGE:
+ switch ( aIter.getToken() )
{
- ScDocument* pDoc = GetScImport().GetDocument();
- sal_Int32 nOffset = 0;
- if (!ScRangeStringConverter::GetRangeFromString(
- maRange, rVal, pDoc, formula::FormulaGrammar::CONV_OOO, nOffset))
- maRange.SetInvalid();
+ case XML_ELEMENT( XLINK, XML_HREF ):
+ maURL = GetScImport().GetAbsoluteReference( aIter.toString() );
+ break;
+ case XML_ELEMENT( TABLE, XML_TARGET_RANGE_ADDRESS ):
+ {
+ ScDocument* pDoc = GetScImport().GetDocument();
+ sal_Int32 nOffset = 0;
+ if (!ScRangeStringConverter::GetRangeFromString(
+ maRange, aIter.toString(), pDoc, formula::FormulaGrammar::CONV_OOO, nOffset))
+ maRange.SetInvalid();
+ }
+ break;
+ case XML_ELEMENT( CALC_EXT, XML_EMPTY_LINE_REFRESH ):
+ mbRefreshOnEmpty = IsXMLToken( aIter.toCString(), XML_TRUE );
+ break;
+ case XML_ELEMENT( CALC_EXT, XML_INSERTION_POSITION ):
+ meInsertPos = IsXMLToken( aIter.toCString(), XML_TOP ) ?
+ sc::ImportPostProcessData::DataStream::InsertTop :
+ sc::ImportPostProcessData::DataStream::InsertBottom;
+ break;
+ default:
+ ;
}
- break;
- case XML_TOK_DATA_STREAM_ATTR_EMPTY_LINE_REFRESH:
- mbRefreshOnEmpty = IsXMLToken(rVal, XML_TRUE);
- break;
- case XML_TOK_DATA_STREAM_ATTR_INSERTION_POSITION:
- meInsertPos = IsXMLToken(rVal, XML_TOP) ?
- sc::ImportPostProcessData::DataStream::InsertTop :
- sc::ImportPostProcessData::DataStream::InsertBottom;
- break;
- default:
- ;
}
}
}
ScXMLDataStreamContext::~ScXMLDataStreamContext() {}
-void ScXMLDataStreamContext::EndElement()
+void SAL_CALL ScXMLDataStreamContext::endFastElement( sal_Int32 /*nElement*/ )
{
if (!maRange.IsValid())
// Range must be valid.
diff --git a/sc/source/filter/xml/datastreamimport.hxx b/sc/source/filter/xml/datastreamimport.hxx
index 0459b8d2fce4..91980ea2f4f0 100644
--- a/sc/source/filter/xml/datastreamimport.hxx
+++ b/sc/source/filter/xml/datastreamimport.hxx
@@ -24,12 +24,12 @@ class ScXMLDataStreamContext : public ScXMLImportContext
public:
ScXMLDataStreamContext(
- ScXMLImport& rImport, sal_uInt16 nPrefix, const OUString& rLocalName,
- const css::uno::Reference< css::xml::sax::XAttributeList>& xAttrList );
+ ScXMLImport& rImport, sal_Int32 nElement,
+ const css::uno::Reference< css::xml::sax::XFastAttributeList>& xAttrList );
virtual ~ScXMLDataStreamContext() override;
- virtual void EndElement() override;
+ virtual void SAL_CALL endFastElement( sal_Int32 nElement ) override;
};
#endif
diff --git a/sc/source/filter/xml/importcontext.cxx b/sc/source/filter/xml/importcontext.cxx
index d0bceeddbcd7..3622c14ca018 100644
--- a/sc/source/filter/xml/importcontext.cxx
+++ b/sc/source/filter/xml/importcontext.cxx
@@ -42,4 +42,10 @@ void SAL_CALL ScXMLImportContext::characters(const OUString &)
{
}
+css::uno::Reference< css::xml::sax::XFastContextHandler > SAL_CALL ScXMLImportContext::createFastChildContext(
+ sal_Int32/* nElement */, const css::uno::Reference< css::xml::sax::XFastAttributeList >&/* xAttrList */ )
+{
+ return new SvXMLImportContext( GetImport() );
+}
+
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/sc/source/filter/xml/importcontext.hxx b/sc/source/filter/xml/importcontext.hxx
index 089b6c1027cb..8332fa5a5d37 100644
--- a/sc/source/filter/xml/importcontext.hxx
+++ b/sc/source/filter/xml/importcontext.hxx
@@ -33,6 +33,10 @@ public:
virtual void SAL_CALL endFastElement(sal_Int32 nElement) override;
+ virtual css::uno::Reference< css::xml::sax::XFastContextHandler > SAL_CALL createFastChildContext(
+ sal_Int32 nElement, const css::uno::Reference< css::xml::sax::XFastAttributeList >& Attribs ) override;
+
+
protected:
ScXMLImport& GetScImport();
const ScXMLImport& GetScImport() const;
diff --git a/sc/source/filter/xml/xmlbodyi.cxx b/sc/source/filter/xml/xmlbodyi.cxx
index 4aec839b76e7..e6f7bdfa8e7b 100644
--- a/sc/source/filter/xml/xmlbodyi.cxx
+++ b/sc/source/filter/xml/xmlbodyi.cxx
@@ -121,9 +121,9 @@ ScXMLBodyContext::~ScXMLBodyContext()
{
}
-SvXMLImportContext *ScXMLBodyContext::CreateChildContext( sal_uInt16 nPrefix,
- const OUString& rLocalName,
- const css::uno::Reference< css::xml::sax::XAttributeList>& xAttrList )
+uno::Reference< xml::sax::XFastContextHandler > SAL_CALL
+ ScXMLBodyContext::createFastChildContext( sal_Int32 nElement,
+ const uno::Reference< xml::sax::XFastAttributeList > & xAttrList )
{
ScSheetSaveData* pSheetData = ScModelObj::getImplementation(GetScImport().GetModel())->GetSheetSaveData();
if ( pSheetData && pSheetData->HasStartPos() )
@@ -135,94 +135,65 @@ SvXMLImportContext *ScXMLBodyContext::CreateChildContext( sal_uInt16 nPrefix,
SvXMLImportContext *pContext = nullptr;
- const SvXMLTokenMap& rTokenMap = GetScImport().GetBodyElemTokenMap();
- switch( rTokenMap.Get( nPrefix, rLocalName ) )
+ switch( nElement )
{
- case XML_TOK_BODY_TRACKED_CHANGES :
+ case XML_ELEMENT( TABLE, XML_TRACKED_CHANGES ):
pChangeTrackingImportHelper = GetScImport().GetChangeTrackingImportHelper();
if (pChangeTrackingImportHelper)
- pContext = new ScXMLTrackedChangesContext( GetScImport(), nPrefix, rLocalName, xAttrList, pChangeTrackingImportHelper);
+ pContext = new ScXMLTrackedChangesContext( GetScImport(), nElement, xAttrList, pChangeTrackingImportHelper);
break;
- case XML_TOK_BODY_CALCULATION_SETTINGS :
- pContext = new ScXMLCalculationSettingsContext( GetScImport(), nPrefix, rLocalName, xAttrList );
+ case XML_ELEMENT( TABLE, XML_CALCULATION_SETTINGS ):
+ pContext = new ScXMLCalculationSettingsContext( GetScImport(), nElement, xAttrList );
bHadCalculationSettings = true;
break;
- case XML_TOK_BODY_CONTENT_VALIDATIONS :
- pContext = new ScXMLContentValidationsContext( GetScImport(), nPrefix, rLocalName, xAttrList );
+ case XML_ELEMENT( TABLE, XML_CONTENT_VALIDATIONS ):
+ pContext = new ScXMLContentValidationsContext( GetScImport(), nElement, xAttrList );
break;
- case XML_TOK_BODY_LABEL_RANGES:
- pContext = new ScXMLLabelRangesContext( GetScImport(), nPrefix, rLocalName, xAttrList );
+ case XML_ELEMENT( TABLE, XML_LABEL_RANGES ):
+ pContext = new ScXMLLabelRangesContext( GetScImport(), nElement, xAttrList );
+ break;
+ case XML_ELEMENT( TABLE, XML_TABLE ):
+ if (GetScImport().GetTables().GetCurrentSheet() >= MAXTAB)
+ {
+ GetScImport().SetRangeOverflowType(SCWARN_IMPORT_SHEET_OVERFLOW);
+ pContext = new ScXMLEmptyContext(GetScImport() );
+ }
+ else
+ {
+ pContext = new ScXMLTableContext( GetScImport(), xAttrList );
+ }
break;
- case XML_TOK_BODY_NAMED_EXPRESSIONS:
+ case XML_ELEMENT( TABLE, XML_NAMED_EXPRESSIONS ):
pContext = new ScXMLNamedExpressionsContext (
- GetScImport(), nPrefix, rLocalName, xAttrList,
+ GetScImport(), nElement, xAttrList,
new ScXMLNamedExpressionsContext::GlobalInserter(GetScImport()) );
break;
- case XML_TOK_BODY_DATABASE_RANGES:
- pContext = new ScXMLDatabaseRangesContext ( GetScImport(), nPrefix, rLocalName,
+ case XML_ELEMENT( TABLE, XML_DATABASE_RANGES ):
+ pContext = new ScXMLDatabaseRangesContext ( GetScImport(), nElement,
xAttrList );
break;
- case XML_TOK_BODY_DATABASE_RANGE:
- pContext = new ScXMLDatabaseRangeContext ( GetScImport(), nPrefix, rLocalName,
+ case XML_ELEMENT( TABLE, XML_DATABASE_RANGE ):
+ pContext = new ScXMLDatabaseRangeContext ( GetScImport(), nElement,
xAttrList );
break;
- case XML_TOK_BODY_DATA_PILOT_TABLES:
- pContext = new ScXMLDataPilotTablesContext ( GetScImport(), nPrefix, rLocalName,
+ case XML_ELEMENT( TABLE, XML_DATA_PILOT_TABLES ):
+ pContext = new ScXMLDataPilotTablesContext ( GetScImport(), nElement,
xAttrList );
break;
- case XML_TOK_BODY_CONSOLIDATION:
- pContext = new ScXMLConsolidationContext ( GetScImport(), nPrefix, rLocalName,
+ case XML_ELEMENT( TABLE, XML_CONSOLIDATION ):
+ pContext = new ScXMLConsolidationContext ( GetScImport(), nElement,
xAttrList );
break;
- case XML_TOK_BODY_DDE_LINKS:
- pContext = new ScXMLDDELinksContext ( GetScImport(), nPrefix, rLocalName,
+ case XML_ELEMENT( TABLE, XML_DDE_LINKS ):
+ pContext = new ScXMLDDELinksContext ( GetScImport(), nElement,
xAttrList );
break;
- case XML_TOK_BODY_DATA_STREAM_SOURCE:
- pContext = new ScXMLDataStreamContext(GetScImport(), nPrefix, rLocalName, xAttrList);
+ case XML_ELEMENT( CALC_EXT, XML_DATA_STREAM_SOURCE ):
+ pContext = new ScXMLDataStreamContext(GetScImport(), nElement, xAttrList);
break;
}
if( !pContext )
- pContext = new SvXMLImportContext( GetImport(), nPrefix, rLocalName );
-
- return pContext;
-}
-
-uno::Reference< xml::sax::XFastContextHandler > SAL_CALL
- ScXMLBodyContext::createFastChildContext( sal_Int32 nElement,
- const uno::Reference< xml::sax::XFastAttributeList > & xAttrList )
-{
- ScSheetSaveData* pSheetData = ScModelObj::getImplementation(GetScImport().GetModel())->GetSheetSaveData();
- if ( pSheetData && pSheetData->HasStartPos() )
- {
- // stream part to copy ends before the next child element
- sal_Int32 nEndOffset = GetScImport().GetByteOffset();
- pSheetData->EndStreamPos( nEndOffset );
- }
-
- SvXMLImportContext *pContext = nullptr;
-
- switch( nElement )
- {
- case XML_ELEMENT( TABLE, XML_TABLE ):
- if (GetScImport().GetTables().GetCurrentSheet() >= MAXTAB)
- {
- GetScImport().SetRangeOverflowType(SCWARN_IMPORT_SHEET_OVERFLOW);
- pContext = new ScXMLEmptyContext(GetScImport() );
- }
- else
- {
- pContext = new ScXMLTableContext( GetScImport(), xAttrList );
- }
- break;
-
- // TODO: handle all other cases
- default:
- pContext = new SvXMLImportContext( GetImport() );
- }
-
- if( !pContext )
pContext = new SvXMLImportContext( GetImport() );
return pContext;
@@ -240,7 +211,7 @@ void SAL_CALL ScXMLBodyContext::characters(const OUString &)
// otherwise ignore
}
-void SAL_CALL ScXMLBodyContext::endFastElement(sal_Int32 /*nElement*/)
+void SAL_CALL ScXMLBodyContext::endFastElement(sal_Int32 nElement)
{
ScSheetSaveData* pSheetData = ScModelObj::getImplementation(GetScImport().GetModel())->GetSheetSaveData();
if ( pSheetData && pSheetData->HasStartPos() )
@@ -261,8 +232,8 @@ void SAL_CALL ScXMLBodyContext::endFastElement(sal_Int32 /*nElement*/)
if (!bHadCalculationSettings)
{
// #111055#; set calculation settings defaults if there is no calculation settings element
- rtl::Reference<ScXMLCalculationSettingsContext> pContext( new ScXMLCalculationSettingsContext(GetScImport(), XML_NAMESPACE_TABLE, GetXMLToken(XML_CALCULATION_SETTINGS), nullptr) );
- pContext->EndElement();
+ rtl::Reference<ScXMLCalculationSettingsContext> pContext( new ScXMLCalculationSettingsContext(GetScImport(), nElement, nullptr) );
+ pContext->endFastElement( nElement );
}
ScXMLImport::MutexGuard aGuard(GetScImport());
diff --git a/sc/source/filter/xml/xmlbodyi.hxx b/sc/source/filter/xml/xmlbodyi.hxx
index e0b9db6458e1..a6cc7d629021 100644
--- a/sc/source/filter/xml/xmlbodyi.hxx
+++ b/sc/source/filter/xml/xmlbodyi.hxx
@@ -46,10 +46,6 @@ public:
virtual ~ScXMLBodyContext() 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;
diff --git a/sc/source/filter/xml/xmlcvali.cxx b/sc/source/filter/xml/xmlcvali.cxx
index af76bf829149..286928e35bdd 100644
--- a/sc/source/filter/xml/xmlcvali.cxx
+++ b/sc/source/filter/xml/xmlcvali.cxx
@@ -140,10 +140,9 @@ public:
};
ScXMLContentValidationsContext::ScXMLContentValidationsContext( 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 )
{
// here are no attributes
}
@@ -172,10 +171,6 @@ SvXMLImportContext *ScXMLContentValidationsContext::CreateChildContext( sal_uInt
return pContext;
}
-void ScXMLContentValidationsContext::EndElement()
-{
-}
-
ScXMLContentValidationContext::ScXMLContentValidationContext( ScXMLImport& rImport,
sal_uInt16 nPrfx,
const OUString& rLName,
diff --git a/sc/source/filter/xml/xmlcvali.hxx b/sc/source/filter/xml/xmlcvali.hxx
index e353d73f4b19..c19a9fa5849a 100644
--- a/sc/source/filter/xml/xmlcvali.hxx
+++ b/sc/source/filter/xml/xmlcvali.hxx
@@ -32,17 +32,14 @@ class ScXMLContentValidationsContext : public ScXMLImportContext
{
public:
- ScXMLContentValidationsContext( ScXMLImport& rImport, sal_uInt16 nPrfx,
- const OUString& rLName,
- const css::uno::Reference<css::xml::sax::XAttributeList>& xAttrList);
+ ScXMLContentValidationsContext( ScXMLImport& rImport, sal_Int32 nElement,
+ const css::uno::Reference<css::xml::sax::XFastAttributeList>& xAttrList);
virtual ~ScXMLContentValidationsContext() override;
virtual SvXMLImportContext *CreateChildContext( sal_uInt16 nPrefix,
const OUString& rLocalName,
const css::uno::Reference<css::xml::sax::XAttributeList>& xAttrList ) override;
-
- virtual void EndElement() override;
};
#endif
diff --git a/sc/source/filter/xml/xmldpimp.cxx b/sc/source/filter/xml/xmldpimp.cxx
index c8e0d366a76b..481bd976b3f8 100644
--- a/sc/source/filter/xml/xmldpimp.cxx
+++ b/sc/source/filter/xml/xmldpimp.cxx
@@ -56,10 +56,9 @@ using ::com::sun::star::uno::Reference;
using ::com::sun::star::xml::sax::XAttributeList;
ScXMLDataPilotTablesContext::ScXMLDataPilotTablesContext( 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 )
{
// has no Attributes
rImport.LockSolarMutex();
@@ -93,10 +92,6 @@ SvXMLImportContext *ScXMLDataPilotTablesContext::CreateChildContext( sal_uInt16
return pContext;
}
-void ScXMLDataPilotTablesContext::EndElement()
-{
-}
-
ScXMLDataPilotTableContext::GrandTotalItem::GrandTotalItem() :
mbVisible(true) {}
diff --git a/sc/source/filter/xml/xmldpimp.hxx b/sc/source/filter/xml/xmldpimp.hxx
index 2b9b6698f6d0..5b48837fe8b5 100644
--- a/sc/source/filter/xml/xmldpimp.hxx
+++ b/sc/source/filter/xml/xmldpimp.hxx
@@ -52,17 +52,14 @@ class ScXMLDataPilotTablesContext : public ScXMLImportContext
{
public:
- ScXMLDataPilotTablesContext( ScXMLImport& rImport, sal_uInt16 nPrfx,
- const OUString& rLName,
- const css::uno::Reference<css::xml::sax::XAttributeList>& xAttrList);
+ ScXMLDataPilotTablesContext( ScXMLImport& rImport, sal_Int32 nElement,
+ const css::uno::Reference<css::xml::sax::XFastAttributeList>& xAttrList);
virtual ~ScXMLDataPilotTablesContext() 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 ScXMLDataPilotTableContext : public ScXMLImportContext
diff --git a/sc/source/filter/xml/xmldrani.cxx b/sc/source/filter/xml/xmldrani.cxx
index eab22def3a85..f75322824351 100644
--- a/sc/source/filter/xml/xmldrani.cxx
+++ b/sc/source/filter/xml/xmldrani.cxx
@@ -53,10 +53,9 @@ using namespace com::sun::star;
using namespace xmloff::token;
ScXMLDatabaseRangesContext::ScXMLDatabaseRangesContext( 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 )
{
// has no attributes
rImport.LockSolarMutex();
@@ -67,38 +66,31 @@ ScXMLDatabaseRangesContext::~ScXMLDatabaseRangesContext()
GetScImport().UnlockSolarMutex();
}
-SvXMLImportContext *ScXMLDatabaseRangesContext::CreateChildContext( sal_uInt16 nPrefix,
- const OUString& rLName,
- const css::uno::Reference<css::xml::sax::XAttributeList>& xAttrList )
+uno::Reference< xml::sax::XFastContextHandler > SAL_CALL ScXMLDatabaseRangesContext::createFastChildContext(
+ sal_Int32 nElement,
+ const uno::Reference< xml::sax::XFastAttributeList >& xAttrList )
{
SvXMLImportContext *pContext = nullptr;
- const SvXMLTokenMap& rTokenMap = GetScImport().GetDatabaseRangesElemTokenMap();
- switch( rTokenMap.Get( nPrefix, rLName ) )
+ switch( nElement )
{
- case XML_TOK_DATABASE_RANGE :
+ case XML_ELEMENT( TABLE, XML_DATABASE_RANGE ):
{
- pContext = new ScXMLDatabaseRangeContext( GetScImport(), nPrefix,
- rLName, xAttrList);
+ pContext = new ScXMLDatabaseRangeContext( GetScImport(), nElement, xAttrList );
}
break;
}
if( !pContext )
- pContext = new SvXMLImportContext( GetImport(), nPrefix, rLName );
+ pContext = new SvXMLImportContext( GetImport() );
return pContext;
}
-void ScXMLDatabaseRangesContext::EndElement()
-{
-}
-
ScXMLDatabaseRangeContext::ScXMLDatabaseRangeContext( 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 ),
mpQueryParam(new ScQueryParam),
sDatabaseRangeName(STR_DB_LOCAL_NONAME),
aSortSequence(),
@@ -125,76 +117,74 @@ ScXMLDatabaseRangeContext::ScXMLDatabaseRangeContext( ScXMLImport& rImport,
meRangeType(ScDBCollection::GlobalNamed)
{
nSourceType = sheet::DataImportMode_NONE;
- sal_Int16 nAttrCount = xAttrList.is() ? xAttrList->getLength() : 0;
- const SvXMLTokenMap& rAttrTokenMap = GetScImport().GetDatabaseRangeAttrTokenMap();
- 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 =
+ static_cast< sax_fastparser::FastAttributeList *>( xAttrList.get() );
- switch( rAttrTokenMap.Get( nPrefix, aLocalName ) )
+ for( auto &aIter : *pAttribList )
{
- case XML_TOK_DATABASE_RANGE_ATTR_NAME :
- {
- sDatabaseRangeName = sValue;
- }
- break;
- case XML_TOK_DATABASE_RANGE_ATTR_IS_SELECTION :
- {
- bIsSelection = IsXMLToken(sValue, XML_TRUE);
- }
- break;
- case XML_TOK_DATABASE_RANGE_ATTR_ON_UPDATE_KEEP_STYLES :
- {
- bKeepFormats = IsXMLToken(sValue, XML_TRUE);
- }
- break;
- case XML_TOK_DATABASE_RANGE_ATTR_ON_UPDATE_KEEP_SIZE :
- {
- bMoveCells = !IsXMLToken(sValue, XML_TRUE);
- }
- break;
- case XML_TOK_DATABASE_RANGE_ATTR_HAS_PERSISTENT_DATA :
- {
- bStripData = !IsXMLToken(sValue, XML_TRUE);
- }
- break;
- case XML_TOK_DATABASE_RANGE_ATTR_ORIENTATION :
- {
- bByRow = !IsXMLToken(sValue, XML_COLUMN);
- mpQueryParam->bByRow = bByRow;
- }
- break;
- case XML_TOK_DATABASE_RANGE_ATTR_CONTAINS_HEADER :
- {
- bHasHeader = IsXMLToken(sValue, XML_TRUE);
- mpQueryParam->bHasHeader = bHasHeader;
- }
- break;
- case XML_TOK_DATABASE_RANGE_ATTR_DISPLAY_FILTER_BUTTONS :
- {
- bAutoFilter = IsXMLToken(sValue, XML_TRUE);
- }
- break;
- case XML_TOK_DATABASE_RANGE_ATTR_TARGET_RANGE_ADDRESS :
+ switch( aIter.getToken() )
{
- ScDocument* pDoc = GetScImport().GetDocument();
- sal_Int32 nOffset = 0;
- if (!ScRangeStringConverter::GetRangeFromString(
- maRange, sValue, pDoc, ::formula::FormulaGrammar::CONV_OOO, nOffset))
- mbValidRange = false;
- }
- break;
- case XML_TOK_DATABASE_RANGE_ATTR_REFRESH_DELAY :
- {
- double fTime;
- if (::sax::Converter::convertDuration( fTime, sValue ))
- nRefresh = std::max( (sal_Int32)(fTime * 86400.0), (sal_Int32)0 );
+ case XML_ELEMENT( TABLE, XML_NAME ):
+ {
+ sDatabaseRangeName = aIter.toString();
+ }
+ break;
+ case XML_ELEMENT( TABLE, XML_IS_SELECTION ):
+ {
+ bIsSelection = IsXMLToken( aIter.toCString(), XML_TRUE );
+ }
+ break;
+ case XML_ELEMENT( TABLE, XML_ON_UPDATE_KEEP_STYLES ):
+ {
+ bKeepFormats = IsXMLToken( aIter.toCString(), XML_TRUE );
+ }
+ break;
+ case XML_ELEMENT( TABLE, XML_ON_UPDATE_KEEP_SIZE ):
+ {
+ bMoveCells = !IsXMLToken( aIter.toCString(), XML_TRUE );
+ }
+ break;
+ case XML_ELEMENT( TABLE, XML_HAS_PERSISTENT_DATA ):
+ {
+ bStripData = !IsXMLToken( aIter.toCString(), XML_TRUE );
+ }
+ break;
+ case XML_ELEMENT( TABLE, XML_ORIENTATION ):
+ {
+ bByRow = !IsXMLToken( aIter.toCString(), XML_COLUMN );
+ mpQueryParam->bByRow = bByRow;
+ }
+ break;
+ case XML_ELEMENT( TABLE, XML_CONTAINS_HEADER ):
+ {
+ bHasHeader = IsXMLToken( aIter.toCString(), XML_TRUE );
+ mpQueryParam->bHasHeader = bHasHeader;
+ }
+ break;
+ case XML_ELEMENT( TABLE, XML_DISPLAY_FILTER_BUTTONS ):
+ {
+ bAutoFilter = IsXMLToken( aIter.toCString(), XML_TRUE );
+ }
+ break;
+ case XML_ELEMENT( TABLE, XML_TARGET_RANGE_ADDRESS ):
+ {
+ ScDocument* pDoc = GetScImport().GetDocument();
+ sal_Int32 nOffset = 0;
+ if (!ScRangeStringConverter::GetRangeFromString(
+ maRange, aIter.toString(), pDoc, ::formula::FormulaGrammar::CONV_OOO, nOffset))
+ mbValidRange = false;
+ }
+ break;
+ case XML_ELEMENT( TABLE, XML_REFRESH_DELAY ):
+ {
+ double fTime;
+ if (::sax::Converter::convertDuration( fTime, aIter.toString() ))
+ nRefresh = std::max( (sal_Int32)(fTime * 86400.0), (sal_Int32)0 );
+ }
+ break;
}
- break;
}
}
@@ -420,7 +410,7 @@ bool setAutoFilterFlags(ScDocument& rDoc, const ScDBData& rData)
}
-void ScXMLDatabaseRangeContext::EndElement()
+void SAL_CALL ScXMLDatabaseRangeContext::endFastElement( sal_Int32 /*nElement*/ )
{
ScDocument* pDoc = GetScImport().GetDocument();
if (!pDoc)
diff --git a/sc/source/filter/xml/xmldrani.hxx b/sc/source/filter/xml/xmldrani.hxx
index afdc1cf8d014..65d5bd64a35f 100644
--- a/sc/source/filter/xml/xmldrani.hxx
+++ b/sc/source/filter/xml/xmldrani.hxx
@@ -39,17 +39,14 @@ class ScXMLDatabaseRangesContext : public ScXMLImportContext
{
public:
- ScXMLDatabaseRangesContext( ScXMLImport& rImport, sal_uInt16 nPrfx,
- const OUString& rLName,
- const css::uno::Reference<css::xml::sax::XAttributeList>& xAttrList);
+ ScXMLDatabaseRangesContext( ScXMLImport& rImport, sal_Int32 nElement,
+ const css::uno::Reference<css::xml::sax::XFastAttributeList>& xAttrList);
virtual ~ScXMLDatabaseRangesContext() 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 ScSubTotalRule
@@ -96,9 +93,8 @@ class ScXMLDatabaseRangeContext : public ScXMLImportContext
public:
- ScXMLDatabaseRangeContext( ScXMLImport& rImport, sal_uInt16 nPrfx,
- const OUString& rLName,
- const css::uno::Reference<css::xml::sax::XAttributeList>& xAttrList);
+ ScXMLDatabaseRangeContext( ScXMLImport& rImport, sal_Int32 nElement,
+ const css::uno::Reference<css::xml::sax::XFastAttributeList>& xAttrList);
virtual ~ScXMLDatabaseRangeContext() override;
@@ -106,7 +102,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 SetDatabaseName(const OUString& sTempDatabaseName) { sDatabaseName = sTempDatabaseName; }
void SetConnectionResource(const OUString& sTempConRes) { sConnectionResource = sTempConRes; }
diff --git a/sc/source/filter/xml/xmllabri.cxx b/sc/source/filter/xml/xmllabri.cxx
index 49fcd87d8844..0712a600f35c 100644
--- a/sc/source/filter/xml/xmllabri.cxx
+++ b/sc/source/filter/xml/xmllabri.cxx
@@ -27,10 +27,9 @@ using namespace xmloff::token;
ScXMLLabelRangesContext::ScXMLLabelRangesContext(
ScXMLImport& rImport,
- sal_uInt16 nPrefix,
- const OUString& rLName,
- const uno::Reference< xml::sax::XAttributeList >& /* xAttrList */ ):
- ScXMLImportContext( rImport, nPrefix, rLName )
+ sal_Int32 /*nElement*/,
+ const uno::Reference< xml::sax::XFastAttributeList >& /* xAttrList */ ):
+ ScXMLImportContext( rImport )
{
rImport.LockSolarMutex();
}
@@ -60,10 +59,6 @@ SvXMLImportContext* ScXMLLabelRangesContext::CreateChildContext(
return pContext;
}
-void ScXMLLabelRangesContext::EndElement()
-{
-}
-
ScXMLLabelRangeContext::ScXMLLabelRangeContext(
ScXMLImport& rImport,
sal_uInt16 nPrfx,
diff --git a/sc/source/filter/xml/xmllabri.hxx b/sc/source/filter/xml/xmllabri.hxx
index e0f78b7f098a..aab26fb46e5d 100644
--- a/sc/source/filter/xml/xmllabri.hxx
+++ b/sc/source/filter/xml/xmllabri.hxx
@@ -28,9 +28,8 @@ class ScXMLLabelRangesContext : public ScXMLImportContext
public:
ScXMLLabelRangesContext(
ScXMLImport& rImport,
- sal_uInt16 nPrefix,
- const OUString& rLName,
- const css::uno::Reference< css::xml::sax::XAttributeList>& xAttrList
+ sal_Int32 nElement,
+ const css::uno::Reference< css::xml::sax::XFastAttributeList>& xAttrList
);
virtual ~ScXMLLabelRangesContext() override;
@@ -39,7 +38,6 @@ public:
const OUString& rLocalName,
const css::uno::Reference< css::xml::sax::XAttributeList>& xAttrList
) override;
- virtual void EndElement() override;
};
class ScXMLLabelRangeContext : public ScXMLImportContext
diff --git a/sc/source/filter/xml/xmlnexpi.cxx b/sc/source/filter/xml/xmlnexpi.cxx
index 963336954915..5f7f4735e113 100644
--- a/sc/source/filter/xml/xmlnexpi.cxx
+++ b/sc/source/filter/xml/xmlnexpi.cxx
@@ -47,10 +47,10 @@ void ScXMLNamedExpressionsContext::SheetLocalInserter::insert(ScMyNamedExpressio
}
ScXMLNamedExpressionsContext::ScXMLNamedExpressionsContext(
- ScXMLImport& rImport, sal_uInt16 nPrfx, const OUString& rLName,
- const uno::Reference<xml::sax::XAttributeList>& /* xAttrList */,
+ ScXMLImport& rImport, sal_Int32 /*nElement*/,
+ const uno::Reference<xml::sax::XFastAttributeList>& /* xAttrList */,
Inserter* pInserter ) :
- ScXMLImportContext( rImport, nPrfx, rLName ),
+ ScXMLImportContext( rImport ),
mpInserter(pInserter)
{
rImport.LockSolarMutex();
@@ -86,12 +86,6 @@ SvXMLImportContext *ScXMLNamedExpressionsContext::CreateChildContext( sal_uInt16
return pContext;
}
-void ScXMLNamedExpressionsContext::EndElement()
-{
- // happens in ScXMLImport::EndDocument()
- // because it has to be set after the Database Ranges
-}
-
ScXMLNamedRangeContext::ScXMLNamedRangeContext(
ScXMLImport& rImport,
sal_uInt16 nPrfx,
diff --git a/sc/source/filter/xml/xmlnexpi.hxx b/sc/source/filter/xml/xmlnexpi.hxx
index 342ea7d104fb..3df717f674ff 100644
--- a/sc/source/filter/xml/xmlnexpi.hxx
+++ b/sc/source/filter/xml/xmlnexpi.hxx
@@ -70,8 +70,8 @@ public:
};
ScXMLNamedExpressionsContext(
- ScXMLImport& rImport, sal_uInt16 nPrfx, 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,
Inserter* pInserter );
virtual ~ScXMLNamedExpressionsContext() override;
@@ -80,8 +80,6 @@ public:
const OUString& rLocalName,
const css::uno::Reference<css::xml::sax::XAttributeList>& xAttrList ) override;
- virtual void EndElement() override;
-
private:
std::shared_ptr<Inserter> mpInserter;
};
diff --git a/sc/source/filter/xml/xmltabi.cxx b/sc/source/filter/xml/xmltabi.cxx
index 0567a1a4521c..c9cdb1b00a5b 100644
--- a/sc/source/filter/xml/xmltabi.cxx
+++ b/sc/source/filter/xml/xmltabi.cxx
@@ -228,14 +228,6 @@ SvXMLImportContext *ScXMLTableContext::CreateChildContext( sal_uInt16 nPrefix,
switch (nToken)
{
- case XML_TOK_TABLE_NAMED_EXPRESSIONS:
- {
- SCTAB nTab = GetScImport().GetTables().GetCurrentSheet();
- pContext = new ScXMLNamedExpressionsContext(
- GetScImport(), nPrefix, rLName, xAttrList,
- new ScXMLNamedExpressionsContext::SheetLocalInserter(GetScImport(), nTab));
- }
- break;
case XML_TOK_TABLE_COL_GROUP:
pContext = new ScXMLTableColsContext( GetScImport(), nPrefix,
rLName, xAttrList,
@@ -328,6 +320,14 @@ uno::Reference< xml::sax::XFastContextHandler > SAL_CALL
switch ( nElement )
{
+ case XML_ELEMENT( TABLE, XML_NAMED_EXPRESSIONS ):
+ {
+ SCTAB nTab = GetScImport().GetTables().GetCurrentSheet();
+ pContext = new ScXMLNamedExpressionsContext(
+ GetScImport(), nElement, xAttrList,
+ new ScXMLNamedExpressionsContext::SheetLocalInserter(GetScImport(), nTab));
+ }
+ break;
case XML_ELEMENT( TABLE, XML_TABLE_ROW_GROUP ):
pContext = new ScXMLTableRowsContext( GetScImport(), xAttrList,
false, true );