summaryrefslogtreecommitdiff
path: root/reportdesign
diff options
context:
space:
mode:
authorNoel Grandin <noelgrandin@gmail.com>2020-01-21 21:44:49 +0200
committerNoel Grandin <noel.grandin@collabora.co.uk>2020-01-22 08:36:51 +0100
commit357bf8984ada1259720903ad7c7c44c9a6551cc8 (patch)
treed2a0db94d9e5d465c71de70c8608c2bec7532c85 /reportdesign
parentf6c01b471a08ad1cb38377b8d82dba89206ea8cb (diff)
Convert reportdesign to fastparser
Change-Id: I0703344aad4ca6c72e494160b019c13e24cc843a Reviewed-on: https://gerrit.libreoffice.org/c/core/+/87160 Tested-by: Jenkins Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
Diffstat (limited to 'reportdesign')
-rw-r--r--reportdesign/source/filter/xml/xmlCell.cxx96
-rw-r--r--reportdesign/source/filter/xml/xmlCell.hxx13
-rw-r--r--reportdesign/source/filter/xml/xmlColumn.cxx54
-rw-r--r--reportdesign/source/filter/xml/xmlColumn.hxx11
-rw-r--r--reportdesign/source/filter/xml/xmlComponent.cxx32
-rw-r--r--reportdesign/source/filter/xml/xmlComponent.hxx4
-rw-r--r--reportdesign/source/filter/xml/xmlCondPrtExpr.cxx26
-rw-r--r--reportdesign/source/filter/xml/xmlCondPrtExpr.hxx6
-rw-r--r--reportdesign/source/filter/xml/xmlControlProperty.cxx54
-rw-r--r--reportdesign/source/filter/xml/xmlControlProperty.hxx13
-rw-r--r--reportdesign/source/filter/xml/xmlFixedContent.cxx63
-rw-r--r--reportdesign/source/filter/xml/xmlFixedContent.hxx12
-rw-r--r--reportdesign/source/filter/xml/xmlFormatCondition.cxx27
-rw-r--r--reportdesign/source/filter/xml/xmlFormatCondition.hxx7
-rw-r--r--reportdesign/source/filter/xml/xmlFormattedField.cxx25
-rw-r--r--reportdesign/source/filter/xml/xmlFormattedField.hxx4
-rw-r--r--reportdesign/source/filter/xml/xmlFunction.cxx35
-rw-r--r--reportdesign/source/filter/xml/xmlFunction.hxx6
-rw-r--r--reportdesign/source/filter/xml/xmlGroup.cxx68
-rw-r--r--reportdesign/source/filter/xml/xmlGroup.hxx11
-rw-r--r--reportdesign/source/filter/xml/xmlImage.cxx27
-rw-r--r--reportdesign/source/filter/xml/xmlImage.hxx5
-rw-r--r--reportdesign/source/filter/xml/xmlMasterFields.cxx43
-rw-r--r--reportdesign/source/filter/xml/xmlMasterFields.hxx11
-rw-r--r--reportdesign/source/filter/xml/xmlReport.cxx80
-rw-r--r--reportdesign/source/filter/xml/xmlReport.hxx14
-rw-r--r--reportdesign/source/filter/xml/xmlReportElement.cxx49
-rw-r--r--reportdesign/source/filter/xml/xmlReportElement.hxx10
-rw-r--r--reportdesign/source/filter/xml/xmlReportElementBase.cxx38
-rw-r--r--reportdesign/source/filter/xml/xmlReportElementBase.hxx17
-rw-r--r--reportdesign/source/filter/xml/xmlSection.cxx46
-rw-r--r--reportdesign/source/filter/xml/xmlSection.hxx9
-rw-r--r--reportdesign/source/filter/xml/xmlSubDocument.cxx54
-rw-r--r--reportdesign/source/filter/xml/xmlSubDocument.hxx13
-rw-r--r--reportdesign/source/filter/xml/xmlTable.cxx69
-rw-r--r--reportdesign/source/filter/xml/xmlTable.hxx11
-rw-r--r--reportdesign/source/filter/xml/xmlfilter.cxx24
-rw-r--r--reportdesign/source/filter/xml/xmlfilter.hxx14
38 files changed, 476 insertions, 625 deletions
diff --git a/reportdesign/source/filter/xml/xmlCell.cxx b/reportdesign/source/filter/xml/xmlCell.cxx
index 0c6646d11934..74a23667863f 100644
--- a/reportdesign/source/filter/xml/xmlCell.cxx
+++ b/reportdesign/source/filter/xml/xmlCell.cxx
@@ -46,12 +46,10 @@ namespace rptxml
OXMLCell::OXMLCell( ORptFilter& rImport
- ,sal_uInt16 nPrfx
- ,const OUString& _sLocalName
- ,const Reference< XAttributeList > & _xAttrList
+ ,const Reference< XFastAttributeList > & _xAttrList
,OXMLTable* _pContainer
,OXMLCell* _pCell) :
- SvXMLImportContext( rImport, nPrfx, _sLocalName )
+ SvXMLImportContext( rImport )
,m_pContainer(_pContainer)
,m_pCell(_pCell)
,m_nCurrentCount(0)
@@ -60,27 +58,21 @@ OXMLCell::OXMLCell( ORptFilter& rImport
if ( !m_pCell )
m_pCell = this;
- OSL_ENSURE(_xAttrList.is(),"Attribute list is NULL!");
- const SvXMLNamespaceMap& rMap = rImport.GetNamespaceMap();
- const SvXMLTokenMap& rTokenMap = rImport.GetColumnTokenMap();
-
- const sal_Int16 nLength = (_xAttrList.is()) ? _xAttrList->getLength() : 0;
- for(sal_Int16 i = 0; i < nLength; ++i)
+ sax_fastparser::FastAttributeList *pAttribList =
+ sax_fastparser::FastAttributeList::castToFastAttributeList( _xAttrList );
+ for (auto &aIter : *pAttribList)
{
- OUString sLocalName;
- const OUString sAttrName = _xAttrList->getNameByIndex( i );
- const sal_uInt16 nPrefix = rMap.GetKeyByAttrName( sAttrName,&sLocalName );
- const OUString sValue = _xAttrList->getValueByIndex( i );
+ OUString sValue = aIter.toString();
- switch( rTokenMap.Get( nPrefix, sLocalName ) )
+ switch( aIter.getToken() )
{
- case XML_TOK_COLUMN_STYLE_NAME:
+ case XML_ELEMENT(TABLE, XML_STYLE_NAME):
m_sStyleName = sValue;
break;
- case XML_TOK_NUMBER_COLUMNS_SPANNED:
+ case XML_ELEMENT(TABLE, XML_NUMBER_COLUMNS_SPANNED):
m_pContainer->setColumnSpanned(sValue.toInt32());
break;
- case XML_TOK_NUMBER_ROWS_SPANNED:
+ case XML_ELEMENT(TABLE, XML_NUMBER_ROWS_SPANNED):
m_pContainer->setRowSpanned(sValue.toInt32());
break;
default:
@@ -101,25 +93,48 @@ SvXMLImportContextRef OXMLCell::CreateChildContext(
SvXMLImportContext *pContext = nullptr;
ORptFilter& rImport = GetOwnImport();
const SvXMLTokenMap& rTokenMap = rImport.GetCellElemTokenMap();
+ const sal_uInt16 nToken = rTokenMap.Get( _nPrefix, _rLocalName );
+ switch( nToken )
+ {
+ case XML_TOK_CUSTOM_SHAPE:
+ case XML_TOK_FRAME:
+ {
+ if ( !m_bContainsShape )
+ m_nCurrentCount = m_pContainer->getSection()->getCount();
+ rtl::Reference< XMLShapeImportHelper > xShapeImportHelper = rImport.GetShapeImport();
+ uno::Reference< drawing::XShapes > xShapes = m_pContainer->getSection().get();
+ pContext = xShapeImportHelper->CreateGroupChildContext(rImport,_nPrefix,_rLocalName,xAttrList,xShapes);
+ m_bContainsShape = true;
+ }
+ break;
+ }
+ return pContext;
+}
+
+css::uno::Reference< css::xml::sax::XFastContextHandler > OXMLCell::createFastChildContext(
+ sal_Int32 nElement,
+ const css::uno::Reference< css::xml::sax::XFastAttributeList >& xAttrList )
+{
+ css::uno::Reference< css::xml::sax::XFastContextHandler > xContext;
+ ORptFilter& rImport = GetOwnImport();
Reference<XMultiServiceFactory> xFactor(rImport.GetModel(),uno::UNO_QUERY);
static const char s_sStringConcat[] = " & ";
- const sal_uInt16 nToken = rTokenMap.Get( _nPrefix, _rLocalName );
- switch( nToken )
+ switch( nElement )
{
- case XML_TOK_FIXED_CONTENT:
+ case XML_ELEMENT(REPORT, XML_FIXED_CONTENT):
{
rImport.GetProgressBarHelper()->Increment( PROGRESS_BAR_STEP );
- pContext = new OXMLFixedContent( rImport, _nPrefix, _rLocalName,*m_pCell,m_pContainer);
+ xContext = new OXMLFixedContent( rImport,*m_pCell,m_pContainer);
}
break;
- case XML_TOK_PAGE_NUMBER:
+ case XML_ELEMENT(TEXT, XML_PAGE_NUMBER):
m_sText += OUStringLiteral(s_sStringConcat) + " PageNumber()";
break;
- case XML_TOK_PAGE_COUNT:
+ case XML_ELEMENT(TEXT, XML_PAGE_COUNT):
m_sText += OUStringLiteral(s_sStringConcat) + " PageCount()";
break;
- case XML_TOK_FORMATTED_TEXT:
+ case XML_ELEMENT(REPORT, XML_FORMATTED_TEXT):
{
rImport.GetProgressBarHelper()->Increment( PROGRESS_BAR_STEP );
uno::Reference< uno::XInterface> xInt = xFactor->createInstance(SERVICE_FORMATTEDFIELD);
@@ -128,10 +143,10 @@ SvXMLImportContextRef OXMLCell::CreateChildContext(
OSL_ENSURE(xControl.is(),"Could not create FormattedField!");
setComponent(xControl.get());
if ( xControl.is() )
- pContext = new OXMLFormattedField( rImport, _nPrefix, _rLocalName,xAttrList,xControl.get(),m_pContainer,XML_TOK_PAGE_COUNT == nToken);
+ xContext = new OXMLFormattedField( rImport,xAttrList,xControl.get(),m_pContainer, false);
}
break;
- case XML_TOK_IMAGE:
+ case XML_ELEMENT(REPORT, XML_IMAGE):
{
rImport.GetProgressBarHelper()->Increment( PROGRESS_BAR_STEP );
Reference< XImageControl > xControl(xFactor->createInstance(SERVICE_IMAGECONTROL),uno::UNO_QUERY);
@@ -139,33 +154,22 @@ SvXMLImportContextRef OXMLCell::CreateChildContext(
OSL_ENSURE(xControl.is(),"Could not create ImageControl!");
setComponent(xControl.get());
if ( xControl.is() )
- pContext = new OXMLImage( rImport, _nPrefix, _rLocalName,xAttrList,xControl.get(),m_pContainer);
+ xContext = new OXMLImage( rImport,xAttrList,xControl.get(),m_pContainer);
}
break;
- case XML_TOK_SUB_DOCUMENT:
+ case XML_ELEMENT(REPORT, XML_SUB_DOCUMENT):
{
rImport.GetProgressBarHelper()->Increment( PROGRESS_BAR_STEP );
if ( !m_bContainsShape )
m_nCurrentCount = m_pContainer->getSection()->getCount();
uno::Reference< uno::XInterface> xInt = xFactor->createInstance(SERVICE_FORMATTEDFIELD);
Reference< report::XFormattedField > xControl(xInt,uno::UNO_QUERY);
- pContext = new OXMLSubDocument( rImport, _nPrefix, _rLocalName,xControl.get(),m_pContainer, this /* give the current cell as parent*/ );
+ xContext = new OXMLSubDocument( rImport,xControl.get(),m_pContainer, this /* give the current cell as parent*/ );
}
break;
- case XML_TOK_P:
- pContext = new OXMLCell( rImport, _nPrefix, _rLocalName,xAttrList ,m_pContainer,this);
- break;
- case XML_TOK_CUSTOM_SHAPE:
- case XML_TOK_FRAME:
- {
- if ( !m_bContainsShape )
- m_nCurrentCount = m_pContainer->getSection()->getCount();
- rtl::Reference< XMLShapeImportHelper > xShapeImportHelper = rImport.GetShapeImport();
- uno::Reference< drawing::XShapes > xShapes = m_pContainer->getSection().get();
- pContext = xShapeImportHelper->CreateGroupChildContext(rImport,_nPrefix,_rLocalName,xAttrList,xShapes);
- m_bContainsShape = true;
- }
+ case XML_ELEMENT(TEXT, XML_P):
+ xContext = new OXMLCell( rImport,xAttrList ,m_pContainer,this);
break;
default:
break;
@@ -174,10 +178,10 @@ SvXMLImportContextRef OXMLCell::CreateChildContext(
if ( m_xComponent.is() )
m_pContainer->addCell(m_xComponent);
- return pContext;
+ return xContext;
}
-void OXMLCell::EndElement()
+void OXMLCell::endFastElement(sal_Int32)
{
if ( m_bContainsShape )
{
@@ -247,7 +251,7 @@ void OXMLCell::setComponent(const uno::Reference< report::XReportComponent >& _x
m_xComponent = _xComponent;
}
-void OXMLCell::Characters( const OUString& rChars )
+void OXMLCell::characters( const OUString& rChars )
{
if ( !rChars.isEmpty() )
{
diff --git a/reportdesign/source/filter/xml/xmlCell.hxx b/reportdesign/source/filter/xml/xmlCell.hxx
index 059d58f3636f..998e3a936f54 100644
--- a/reportdesign/source/filter/xml/xmlCell.hxx
+++ b/reportdesign/source/filter/xml/xmlCell.hxx
@@ -42,9 +42,7 @@ namespace rptxml
public:
OXMLCell( ORptFilter& rImport
- ,sal_uInt16 nPrfx
- ,const OUString& rLName
- ,const css::uno::Reference< css::xml::sax::XAttributeList > & xAttrList
+ ,const css::uno::Reference< css::xml::sax::XFastAttributeList > & xAttrList
,OXMLTable* _pContainer
,OXMLCell* _pCell = nullptr);
virtual ~OXMLCell() override;
@@ -53,8 +51,13 @@ namespace rptxml
const OUString& rLocalName,
const css::uno::Reference< css::xml::sax::XAttributeList > & xAttrList ) override;
- virtual void Characters( const OUString& rChars ) 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;
+
+ virtual void SAL_CALL startFastElement( sal_Int32 /*nElement*/,
+ const css::uno::Reference< css::xml::sax::XFastAttributeList >& ) override {}
+ virtual void SAL_CALL characters( const OUString& rChars ) override;
+ virtual void SAL_CALL endFastElement(sal_Int32 nElement) override;
void setComponent(const css::uno::Reference< css::report::XReportComponent >& _xComponent);
void setContainsShape(bool _bContainsShapes);
diff --git a/reportdesign/source/filter/xml/xmlColumn.cxx b/reportdesign/source/filter/xml/xmlColumn.cxx
index 6498296cc441..13e6b0767578 100644
--- a/reportdesign/source/filter/xml/xmlColumn.cxx
+++ b/reportdesign/source/filter/xml/xmlColumn.cxx
@@ -46,29 +46,21 @@ namespace rptxml
OXMLRowColumn::OXMLRowColumn( ORptFilter& rImport
- ,sal_uInt16 nPrfx
- ,const OUString& _sLocalName
- ,const Reference< XAttributeList > & _xAttrList
+ ,const Reference< XFastAttributeList > & _xAttrList
,OXMLTable* _pContainer
) :
- SvXMLImportContext( rImport, nPrfx, _sLocalName )
+ SvXMLImportContext( rImport )
,m_pContainer(_pContainer)
{
-
- const SvXMLNamespaceMap& rMap = rImport.GetNamespaceMap();
- const SvXMLTokenMap& rTokenMap = rImport.GetColumnTokenMap();
-
- const sal_Int16 nLength = (_xAttrList.is()) ? _xAttrList->getLength() : 0;
- for(sal_Int16 i = 0; i < nLength; ++i)
+ sax_fastparser::FastAttributeList *pAttribList =
+ sax_fastparser::FastAttributeList::castToFastAttributeList( _xAttrList );
+ for (auto &aIter : *pAttribList)
{
- OUString sLocalName;
- const OUString sAttrName = _xAttrList->getNameByIndex( i );
- const sal_uInt16 nPrefix = rMap.GetKeyByAttrName( sAttrName,&sLocalName );
- const OUString sValue = _xAttrList->getValueByIndex( i );
+ OUString sValue = aIter.toString();
- switch( rTokenMap.Get( nPrefix, sLocalName ) )
+ switch( aIter.getToken() )
{
- case XML_TOK_COLUMN_STYLE_NAME:
+ case XML_ELEMENT(TABLE, XML_STYLE_NAME):
fillStyle(sValue);
break;
default:
@@ -82,32 +74,30 @@ OXMLRowColumn::~OXMLRowColumn()
{
}
-SvXMLImportContextRef OXMLRowColumn::CreateChildContext(
- sal_uInt16 nPrefix,
- const OUString& rLocalName,
- const Reference< XAttributeList > & xAttrList )
+css::uno::Reference< css::xml::sax::XFastContextHandler > OXMLRowColumn::createFastChildContext(
+ sal_Int32 nElement,
+ const Reference< XFastAttributeList > & xAttrList )
{
- SvXMLImportContext *pContext = nullptr;
+ css::uno::Reference< css::xml::sax::XFastContextHandler > xContext;
ORptFilter& rImport = GetOwnImport();
- const SvXMLTokenMap& rTokenMap = rImport.GetColumnTokenMap();
- switch( rTokenMap.Get( nPrefix, rLocalName ) )
+ switch( nElement )
{
- case XML_TOK_COLUMN:
+ case XML_ELEMENT(TABLE, XML_TABLE_COLUMN):
rImport.GetProgressBarHelper()->Increment( PROGRESS_BAR_STEP );
- pContext = new OXMLRowColumn( rImport, nPrefix, rLocalName,xAttrList,m_pContainer);
+ xContext = new OXMLRowColumn( rImport,xAttrList,m_pContainer);
break;
- case XML_TOK_ROW:
+ case XML_ELEMENT(TABLE, XML_TABLE_ROW):
m_pContainer->incrementRowIndex();
rImport.GetProgressBarHelper()->Increment( PROGRESS_BAR_STEP );
- pContext = new OXMLRowColumn( rImport, nPrefix, rLocalName,xAttrList,m_pContainer);
+ xContext = new OXMLRowColumn( rImport,xAttrList,m_pContainer);
break;
- case XML_TOK_CELL:
+ case XML_ELEMENT(TABLE, XML_TABLE_CELL):
m_pContainer->incrementColumnIndex();
rImport.GetProgressBarHelper()->Increment( PROGRESS_BAR_STEP );
- pContext = new OXMLCell( rImport, nPrefix, rLocalName,xAttrList,m_pContainer);
+ xContext = new OXMLCell( rImport,xAttrList,m_pContainer);
break;
- case XML_TOK_COV_CELL:
+ case XML_ELEMENT(TABLE, XML_COVERED_TABLE_CELL):
m_pContainer->incrementColumnIndex();
m_pContainer->addCell(nullptr);
break;
@@ -115,7 +105,7 @@ SvXMLImportContextRef OXMLRowColumn::CreateChildContext(
break;
}
- return pContext;
+ return xContext;
}
void OXMLRowColumn::fillStyle(const OUString& _sStyleName)
@@ -174,7 +164,7 @@ ORptFilter& OXMLRowColumn::GetOwnImport()
return static_cast<ORptFilter&>(GetImport());
}
-void OXMLRowColumn::EndElement()
+void OXMLRowColumn::endFastElement(sal_Int32 )
{
}
diff --git a/reportdesign/source/filter/xml/xmlColumn.hxx b/reportdesign/source/filter/xml/xmlColumn.hxx
index 0aa34130d8d1..16e739e9bca1 100644
--- a/reportdesign/source/filter/xml/xmlColumn.hxx
+++ b/reportdesign/source/filter/xml/xmlColumn.hxx
@@ -37,17 +37,14 @@ namespace rptxml
public:
OXMLRowColumn( ORptFilter& rImport
- ,sal_uInt16 nPrfx
- ,const OUString& rLName
- ,const css::uno::Reference< css::xml::sax::XAttributeList > & xAttrList
+ ,const css::uno::Reference< css::xml::sax::XFastAttributeList > & xAttrList
,OXMLTable* _pContainer
);
virtual ~OXMLRowColumn() override;
- virtual SvXMLImportContextRef 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;
+ virtual void SAL_CALL endFastElement(sal_Int32 nElement) override;
};
} // namespace rptxml
diff --git a/reportdesign/source/filter/xml/xmlComponent.cxx b/reportdesign/source/filter/xml/xmlComponent.cxx
index 976a7393a448..d63ccd713853 100644
--- a/reportdesign/source/filter/xml/xmlComponent.cxx
+++ b/reportdesign/source/filter/xml/xmlComponent.cxx
@@ -38,41 +38,27 @@ namespace rptxml
using namespace ::com::sun::star::report;
using namespace ::com::sun::star::xml::sax;
OXMLComponent::OXMLComponent( ORptFilter& _rImport
- ,sal_uInt16 nPrfx
- ,const OUString& _sLocalName
- ,const Reference< XAttributeList > & _xAttrList
+ ,const Reference< XFastAttributeList > & _xAttrList
,const Reference< XReportComponent > & _xComponent
) :
- SvXMLImportContext( _rImport, nPrfx, _sLocalName )
+ SvXMLImportContext( _rImport )
,m_xComponent(_xComponent)
{
- OSL_ENSURE(_xAttrList.is(),"Attribute list is NULL!");
OSL_ENSURE(m_xComponent.is(),"Component is NULL!");
- const SvXMLNamespaceMap& rMap = _rImport.GetNamespaceMap();
- const SvXMLTokenMap& rTokenMap = _rImport.GetComponentElemTokenMap();
-
- const sal_Int16 nLength = (_xAttrList.is()) ? _xAttrList->getLength() : 0;
-
- for(sal_Int16 i = 0; i < nLength; ++i)
+ sax_fastparser::FastAttributeList *pAttribList =
+ sax_fastparser::FastAttributeList::castToFastAttributeList( _xAttrList );
+ for (auto &aIter : *pAttribList)
{
+ OUString sValue = aIter.toString();
+
try
{
- OUString sLocalName;
- const OUString sAttrName = _xAttrList->getNameByIndex( i );
- const sal_uInt16 nPrefix = rMap.GetKeyByAttrName( sAttrName,&sLocalName );
- const OUString sValue = _xAttrList->getValueByIndex( i );
-
- switch( rTokenMap.Get( nPrefix, sLocalName ) )
+ switch( aIter.getToken() )
{
- case XML_TOK_NAME:
+ case XML_ELEMENT(DRAW, XML_NAME):
m_xComponent->setName(sValue);
break;
- case XML_TOK_TEXT_STYLE_NAME:
- case XML_TOK_TRANSFORM:
- break;
- default:
- break;
}
}
catch(const Exception&)
diff --git a/reportdesign/source/filter/xml/xmlComponent.hxx b/reportdesign/source/filter/xml/xmlComponent.hxx
index be6822fa9cd2..efe4849aa705 100644
--- a/reportdesign/source/filter/xml/xmlComponent.hxx
+++ b/reportdesign/source/filter/xml/xmlComponent.hxx
@@ -35,9 +35,7 @@ namespace rptxml
public:
OXMLComponent( ORptFilter& rImport
- , sal_uInt16 nPrfx
- ,const OUString& rLName
- ,const css::uno::Reference< css::xml::sax::XAttributeList > & xAttrList
+ ,const css::uno::Reference< css::xml::sax::XFastAttributeList > & xAttrList
,const css::uno::Reference< css::report::XReportComponent >& _xComponent
);
virtual ~OXMLComponent() override;
diff --git a/reportdesign/source/filter/xml/xmlCondPrtExpr.cxx b/reportdesign/source/filter/xml/xmlCondPrtExpr.cxx
index 9a2ec9e1ad60..7826f121a57e 100644
--- a/reportdesign/source/filter/xml/xmlCondPrtExpr.cxx
+++ b/reportdesign/source/filter/xml/xmlCondPrtExpr.cxx
@@ -33,30 +33,24 @@ namespace rptxml
using namespace uno;
using namespace xml::sax;
-OXMLCondPrtExpr::OXMLCondPrtExpr( ORptFilter& _rImport,
- sal_uInt16 nPrfx
- ,const OUString& rLName
- ,const uno::Reference< xml::sax::XAttributeList > & _xAttrList
+OXMLCondPrtExpr::OXMLCondPrtExpr( ORptFilter& _rImport
+ ,const uno::Reference< xml::sax::XFastAttributeList > & _xAttrList
,const Reference< XPropertySet > & _xComponent ) :
- SvXMLImportContext( _rImport, nPrfx, rLName )
+ SvXMLImportContext( _rImport )
,m_xComponent(_xComponent)
{
OSL_ENSURE(m_xComponent.is(),"Component is NULL!");
- const SvXMLNamespaceMap& rMap = _rImport.GetNamespaceMap();
- const SvXMLTokenMap& rTokenMap = _rImport.GetFunctionElemTokenMap();
- const sal_Int16 nLength = (_xAttrList.is()) ? _xAttrList->getLength() : 0;
try
{
- for(sal_Int16 i = 0; i < nLength; ++i)
+ sax_fastparser::FastAttributeList *pAttribList =
+ sax_fastparser::FastAttributeList::castToFastAttributeList( _xAttrList );
+ for (auto &aIter : *pAttribList)
{
- OUString sLocalName;
- const OUString sAttrName = _xAttrList->getNameByIndex( i );
- const sal_uInt16 nPrefix = rMap.GetKeyByAttrName( sAttrName,&sLocalName );
- const OUString sValue = _xAttrList->getValueByIndex( i );
+ OUString sValue = aIter.toString();
- switch( rTokenMap.Get( nPrefix, sLocalName ) )
+ switch( aIter.getToken() )
{
- case XML_TOK_FUNCTION_FORMULA:
+ case XML_ELEMENT(REPORT, XML_FORMULA):
m_xComponent->setPropertyValue(PROPERTY_CONDITIONALPRINTEXPRESSION,uno::makeAny(ORptFilter::convertFormula(sValue)));
break;
default:
@@ -77,7 +71,7 @@ OXMLCondPrtExpr::~OXMLCondPrtExpr()
}
-void OXMLCondPrtExpr::Characters( const OUString& rChars )
+void OXMLCondPrtExpr::characters( const OUString& rChars )
{
m_xComponent->setPropertyValue(PROPERTY_CONDITIONALPRINTEXPRESSION,makeAny(rChars));
}
diff --git a/reportdesign/source/filter/xml/xmlCondPrtExpr.hxx b/reportdesign/source/filter/xml/xmlCondPrtExpr.hxx
index 8d757bc0469f..426188efcc63 100644
--- a/reportdesign/source/filter/xml/xmlCondPrtExpr.hxx
+++ b/reportdesign/source/filter/xml/xmlCondPrtExpr.hxx
@@ -33,15 +33,13 @@ namespace rptxml
public:
OXMLCondPrtExpr( ORptFilter& _rImport
- ,sal_uInt16 nPrfx
- ,const OUString& rLName
- ,const css::uno::Reference< css::xml::sax::XAttributeList > & _xAttrList
+ ,const css::uno::Reference< css::xml::sax::XFastAttributeList > & _xAttrList
,const css::uno::Reference< css::beans::XPropertySet >& _xComponent);
virtual ~OXMLCondPrtExpr() override;
// This method is called for all characters that are contained in the
// current element. The default is to ignore them.
- virtual void Characters( const OUString& rChars ) override;
+ virtual void SAL_CALL characters( const OUString& rChars ) override;
};
} // namespace rptxml
diff --git a/reportdesign/source/filter/xml/xmlControlProperty.cxx b/reportdesign/source/filter/xml/xmlControlProperty.cxx
index 3f31577f842f..19b0c77aa67a 100644
--- a/reportdesign/source/filter/xml/xmlControlProperty.cxx
+++ b/reportdesign/source/filter/xml/xmlControlProperty.cxx
@@ -49,38 +49,30 @@ namespace rptxml
using namespace ::com::sun::star::xml::sax;
OXMLControlProperty::OXMLControlProperty( ORptFilter& rImport
- ,sal_uInt16 nPrfx
- ,const OUString& _sLocalName
- ,const Reference< XAttributeList > & _xAttrList
+ ,const Reference< XFastAttributeList > & _xAttrList
,const Reference< XPropertySet >& _xControl
,OXMLControlProperty* _pContainer) :
- SvXMLImportContext( rImport, nPrfx, _sLocalName )
+ SvXMLImportContext( rImport )
,m_xControl(_xControl)
,m_pContainer(_pContainer)
,m_bIsList(false)
{
m_aPropType = cppu::UnoType<void>::get();
- OSL_ENSURE(_xAttrList.is(),"Attribute list is NULL!");
OSL_ENSURE(m_xControl.is(),"Control is NULL!");
- const SvXMLNamespaceMap& rMap = rImport.GetNamespaceMap();
- const SvXMLTokenMap& rTokenMap = rImport.GetControlPropertyElemTokenMap();
-
- const sal_Int16 nLength = (_xAttrList.is()) ? _xAttrList->getLength() : 0;
- for(sal_Int16 i = 0; i < nLength; ++i)
+ sax_fastparser::FastAttributeList *pAttribList =
+ sax_fastparser::FastAttributeList::castToFastAttributeList( _xAttrList );
+ for (auto &aIter : *pAttribList)
{
- OUString sLocalName;
- const OUString sAttrName = _xAttrList->getNameByIndex( i );
- const sal_uInt16 nPrefix = rMap.GetKeyByAttrName( sAttrName,&sLocalName );
- const OUString sValue = _xAttrList->getValueByIndex( i );
+ OUString sValue = aIter.toString();
- switch( rTokenMap.Get( nPrefix, sLocalName ) )
+ switch( aIter.getToken() )
{
- case XML_TOK_LIST_PROPERTY:
+ case XML_ELEMENT(FORM, XML_LIST_PROPERTY):
m_bIsList = sValue == "true";
break;
- case XML_TOK_VALUE_TYPE:
+ case XML_ELEMENT(OOO, XML_VALUE_TYPE):
{
// needs to be translated into a css::uno::Type
static std::map< OUString, css::uno::Type > const s_aTypeNameMap
@@ -103,7 +95,7 @@ OXMLControlProperty::OXMLControlProperty( ORptFilter& rImport
m_aPropType = aTypePos->second;
}
break;
- case XML_TOK_PROPERTY_NAME:
+ case XML_ELEMENT(FORM, XML_PROPERTY_NAME):
m_aSetting.Name = sValue;
break;
default:
@@ -118,33 +110,31 @@ OXMLControlProperty::~OXMLControlProperty()
{
}
-SvXMLImportContextRef OXMLControlProperty::CreateChildContext(
- sal_uInt16 nPrefix,
- const OUString& rLocalName,
- const Reference< XAttributeList > & xAttrList )
+css::uno::Reference< css::xml::sax::XFastContextHandler > OXMLControlProperty::createFastChildContext(
+ sal_Int32 nElement,
+ const css::uno::Reference< css::xml::sax::XFastAttributeList >& xAttrList )
{
- SvXMLImportContext *pContext = nullptr;
+ css::uno::Reference< css::xml::sax::XFastContextHandler > xContext;
ORptFilter& rImport = GetOwnImport();
- const SvXMLTokenMap& rTokenMap = rImport.GetControlPropertyElemTokenMap();
- switch( rTokenMap.Get( nPrefix, rLocalName ) )
+ switch( nElement )
{
- case XML_TOK_LIST_PROPERTY:
+ case XML_ELEMENT(FORM, XML_LIST_PROPERTY):
rImport.GetProgressBarHelper()->Increment( PROGRESS_BAR_STEP );
- pContext = new OXMLControlProperty( rImport, nPrefix, rLocalName,xAttrList,m_xControl);
+ xContext = new OXMLControlProperty( rImport,xAttrList,m_xControl);
break;
- case XML_TOK_VALUE:
+ case XML_ELEMENT(OOO, XML_VALUE):
rImport.GetProgressBarHelper()->Increment( PROGRESS_BAR_STEP );
- pContext = new OXMLControlProperty( rImport, nPrefix, rLocalName,xAttrList,m_xControl,this );
+ xContext = new OXMLControlProperty( rImport,xAttrList,m_xControl,this );
break;
default:
break;
}
- return pContext;
+ return xContext;
}
-void OXMLControlProperty::EndElement()
+void OXMLControlProperty::endFastElement(sal_Int32 )
{
if ( !m_aSetting.Name.isEmpty() && m_xControl.is() )
{
@@ -161,7 +151,7 @@ void OXMLControlProperty::EndElement()
}
}
-void OXMLControlProperty::Characters( const OUString& rChars )
+void OXMLControlProperty::characters( const OUString& rChars )
{
if ( m_pContainer )
m_pContainer->addValue(rChars);
diff --git a/reportdesign/source/filter/xml/xmlControlProperty.hxx b/reportdesign/source/filter/xml/xmlControlProperty.hxx
index 8b2bf6440be2..15379d27b720 100644
--- a/reportdesign/source/filter/xml/xmlControlProperty.hxx
+++ b/reportdesign/source/filter/xml/xmlControlProperty.hxx
@@ -45,20 +45,17 @@ namespace rptxml
public:
OXMLControlProperty( ORptFilter& rImport
- ,sal_uInt16 nPrfx
- ,const OUString& rLName
- ,const css::uno::Reference< css::xml::sax::XAttributeList > & xAttrList
+ ,const css::uno::Reference< css::xml::sax::XFastAttributeList > & xAttrList
,const css::uno::Reference< css::beans::XPropertySet >& _xControl
,OXMLControlProperty* _pContainer = nullptr);
virtual ~OXMLControlProperty() override;
- virtual SvXMLImportContextRef 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;
- virtual void Characters( const OUString& rChars ) override;
+ virtual void SAL_CALL characters( const OUString& rChars ) override;
/** adds value to property
diff --git a/reportdesign/source/filter/xml/xmlFixedContent.cxx b/reportdesign/source/filter/xml/xmlFixedContent.cxx
index 0f33f91e98a9..3836e7ab06b1 100644
--- a/reportdesign/source/filter/xml/xmlFixedContent.cxx
+++ b/reportdesign/source/filter/xml/xmlFixedContent.cxx
@@ -46,17 +46,12 @@ public:
OXMLCharContent(
SvXMLImport& rImport,
OXMLFixedContent* _pFixedContent,
- sal_uInt16 nPrfx,
- const OUString& rLName,
- const uno::Reference< xml::sax::XAttributeList > & xAttrList,
+ const uno::Reference< xml::sax::XFastAttributeList > & xAttrList,
sal_Unicode c,
bool bCount );
OXMLCharContent(
SvXMLImport& rImport,
OXMLFixedContent* _pFixedContent,
- sal_uInt16 nPrfx,
- const OUString& rLName,
- const uno::Reference< xml::sax::XAttributeList > & xAttrList,
sal_Int16 nControl );
OXMLCharContent(const OXMLCharContent&) = delete;
OXMLCharContent& operator=(const OXMLCharContent&) = delete;
@@ -70,12 +65,10 @@ public:
OXMLCharContent::OXMLCharContent(
SvXMLImport& rImport,
OXMLFixedContent* _pFixedContent,
- sal_uInt16 nPrfx,
- const OUString& rLName,
- const uno::Reference< xml::sax::XAttributeList > & xAttrList,
+ const uno::Reference< xml::sax::XFastAttributeList > & xAttrList,
sal_Unicode c,
bool bCount )
- : XMLCharContext(rImport,nPrfx,rLName,xAttrList,c,bCount)
+ : XMLCharContext(rImport,xAttrList,c,bCount)
,m_pFixedContent(_pFixedContent)
{
}
@@ -83,11 +76,8 @@ OXMLCharContent::OXMLCharContent(
OXMLCharContent::OXMLCharContent(
SvXMLImport& rImport,
OXMLFixedContent* _pFixedContent,
- sal_uInt16 nPrfx,
- const OUString& rLName,
- const uno::Reference< xml::sax::XAttributeList > & xAttrList,
sal_Int16 nControl )
- : XMLCharContext(rImport,nPrfx,rLName,xAttrList,nControl)
+ : XMLCharContext(rImport,nControl)
,m_pFixedContent(_pFixedContent)
{
}
@@ -111,12 +101,11 @@ void OXMLCharContent::InsertString(const OUString& _sString)
}
-OXMLFixedContent::OXMLFixedContent( ORptFilter& rImport,
- sal_uInt16 nPrfx, const OUString& rLName
+OXMLFixedContent::OXMLFixedContent( ORptFilter& rImport
,OXMLCell& _rCell
,OXMLTable* _pContainer
,OXMLFixedContent* _pInP) :
- OXMLReportElementBase( rImport, nPrfx, rLName,nullptr,_pContainer)
+ OXMLReportElementBase( rImport,nullptr,_pContainer)
,m_rCell(_rCell)
,m_pInP(_pInP)
,m_bFormattedField(false)
@@ -130,47 +119,41 @@ OXMLFixedContent::~OXMLFixedContent()
}
-SvXMLImportContextRef OXMLFixedContent::CreateChildContext_(
- sal_uInt16 nPrefix,
- const OUString& rLocalName,
- const Reference< XAttributeList > & xAttrList )
+css::uno::Reference< css::xml::sax::XFastContextHandler > OXMLFixedContent::createFastChildContext_(
+ sal_Int32 nElement,
+ const css::uno::Reference< css::xml::sax::XFastAttributeList > & xAttrList )
{
- SvXMLImportContextRef xContext = OXMLReportElementBase::CreateChildContext_(nPrefix,rLocalName,xAttrList);
+ css::uno::Reference< css::xml::sax::XFastContextHandler > xContext = OXMLReportElementBase::createFastChildContext_(nElement,xAttrList);
if (xContext)
return xContext;
static const char s_sStringConcat[] = " & ";
- const SvXMLTokenMap& rTokenMap = m_rImport.GetCellElemTokenMap();
m_rImport.GetProgressBarHelper()->Increment( PROGRESS_BAR_STEP );
- const sal_uInt16 nToken = rTokenMap.Get( nPrefix, rLocalName );
- switch( nToken )
+ switch( nElement )
{
- case XML_TOK_P:
- xContext = new OXMLFixedContent(m_rImport,nPrefix, rLocalName,m_rCell,m_pContainer,this);
+ case XML_ELEMENT(TEXT, XML_P):
+ xContext = new OXMLFixedContent(m_rImport,m_rCell,m_pContainer,this);
break;
- case XML_TOK_TEXT_TAB_STOP:
- xContext = new OXMLCharContent( m_rImport, this,nPrefix,
- rLocalName, xAttrList,
+ case XML_ELEMENT(TEXT, XML_TAB):
+ xContext = new OXMLCharContent( m_rImport, this, xAttrList,
0x0009, false );
break;
- case XML_TOK_TEXT_LINE_BREAK:
- xContext = new OXMLCharContent( m_rImport, this,nPrefix,
- rLocalName, xAttrList,
+ case XML_ELEMENT(TEXT, XML_LINE_BREAK):
+ xContext = new OXMLCharContent( m_rImport, this,
ControlCharacter::LINE_BREAK );
break;
- case XML_TOK_TEXT_S:
- xContext = new OXMLCharContent( m_rImport, this,nPrefix,
- rLocalName, xAttrList,
+ case XML_ELEMENT(TEXT, XML_S):
+ xContext = new OXMLCharContent( m_rImport, this, xAttrList,
0x0020, true );
break;
- case XML_TOK_PAGE_NUMBER:
+ case XML_ELEMENT(TEXT, XML_PAGE_NUMBER):
m_sPageText += OUStringLiteral(s_sStringConcat) + " PageNumber()";
m_bFormattedField = true;
break;
- case XML_TOK_PAGE_COUNT:
+ case XML_ELEMENT(TEXT, XML_PAGE_COUNT):
m_sPageText += OUStringLiteral(s_sStringConcat) + " PageCount()";
m_bFormattedField = true;
break;
@@ -180,7 +163,7 @@ SvXMLImportContextRef OXMLFixedContent::CreateChildContext_(
return xContext;
}
-void OXMLFixedContent::EndElement()
+void OXMLFixedContent::endFastElement(sal_Int32 )
{
if ( m_pInP )
{
@@ -210,7 +193,7 @@ void OXMLFixedContent::EndElement()
}
}
-void OXMLFixedContent::Characters( const OUString& rChars )
+void OXMLFixedContent::characters( const OUString& rChars )
{
m_sLabel += rChars;
if ( !rChars.isEmpty() )
diff --git a/reportdesign/source/filter/xml/xmlFixedContent.hxx b/reportdesign/source/filter/xml/xmlFixedContent.hxx
index 18bd802cfd3f..c4e1520be9a9 100644
--- a/reportdesign/source/filter/xml/xmlFixedContent.hxx
+++ b/reportdesign/source/filter/xml/xmlFixedContent.hxx
@@ -36,16 +36,14 @@ namespace rptxml
bool m_bFormattedField;
protected:
- virtual SvXMLImportContextRef 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 > createFastChildContext_( sal_Int32 nElement,
+ const css::uno::Reference< css::xml::sax::XFastAttributeList > & xAttrList ) override;
private:
OXMLFixedContent(const OXMLFixedContent&) = delete;
OXMLFixedContent& operator =(const OXMLFixedContent&) = delete;
public:
- OXMLFixedContent( ORptFilter& rImport, sal_uInt16 nPrfx,
- const OUString& rLName
+ OXMLFixedContent( ORptFilter& rImport
,OXMLCell& _rCell
,OXMLTable* _pContainer
,OXMLFixedContent* _pInP = nullptr);
@@ -53,9 +51,9 @@ namespace rptxml
// This method is called for all characters that are contained in the
// current element. The default is to ignore them.
- virtual void Characters( const OUString& rChars ) override;
+ virtual void SAL_CALL characters( const OUString& rChars ) override;
- virtual void EndElement() override;
+ virtual void SAL_CALL endFastElement(sal_Int32 nElement) override;
};
} // namespace rptxml
diff --git a/reportdesign/source/filter/xml/xmlFormatCondition.cxx b/reportdesign/source/filter/xml/xmlFormatCondition.cxx
index 676ee22896ae..580651197e9e 100644
--- a/reportdesign/source/filter/xml/xmlFormatCondition.cxx
+++ b/reportdesign/source/filter/xml/xmlFormatCondition.cxx
@@ -38,37 +38,32 @@ namespace rptxml
using namespace ::com::sun::star::beans;
OXMLFormatCondition::OXMLFormatCondition( ORptFilter& rImport,
- sal_uInt16 nPrfx, const OUString& rLName,
- const Reference< XAttributeList > & _xAttrList
+ const Reference< XFastAttributeList > & _xAttrList
,const Reference< XFormatCondition > & _xComponent ) :
- SvXMLImportContext( rImport, nPrfx, rLName )
+ SvXMLImportContext( rImport )
,m_rImport(rImport)
,m_xComponent(_xComponent)
{
OSL_ENSURE(m_xComponent.is(),"Component is NULL!");
- const SvXMLNamespaceMap& rMap = rImport.GetNamespaceMap();
- const SvXMLTokenMap& rTokenMap = rImport.GetFormatElemTokenMap();
static const OUString s_sTRUE = ::xmloff::token::GetXMLToken(XML_TRUE);
- const sal_Int16 nLength = (_xAttrList.is()) ? _xAttrList->getLength() : 0;
try
{
- for(sal_Int16 i = 0; i < nLength; ++i)
+ sax_fastparser::FastAttributeList *pAttribList =
+ sax_fastparser::FastAttributeList::castToFastAttributeList( _xAttrList );
+ for (auto &aIter : *pAttribList)
{
- OUString sLocalName;
- const OUString sAttrName = _xAttrList->getNameByIndex( i );
- const sal_uInt16 nPrefix = rMap.GetKeyByAttrName( sAttrName,&sLocalName );
- const OUString sValue = _xAttrList->getValueByIndex( i );
+ OUString sValue = aIter.toString();
- switch( rTokenMap.Get( nPrefix, sLocalName ) )
+ switch( aIter.getToken() )
{
- case XML_TOK_ENABLED:
+ case XML_ELEMENT(REPORT, XML_ENABLED):
m_xComponent->setEnabled(sValue == s_sTRUE);
break;
- case XML_TOK_FORMULA:
+ case XML_ELEMENT(REPORT, XML_FORMULA):
m_xComponent->setFormula(ORptFilter::convertFormula(sValue));
break;
- case XML_TOK_FORMAT_STYLE_NAME:
+ case XML_ELEMENT(REPORT, XML_STYLE_NAME):
m_sStyleName = sValue;
break;
default:
@@ -87,7 +82,7 @@ OXMLFormatCondition::~OXMLFormatCondition()
{
}
-void OXMLFormatCondition::EndElement()
+void OXMLFormatCondition::endFastElement(sal_Int32 )
{
OXMLHelper::copyStyleElements(m_rImport.isOldFormat(),m_sStyleName,GetImport().GetAutoStyles(),m_xComponent.get());
}
diff --git a/reportdesign/source/filter/xml/xmlFormatCondition.hxx b/reportdesign/source/filter/xml/xmlFormatCondition.hxx
index 2fb03360583c..56bd5602fb24 100644
--- a/reportdesign/source/filter/xml/xmlFormatCondition.hxx
+++ b/reportdesign/source/filter/xml/xmlFormatCondition.hxx
@@ -34,13 +34,12 @@ namespace rptxml
void operator =(const OXMLFormatCondition&) = delete;
public:
- OXMLFormatCondition( ORptFilter& rImport, sal_uInt16 nPrfx,
- const OUString& rLName,
- const css::uno::Reference< css::xml::sax::XAttributeList > & xAttrList
+ OXMLFormatCondition( ORptFilter& rImport,
+ const css::uno::Reference< css::xml::sax::XFastAttributeList > & xAttrList
,const css::uno::Reference< css::report::XFormatCondition >& _xComponent
);
virtual ~OXMLFormatCondition() override;
- virtual void EndElement() override;
+ virtual void SAL_CALL endFastElement(sal_Int32 nElement) override;
};
} // namespace rptxml
diff --git a/reportdesign/source/filter/xml/xmlFormattedField.cxx b/reportdesign/source/filter/xml/xmlFormattedField.cxx
index 0e268a99565d..b5a646722d23 100644
--- a/reportdesign/source/filter/xml/xmlFormattedField.cxx
+++ b/reportdesign/source/filter/xml/xmlFormattedField.cxx
@@ -34,34 +34,29 @@ namespace rptxml
using namespace ::com::sun::star;
using namespace xml::sax;
-OXMLFormattedField::OXMLFormattedField( ORptFilter& rImport,
- sal_uInt16 nPrfx, const OUString& rLName
- ,const uno::Reference< xml::sax::XAttributeList > & _xAttrList
+OXMLFormattedField::OXMLFormattedField( ORptFilter& rImport
+ ,const uno::Reference< xml::sax::XFastAttributeList > & _xAttrList
,const uno::Reference< XFormattedField > & _xComponent
,OXMLTable* _pContainer
,bool _bPageCount) :
- OXMLReportElementBase( rImport, nPrfx, rLName,_xComponent.get(),_pContainer)
+ OXMLReportElementBase( rImport,_xComponent.get(),_pContainer)
{
OSL_ENSURE(m_xReportComponent.is(),"Component is NULL!");
- const SvXMLNamespaceMap& rMap = rImport.GetNamespaceMap();
- const SvXMLTokenMap& rTokenMap = rImport.GetControlElemTokenMap();
- const sal_Int16 nLength = (_xAttrList.is()) ? _xAttrList->getLength() : 0;
try
{
- for(sal_Int16 i = 0; i < nLength; ++i)
+ sax_fastparser::FastAttributeList *pAttribList =
+ sax_fastparser::FastAttributeList::castToFastAttributeList( _xAttrList );
+ for (auto &aIter : *pAttribList)
{
- OUString sLocalName;
- const OUString sAttrName = _xAttrList->getNameByIndex( i );
- const sal_uInt16 nPrefix = rMap.GetKeyByAttrName( sAttrName,&sLocalName );
- const OUString sValue = _xAttrList->getValueByIndex( i );
+ OUString sValue = aIter.toString();
- switch( rTokenMap.Get( nPrefix, sLocalName ) )
+ switch( aIter.getToken() )
{
- case XML_TOK_DATA_FORMULA:
+ case XML_ELEMENT(REPORT, XML_FORMULA):
_xComponent->setDataField(ORptFilter::convertFormula(sValue));
break;
- case XML_TOK_SELECT_PAGE:
+ case XML_ELEMENT(REPORT, XML_SELECT_PAGE):
_xComponent->setDataField("rpt:PageNumber()");
break;
default:
diff --git a/reportdesign/source/filter/xml/xmlFormattedField.hxx b/reportdesign/source/filter/xml/xmlFormattedField.hxx
index 41a94a8204ee..b181810f267c 100644
--- a/reportdesign/source/filter/xml/xmlFormattedField.hxx
+++ b/reportdesign/source/filter/xml/xmlFormattedField.hxx
@@ -32,9 +32,7 @@ namespace rptxml
public:
OXMLFormattedField( ORptFilter& rImport
- ,sal_uInt16 nPrfx
- ,const OUString& rLName
- ,const css::uno::Reference< css::xml::sax::XAttributeList > & xAttrList
+ ,const css::uno::Reference< css::xml::sax::XFastAttributeList > & xAttrList
,const css::uno::Reference< css::report::XFormattedField >& _xComponent
,OXMLTable* _pContainer
,bool _bPageCount);
diff --git a/reportdesign/source/filter/xml/xmlFunction.cxx b/reportdesign/source/filter/xml/xmlFunction.cxx
index f2a5850eef0f..8bda678e3c91 100644
--- a/reportdesign/source/filter/xml/xmlFunction.cxx
+++ b/reportdesign/source/filter/xml/xmlFunction.cxx
@@ -34,13 +34,11 @@ namespace rptxml
OXMLFunction::OXMLFunction( ORptFilter& _rImport
- ,sal_uInt16 nPrfx
- ,const OUString& _sLocalName
- ,const Reference< XAttributeList > & _xAttrList
+ ,const Reference< XFastAttributeList > & _xAttrList
,const Reference< XFunctionsSupplier >& _xFunctions
,bool _bAddToReport
) :
- SvXMLImportContext( _rImport, nPrfx, _sLocalName )
+ SvXMLImportContext( _rImport )
,m_xFunctions(_xFunctions->getFunctions())
,m_bAddToReport(_bAddToReport)
{
@@ -48,38 +46,31 @@ OXMLFunction::OXMLFunction( ORptFilter& _rImport
OSL_ENSURE(m_xFunctions.is(),"Functions is NULL!");
m_xFunction = m_xFunctions->createFunction();
- OSL_ENSURE(_xAttrList.is(),"Attribute list is NULL!");
-
- const SvXMLNamespaceMap& rMap = _rImport.GetNamespaceMap();
- const SvXMLTokenMap& rTokenMap = _rImport.GetFunctionElemTokenMap();
-
- const sal_Int16 nLength = (_xAttrList.is()) ? _xAttrList->getLength() : 0;
static const OUString s_sTRUE = ::xmloff::token::GetXMLToken(XML_TRUE);
- for(sal_Int16 i = 0; i < nLength; ++i)
+ sax_fastparser::FastAttributeList *pAttribList =
+ sax_fastparser::FastAttributeList::castToFastAttributeList( _xAttrList );
+ for (auto &aIter : *pAttribList)
{
- OUString sLocalName;
- const OUString sAttrName = _xAttrList->getNameByIndex( i );
- const sal_uInt16 nPrefix = rMap.GetKeyByAttrName( sAttrName,&sLocalName );
- const OUString sValue = _xAttrList->getValueByIndex( i );
+ OUString sValue = aIter.toString();
try
{
- switch( rTokenMap.Get( nPrefix, sLocalName ) )
+ switch( aIter.getToken() )
{
- case XML_TOK_FUNCTION_NAME:
+ case XML_ELEMENT(REPORT, XML_NAME):
m_xFunction->setName(sValue);
break;
- case XML_TOK_FUNCTION_FORMULA:
+ case XML_ELEMENT(REPORT, XML_FORMULA):
m_xFunction->setFormula(ORptFilter::convertFormula(sValue));
break;
- case XML_TOK_PRE_EVALUATED:
+ case XML_ELEMENT(REPORT, XML_PRE_EVALUATED):
m_xFunction->setPreEvaluated(sValue == s_sTRUE);
break;
- case XML_TOK_INITIAL_FORMULA:
+ case XML_ELEMENT(REPORT, XML_INITIAL_FORMULA):
if ( !sValue.isEmpty() )
m_xFunction->setInitialFormula(beans::Optional< OUString>(true,ORptFilter::convertFormula(sValue)));
break;
- case XML_TOK_DEEP_TRAVERSING:
+ case XML_ELEMENT(REPORT, XML_DEEP_TRAVERSING):
m_xFunction->setDeepTraversing(sValue == s_sTRUE);
break;
default:
@@ -103,7 +94,7 @@ ORptFilter& OXMLFunction::GetOwnImport()
return static_cast<ORptFilter&>(GetImport());
}
-void OXMLFunction::EndElement()
+void OXMLFunction::endFastElement(sal_Int32 )
{
if ( m_bAddToReport )
{
diff --git a/reportdesign/source/filter/xml/xmlFunction.hxx b/reportdesign/source/filter/xml/xmlFunction.hxx
index 1f1fe3e94d30..da3f6ac118b6 100644
--- a/reportdesign/source/filter/xml/xmlFunction.hxx
+++ b/reportdesign/source/filter/xml/xmlFunction.hxx
@@ -41,15 +41,13 @@ namespace rptxml
public:
OXMLFunction( ORptFilter& rImport
- , sal_uInt16 nPrfx
- ,const OUString& rLName
- ,const css::uno::Reference< css::xml::sax::XAttributeList > & xAttrList
+ ,const css::uno::Reference< css::xml::sax::XFastAttributeList > & xAttrList
,const css::uno::Reference< css::report::XFunctionsSupplier >& _xFunctions
,bool _bAddToReport = false
);
virtual ~OXMLFunction() override;
- virtual void EndElement() override;
+ virtual void SAL_CALL endFastElement(sal_Int32 nElement) override;
};
} // namespace rptxml
diff --git a/reportdesign/source/filter/xml/xmlGroup.cxx b/reportdesign/source/filter/xml/xmlGroup.cxx
index 69dfc393ed28..fdeb2b00f462 100644
--- a/reportdesign/source/filter/xml/xmlGroup.cxx
+++ b/reportdesign/source/filter/xml/xmlGroup.cxx
@@ -47,45 +47,37 @@ namespace rptxml
}
OXMLGroup::OXMLGroup( ORptFilter& _rImport
- ,sal_uInt16 nPrfx
- ,const OUString& _sLocalName
- ,const Reference< XAttributeList > & _xAttrList
+ ,const Reference< XFastAttributeList > & _xAttrList
) :
- SvXMLImportContext( _rImport, nPrfx, _sLocalName )
+ SvXMLImportContext( _rImport )
{
m_xGroups = _rImport.getReportDefinition()->getGroups();
OSL_ENSURE(m_xGroups.is(),"Groups is NULL!");
m_xGroup = m_xGroups->createGroup();
- OSL_ENSURE(_xAttrList.is(),"Attribute list is NULL!");
-
- const SvXMLNamespaceMap& rMap = _rImport.GetNamespaceMap();
- const SvXMLTokenMap& rTokenMap = _rImport.GetGroupElemTokenMap();
m_xGroup->setSortAscending(false);// the default value has to be set
- const sal_Int16 nLength = (_xAttrList.is()) ? _xAttrList->getLength() : 0;
static const OUString s_sTRUE = ::xmloff::token::GetXMLToken(XML_TRUE);
- for(sal_Int16 i = 0; i < nLength; ++i)
+ sax_fastparser::FastAttributeList *pAttribList =
+ sax_fastparser::FastAttributeList::castToFastAttributeList( _xAttrList );
+ for (auto &aIter : *pAttribList)
{
- OUString sLocalName;
- const OUString sAttrName = _xAttrList->getNameByIndex( i );
- const sal_uInt16 nPrefix = rMap.GetKeyByAttrName( sAttrName,&sLocalName );
- OUString sValue = _xAttrList->getValueByIndex( i );
+ OUString sValue = aIter.toString();
try
{
- switch( rTokenMap.Get( nPrefix, sLocalName ) )
+ switch( aIter.getToken() )
{
- case XML_TOK_START_NEW_COLUMN:
+ case XML_ELEMENT(REPORT, XML_START_NEW_COLUMN):
m_xGroup->setStartNewColumn(sValue == s_sTRUE);
break;
- case XML_TOK_RESET_PAGE_NUMBER:
+ case XML_ELEMENT(REPORT, XML_RESET_PAGE_NUMBER):
m_xGroup->setResetPageNumber(sValue == s_sTRUE);
break;
- case XML_TOK_SORT_ASCENDING:
+ case XML_ELEMENT(REPORT, XML_SORT_ASCENDING):
m_xGroup->setSortAscending(sValue == s_sTRUE);
break;
- case XML_TOK_GROUP_EXPRESSION:
+ case XML_ELEMENT(REPORT, XML_GROUP_EXPRESSION):
{
sal_Int32 nLen = sValue.getLength();
if ( nLen )
@@ -164,7 +156,7 @@ OXMLGroup::OXMLGroup( ORptFilter& _rImport
}
}
break;
- case XML_TOK_GROUP_KEEP_TOGETHER:
+ case XML_ELEMENT(REPORT, XML_KEEP_TOGETHER):
m_xGroup->setKeepTogether(lcl_getKeepTogetherOption(sValue));
break;
default:
@@ -184,54 +176,52 @@ OXMLGroup::~OXMLGroup()
}
-SvXMLImportContextRef OXMLGroup::CreateChildContext(
- sal_uInt16 nPrefix,
- const OUString& rLocalName,
- const Reference< XAttributeList > & xAttrList )
+css::uno::Reference< css::xml::sax::XFastContextHandler > OXMLGroup::createFastChildContext(
+ sal_Int32 nElement,
+ const css::uno::Reference< css::xml::sax::XFastAttributeList >& xAttrList )
{
- SvXMLImportContext *pContext = nullptr;
+ css::uno::Reference< css::xml::sax::XFastContextHandler > xContext;
ORptFilter& rImport = GetOwnImport();
- const SvXMLTokenMap& rTokenMap = rImport.GetGroupElemTokenMap();
- switch( rTokenMap.Get( nPrefix, rLocalName ) )
+ switch( nElement )
{
- case XML_TOK_GROUP_FUNCTION:
+ case XML_ELEMENT(REPORT, XML_FUNCTION):
{
rImport.GetProgressBarHelper()->Increment( PROGRESS_BAR_STEP );
- pContext = new OXMLFunction( rImport, nPrefix, rLocalName,xAttrList,m_xGroup.get());
+ xContext = new OXMLFunction( rImport,xAttrList,m_xGroup.get());
}
break;
- case XML_TOK_GROUP_HEADER:
+ case XML_ELEMENT(REPORT, XML_GROUP_HEADER):
{
rImport.GetProgressBarHelper()->Increment( PROGRESS_BAR_STEP );
m_xGroup->setHeaderOn(true);
- pContext = new OXMLSection( rImport, nPrefix, rLocalName,xAttrList,m_xGroup->getHeader());
+ xContext = new OXMLSection( rImport,xAttrList,m_xGroup->getHeader());
}
break;
- case XML_TOK_GROUP_GROUP:
+ case XML_ELEMENT(REPORT, XML_GROUP):
rImport.GetProgressBarHelper()->Increment( PROGRESS_BAR_STEP );
- pContext = new OXMLGroup( rImport, nPrefix, rLocalName,xAttrList);
+ xContext = new OXMLGroup( rImport,xAttrList);
break;
- case XML_TOK_GROUP_DETAIL:
+ case XML_ELEMENT(REPORT, XML_DETAIL):
{
rImport.GetProgressBarHelper()->Increment( PROGRESS_BAR_STEP );
Reference<XReportDefinition> xComponent = rImport.getReportDefinition();
- pContext = new OXMLSection( rImport, nPrefix, rLocalName,xAttrList, xComponent->getDetail());
+ xContext = new OXMLSection( rImport,xAttrList, xComponent->getDetail());
}
break;
- case XML_TOK_GROUP_FOOTER:
+ case XML_ELEMENT(REPORT, XML_GROUP_FOOTER):
{
rImport.GetProgressBarHelper()->Increment( PROGRESS_BAR_STEP );
m_xGroup->setFooterOn(true);
- pContext = new OXMLSection( rImport, nPrefix, rLocalName,xAttrList,m_xGroup->getFooter());
+ xContext = new OXMLSection( rImport,xAttrList,m_xGroup->getFooter());
}
break;
default:
break;
}
- return pContext;
+ return xContext;
}
ORptFilter& OXMLGroup::GetOwnImport()
@@ -239,7 +229,7 @@ ORptFilter& OXMLGroup::GetOwnImport()
return static_cast<ORptFilter&>(GetImport());
}
-void OXMLGroup::EndElement()
+void OXMLGroup::endFastElement(sal_Int32 )
{
try
{
diff --git a/reportdesign/source/filter/xml/xmlGroup.hxx b/reportdesign/source/filter/xml/xmlGroup.hxx
index ba1fc508dece..ea1b97602aaf 100644
--- a/reportdesign/source/filter/xml/xmlGroup.hxx
+++ b/reportdesign/source/filter/xml/xmlGroup.hxx
@@ -38,17 +38,14 @@ namespace rptxml
public:
OXMLGroup( ORptFilter& rImport
- , sal_uInt16 nPrfx
- ,const OUString& rLName
- ,const css::uno::Reference< css::xml::sax::XAttributeList > & xAttrList
+ ,const css::uno::Reference< css::xml::sax::XFastAttributeList > & xAttrList
);
virtual ~OXMLGroup() override;
- virtual SvXMLImportContextRef 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;
};
} // namespace rptxml
diff --git a/reportdesign/source/filter/xml/xmlImage.cxx b/reportdesign/source/filter/xml/xmlImage.cxx
index 0c4f8b2137fc..a0b559730e68 100644
--- a/reportdesign/source/filter/xml/xmlImage.cxx
+++ b/reportdesign/source/filter/xml/xmlImage.cxx
@@ -40,41 +40,36 @@ namespace rptxml
OXMLImage::OXMLImage( ORptFilter& rImport,
- sal_uInt16 nPrfx, const OUString& rLName,
- const Reference< XAttributeList > & _xAttrList
+ const Reference< XFastAttributeList > & _xAttrList
,const Reference< XImageControl > & _xComponent
,OXMLTable* _pContainer) :
- OXMLReportElementBase( rImport, nPrfx, rLName,_xComponent.get(),_pContainer)
+ OXMLReportElementBase( rImport,_xComponent.get(),_pContainer)
{
OSL_ENSURE(m_xReportComponent.is(),"Component is NULL!");
- const SvXMLNamespaceMap& rMap = m_rImport.GetNamespaceMap();
- const SvXMLTokenMap& rTokenMap = m_rImport.GetControlElemTokenMap();
static const OUString s_sTRUE = ::xmloff::token::GetXMLToken(XML_TRUE);
- const sal_Int16 nLength = (_xAttrList.is()) ? _xAttrList->getLength() : 0;
try
{
- for(sal_Int16 i = 0; i < nLength; ++i)
+ sax_fastparser::FastAttributeList *pAttribList =
+ sax_fastparser::FastAttributeList::castToFastAttributeList( _xAttrList );
+ for (auto &aIter : *pAttribList)
{
- OUString sLocalName;
- const OUString sAttrName = _xAttrList->getNameByIndex( i );
- const sal_uInt16 nPrefix = rMap.GetKeyByAttrName( sAttrName,&sLocalName );
- /* const */ OUString sValue = _xAttrList->getValueByIndex( i );
+ OUString sValue = aIter.toString();
- switch( rTokenMap.Get( nPrefix, sLocalName ) )
+ switch( aIter.getToken() )
{
- case XML_TOK_IMAGE_DATA:
+ case XML_ELEMENT(FORM, XML_IMAGE_DATA):
{
SvtPathOptions aPathOptions;
sValue = aPathOptions.SubstituteVariable(sValue);
_xComponent->setImageURL(rImport.GetAbsoluteReference( sValue ));
break;
}
- case XML_TOK_PRESERVE_IRI:
+ case XML_ELEMENT(REPORT, XML_PRESERVE_IRI):
_xComponent->setPreserveIRI(s_sTRUE == sValue);
break;
- case XML_TOK_SCALE:
+ case XML_ELEMENT(REPORT, XML_SCALE):
{
sal_Int16 nRet = awt::ImageScaleMode::NONE;
if ( s_sTRUE == sValue )
@@ -90,7 +85,7 @@ OXMLImage::OXMLImage( ORptFilter& rImport,
_xComponent->setScaleMode( nRet );
break;
}
- case XML_TOK_DATA_FORMULA:
+ case XML_ELEMENT(REPORT, XML_FORMULA):
_xComponent->setDataField(ORptFilter::convertFormula(sValue));
break;
default:
diff --git a/reportdesign/source/filter/xml/xmlImage.hxx b/reportdesign/source/filter/xml/xmlImage.hxx
index af90f820e727..32be8a8ac1c5 100644
--- a/reportdesign/source/filter/xml/xmlImage.hxx
+++ b/reportdesign/source/filter/xml/xmlImage.hxx
@@ -31,9 +31,8 @@ namespace rptxml
void operator =(const OXMLImage&) = delete;
public:
- OXMLImage( ORptFilter& rImport, sal_uInt16 nPrfx,
- const OUString& rLName,
- const css::uno::Reference< css::xml::sax::XAttributeList > & xAttrList
+ OXMLImage( ORptFilter& rImport,
+ const css::uno::Reference< css::xml::sax::XFastAttributeList > & xAttrList
,const css::uno::Reference< css::report::XImageControl >& _xComponent
,OXMLTable* _pContainer);
virtual ~OXMLImage() override;
diff --git a/reportdesign/source/filter/xml/xmlMasterFields.cxx b/reportdesign/source/filter/xml/xmlMasterFields.cxx
index 49df6b004de2..2816be32cbe2 100644
--- a/reportdesign/source/filter/xml/xmlMasterFields.cxx
+++ b/reportdesign/source/filter/xml/xmlMasterFields.cxx
@@ -33,32 +33,25 @@ namespace rptxml
using namespace ::com::sun::star::xml::sax;
OXMLMasterFields::OXMLMasterFields( ORptFilter& rImport,
- sal_uInt16 nPrfx, const OUString& rLName,
- const Reference< XAttributeList > & _xAttrList
+ const Reference< XFastAttributeList > & _xAttrList
,IMasterDetailFieds* _pReport
) :
- SvXMLImportContext( rImport, nPrfx, rLName)
+ SvXMLImportContext( rImport )
,m_pReport(_pReport)
{
-
- const SvXMLNamespaceMap& rMap = rImport.GetNamespaceMap();
- const SvXMLTokenMap& rTokenMap = rImport.GetSubDocumentElemTokenMap();
-
OUString sMasterField,sDetailField;
- const sal_Int16 nLength = (_xAttrList.is()) ? _xAttrList->getLength() : 0;
- for(sal_Int16 i = 0; i < nLength; ++i)
+ sax_fastparser::FastAttributeList *pAttribList =
+ sax_fastparser::FastAttributeList::castToFastAttributeList( _xAttrList );
+ for (auto &aIter : *pAttribList)
{
- OUString sLocalName;
- const OUString sAttrName = _xAttrList->getNameByIndex( i );
- const sal_uInt16 nPrefix = rMap.GetKeyByAttrName( sAttrName,&sLocalName );
- const OUString sValue = _xAttrList->getValueByIndex( i );
+ OUString sValue = aIter.toString();
- switch( rTokenMap.Get( nPrefix, sLocalName ) )
+ switch( aIter.getToken() )
{
- case XML_TOK_MASTER:
+ case XML_ELEMENT(REPORT, XML_MASTER):
sMasterField = sValue;
break;
- case XML_TOK_SUB_DETAIL:
+ case XML_ELEMENT(REPORT, XML_DETAIL):
sDetailField = sValue;
break;
default:
@@ -76,27 +69,25 @@ OXMLMasterFields::~OXMLMasterFields()
{
}
-SvXMLImportContextRef OXMLMasterFields::CreateChildContext(
- sal_uInt16 _nPrefix,
- const OUString& _rLocalName,
- const Reference< XAttributeList > & xAttrList )
+css::uno::Reference< css::xml::sax::XFastContextHandler > OXMLMasterFields::createFastChildContext(
+ sal_Int32 nElement,
+ const css::uno::Reference< css::xml::sax::XFastAttributeList >& xAttrList )
{
- SvXMLImportContext *pContext = nullptr;
- const SvXMLTokenMap& rTokenMap = static_cast<ORptFilter&>(GetImport()).GetSubDocumentElemTokenMap();
+ css::uno::Reference< css::xml::sax::XFastContextHandler > xContext;
- switch( rTokenMap.Get( _nPrefix, _rLocalName ) )
+ switch( nElement )
{
- case XML_TOK_MASTER_DETAIL_FIELD:
+ case XML_ELEMENT(REPORT, XML_MASTER_DETAIL_FIELD):
{
GetImport().GetProgressBarHelper()->Increment( PROGRESS_BAR_STEP );
- pContext = new OXMLMasterFields(static_cast<ORptFilter&>(GetImport()), _nPrefix, _rLocalName,xAttrList ,m_pReport);
+ xContext = new OXMLMasterFields(static_cast<ORptFilter&>(GetImport()),xAttrList ,m_pReport);
}
break;
default:
break;
}
- return pContext;
+ return xContext;
}
diff --git a/reportdesign/source/filter/xml/xmlMasterFields.hxx b/reportdesign/source/filter/xml/xmlMasterFields.hxx
index 1e0d70eae156..e8e212827e60 100644
--- a/reportdesign/source/filter/xml/xmlMasterFields.hxx
+++ b/reportdesign/source/filter/xml/xmlMasterFields.hxx
@@ -31,16 +31,13 @@ namespace rptxml
void operator =(const OXMLMasterFields&) = delete;
public:
- OXMLMasterFields( ORptFilter& rImport, sal_uInt16 nPrfx,
- const OUString& rLName,
- const css::uno::Reference< css::xml::sax::XAttributeList > & xAttrList
+ OXMLMasterFields( ORptFilter& rImport,
+ const css::uno::Reference< css::xml::sax::XFastAttributeList > & xAttrList
,IMasterDetailFieds* _pReport);
virtual ~OXMLMasterFields() override;
- virtual SvXMLImportContextRef 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;
};
} // namespace rptxml
diff --git a/reportdesign/source/filter/xml/xmlReport.cxx b/reportdesign/source/filter/xml/xmlReport.cxx
index 5b7a7bfaf740..96d08acb4f58 100644
--- a/reportdesign/source/filter/xml/xmlReport.cxx
+++ b/reportdesign/source/filter/xml/xmlReport.cxx
@@ -41,33 +41,27 @@ namespace rptxml
OXMLReport::OXMLReport( ORptFilter& rImport,
- sal_uInt16 nPrfx, const OUString& rLName,
- const Reference< XAttributeList > & _xAttrList
+ const Reference< css::xml::sax::XFastAttributeList > & _xAttrList
,const uno::Reference< report::XReportDefinition >& _xComponent) :
- OXMLReportElementBase( rImport, nPrfx, rLName,_xComponent.get(),nullptr)
+ OXMLReportElementBase( rImport, _xComponent.get(),nullptr)
,m_xReportDefinition(_xComponent)
{
OSL_ENSURE(m_xReportDefinition.is(),"No Report definition!");
impl_initRuntimeDefaults();
- const SvXMLNamespaceMap& rMap = m_rImport.GetNamespaceMap();
- const SvXMLTokenMap& rTokenMap = m_rImport.GetReportElemTokenMap();
-
- const sal_Int16 nLength = (_xAttrList.is()) ? _xAttrList->getLength() : 0;
static const OUString s_sTRUE = ::xmloff::token::GetXMLToken(XML_TRUE);
try
{
- for(sal_Int16 i = 0; i < nLength; ++i)
+ sax_fastparser::FastAttributeList *pAttribList =
+ sax_fastparser::FastAttributeList::castToFastAttributeList( _xAttrList );
+ for (auto &aIter : *pAttribList)
{
- OUString sLocalName;
- const OUString sAttrName = _xAttrList->getNameByIndex( i );
- const sal_uInt16 nPrefix = rMap.GetKeyByAttrName( sAttrName,&sLocalName );
- const OUString sValue = _xAttrList->getValueByIndex( i );
+ OUString sValue = aIter.toString();
- switch( rTokenMap.Get( nPrefix, sLocalName ) )
+ switch( aIter.getToken() )
{
- case XML_TOK_COMMAND_TYPE:
+ case XML_ELEMENT(REPORT, XML_COMMAND_TYPE):
{
sal_Int32 nRet = sdb::CommandType::COMMAND;
const SvXMLEnumMapEntry<sal_Int32>* aXML_EnumMap = OXMLHelper::GetCommandTypeOptions();
@@ -76,22 +70,22 @@ OXMLReport::OXMLReport( ORptFilter& rImport,
m_xReportDefinition->setCommandType(nRet);
}
break;
- case XML_TOK_COMMAND:
+ case XML_ELEMENT(REPORT, XML_COMMAND):
m_xReportDefinition->setCommand(sValue);
break;
- case XML_TOK_FILTER:
+ case XML_ELEMENT(REPORT, XML_FILTER):
m_xReportDefinition->setFilter(sValue);
break;
- case XML_TOK_CAPTION:
+ case XML_ELEMENT(REPORT, XML_CAPTION):
m_xReportDefinition->setCaption(sValue);
break;
- case XML_TOK_ESCAPE_PROCESSING:
+ case XML_ELEMENT(REPORT, XML_ESCAPE_PROCESSING):
m_xReportDefinition->setEscapeProcessing(sValue == s_sTRUE);
break;
- case XML_TOK_REPORT_MIMETYPE:
+ case XML_ELEMENT(OFFICE, XML_MIMETYPE):
m_xReportDefinition->setMimeType(sValue);
break;
- case XML_TOK_REPORT_NAME:
+ case XML_ELEMENT(DRAW, XML_NAME):
m_xReportDefinition->setName(sValue);
break;
default:
@@ -128,64 +122,62 @@ void OXMLReport::impl_initRuntimeDefaults() const
}
-SvXMLImportContextRef OXMLReport::CreateChildContext(
- sal_uInt16 nPrefix,
- const OUString& rLocalName,
- const Reference< XAttributeList > & xAttrList )
+css::uno::Reference< css::xml::sax::XFastContextHandler > OXMLReport::createFastChildContext(
+ sal_Int32 nElement,
+ const css::uno::Reference< css::xml::sax::XFastAttributeList >& xAttrList )
{
- SvXMLImportContextRef xContext = CreateChildContext_(nPrefix,rLocalName,xAttrList);
+ css::uno::Reference< css::xml::sax::XFastContextHandler > xContext = createFastChildContext_(nElement,xAttrList);
if (xContext)
return xContext;
- const SvXMLTokenMap& rTokenMap = m_rImport.GetReportElemTokenMap();
- switch( rTokenMap.Get( nPrefix, rLocalName ) )
+ switch( nElement )
{
- case XML_TOK_REPORT_FUNCTION:
+ case XML_ELEMENT(REPORT, XML_FUNCTION):
{
m_rImport.GetProgressBarHelper()->Increment( PROGRESS_BAR_STEP );
- xContext = new OXMLFunction( m_rImport, nPrefix, rLocalName,xAttrList,m_xReportDefinition.get(),true);
+ xContext = new OXMLFunction( m_rImport,xAttrList,m_xReportDefinition.get(),true);
}
break;
- case XML_TOK_MASTER_DETAIL_FIELDS:
+ case XML_ELEMENT(REPORT, XML_MASTER_DETAIL_FIELDS):
m_rImport.GetProgressBarHelper()->Increment( PROGRESS_BAR_STEP );
- xContext = new OXMLMasterFields(m_rImport, nPrefix, rLocalName,xAttrList ,this);
+ xContext = new OXMLMasterFields(m_rImport,xAttrList ,this);
break;
- case XML_TOK_REPORT_HEADER:
+ case XML_ELEMENT(REPORT, XML_REPORT_HEADER):
{
m_rImport.GetProgressBarHelper()->Increment( PROGRESS_BAR_STEP );
m_xReportDefinition->setReportHeaderOn(true);
- xContext = new OXMLSection( m_rImport, nPrefix, rLocalName,xAttrList, m_xReportDefinition->getReportHeader());
+ xContext = new OXMLSection( m_rImport,xAttrList, m_xReportDefinition->getReportHeader());
}
break;
- case XML_TOK_PAGE_HEADER:
+ case XML_ELEMENT(REPORT, XML_PAGE_HEADER):
{
m_rImport.GetProgressBarHelper()->Increment( PROGRESS_BAR_STEP );
m_xReportDefinition->setPageHeaderOn(true);
- xContext = new OXMLSection( m_rImport, nPrefix, rLocalName,xAttrList, m_xReportDefinition->getPageHeader());
+ xContext = new OXMLSection( m_rImport,xAttrList, m_xReportDefinition->getPageHeader());
}
break;
- case XML_TOK_GROUP:
+ case XML_ELEMENT(REPORT, XML_GROUP):
m_rImport.GetProgressBarHelper()->Increment( PROGRESS_BAR_STEP );
- xContext = new OXMLGroup( m_rImport, nPrefix, rLocalName,xAttrList);
+ xContext = new OXMLGroup( m_rImport,xAttrList);
break;
- case XML_TOK_DETAIL:
+ case XML_ELEMENT(REPORT, XML_DETAIL):
{
m_rImport.GetProgressBarHelper()->Increment( PROGRESS_BAR_STEP );
- xContext = new OXMLSection( m_rImport, nPrefix, rLocalName,xAttrList, m_xReportDefinition->getDetail());
+ xContext = new OXMLSection( m_rImport,xAttrList, m_xReportDefinition->getDetail());
}
break;
- case XML_TOK_PAGE_FOOTER:
+ case XML_ELEMENT(REPORT, XML_PAGE_FOOTER):
{
m_rImport.GetProgressBarHelper()->Increment( PROGRESS_BAR_STEP );
m_xReportDefinition->setPageFooterOn(true);
- xContext = new OXMLSection( m_rImport, nPrefix, rLocalName,xAttrList, m_xReportDefinition->getPageFooter(),false);
+ xContext = new OXMLSection( m_rImport,xAttrList, m_xReportDefinition->getPageFooter(),false);
}
break;
- case XML_TOK_REPORT_FOOTER:
+ case XML_ELEMENT(REPORT, XML_REPORT_FOOTER):
{
m_rImport.GetProgressBarHelper()->Increment( PROGRESS_BAR_STEP );
m_xReportDefinition->setReportFooterOn(true);
- xContext = new OXMLSection( m_rImport, nPrefix, rLocalName,xAttrList, m_xReportDefinition->getReportFooter());
+ xContext = new OXMLSection( m_rImport, xAttrList, m_xReportDefinition->getReportFooter());
}
break;
default:
@@ -195,7 +187,7 @@ SvXMLImportContextRef OXMLReport::CreateChildContext(
return xContext;
}
-void OXMLReport::EndElement()
+void OXMLReport::endFastElement(sal_Int32)
{
Reference< XFunctions > xFunctions = m_xReportDefinition->getFunctions();
const ORptFilter::TGroupFunctionMap& aFunctions = m_rImport.getFunctions();
diff --git a/reportdesign/source/filter/xml/xmlReport.hxx b/reportdesign/source/filter/xml/xmlReport.hxx
index ba5702c0bdc6..e6d4627e3297 100644
--- a/reportdesign/source/filter/xml/xmlReport.hxx
+++ b/reportdesign/source/filter/xml/xmlReport.hxx
@@ -34,17 +34,17 @@ namespace rptxml
void operator =(const OXMLReport&) = delete;
public:
- OXMLReport( ORptFilter& rImport, sal_uInt16 nPrfx,
- const OUString& rLName,
- const css::uno::Reference< css::xml::sax::XAttributeList > & xAttrList
+ OXMLReport( ORptFilter& rImport,
+ const css::uno::Reference< css::xml::sax::XFastAttributeList > & xAttrList
,const css::uno::Reference< css::report::XReportDefinition >& _xComponent);
virtual ~OXMLReport() override;
- virtual SvXMLImportContextRef 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 startFastElement( sal_Int32 /*nElement*/,
+ const css::uno::Reference< css::xml::sax::XFastAttributeList >& ) override {}
+ virtual void SAL_CALL endFastElement(sal_Int32 nElement) override;
virtual void addMasterDetailPair(const ::std::pair< OUString,OUString >& _aPair) override;
diff --git a/reportdesign/source/filter/xml/xmlReportElement.cxx b/reportdesign/source/filter/xml/xmlReportElement.cxx
index c01ae393dd56..f3740970b84a 100644
--- a/reportdesign/source/filter/xml/xmlReportElement.cxx
+++ b/reportdesign/source/filter/xml/xmlReportElement.cxx
@@ -36,34 +36,29 @@ namespace rptxml
using namespace xml::sax;
OXMLReportElement::OXMLReportElement( ORptFilter& rImport,
- sal_uInt16 nPrfx, const OUString& rLName,
- const Reference< XAttributeList > & _xAttrList
+ const Reference< XFastAttributeList > & _xAttrList
,const Reference< XReportControlModel > & _xComponent) :
- SvXMLImportContext( rImport, nPrfx, rLName )
+ SvXMLImportContext( rImport )
,m_xComponent(_xComponent)
{
OSL_ENSURE(m_xComponent.is(),"Component is NULL!");
- const SvXMLNamespaceMap& rMap = rImport.GetNamespaceMap();
- const SvXMLTokenMap& rTokenMap = rImport.GetReportElementElemTokenMap();
static const OUString s_sTRUE = ::xmloff::token::GetXMLToken(XML_TRUE);
- const sal_Int16 nLength = (_xAttrList.is()) ? _xAttrList->getLength() : 0;
try
{
- for(sal_Int16 i = 0; i < nLength; ++i)
+ sax_fastparser::FastAttributeList *pAttribList =
+ sax_fastparser::FastAttributeList::castToFastAttributeList( _xAttrList );
+ for (auto &aIter : *pAttribList)
{
- OUString sLocalName;
- const OUString sAttrName = _xAttrList->getNameByIndex( i );
- const sal_uInt16 nPrefix = rMap.GetKeyByAttrName( sAttrName,&sLocalName );
- const OUString sValue = _xAttrList->getValueByIndex( i );
+ OUString sValue = aIter.toString();
- switch( rTokenMap.Get( nPrefix, sLocalName ) )
+ switch( aIter.getToken() )
{
- case XML_TOK_PRINT_WHEN_GROUP_CHANGE:
+ case XML_ELEMENT(REPORT, XML_PRINT_WHEN_GROUP_CHANGE):
m_xComponent->setPrintWhenGroupChange(s_sTRUE == sValue);
break;
- case XML_TOK_PRINT_REPEATED_VALUES:
+ case XML_ELEMENT(REPORT, XML_PRINT_REPEATED_VALUES):
m_xComponent->setPrintRepeatedValues(sValue == s_sTRUE);
break;
default:
@@ -82,38 +77,36 @@ OXMLReportElement::~OXMLReportElement()
{
}
-SvXMLImportContextRef OXMLReportElement::CreateChildContext(
- sal_uInt16 _nPrefix,
- const OUString& _rLocalName,
- const Reference< XAttributeList > & xAttrList )
+css::uno::Reference< css::xml::sax::XFastContextHandler > OXMLReportElement::createFastChildContext(
+ sal_Int32 nElement,
+ const css::uno::Reference< css::xml::sax::XFastAttributeList >& xAttrList )
{
- SvXMLImportContext *pContext = nullptr;
+ css::uno::Reference< css::xml::sax::XFastContextHandler > xContext;
ORptFilter& rImport = GetOwnImport();
- const SvXMLTokenMap& rTokenMap = rImport.GetReportElementElemTokenMap();
- switch( rTokenMap.Get( _nPrefix, _rLocalName ) )
+ switch( nElement )
{
- case XML_TOK_COMPONENT:
+ case XML_ELEMENT(REPORT, XML_REPORT_COMPONENT):
rImport.GetProgressBarHelper()->Increment( PROGRESS_BAR_STEP );
- pContext = new OXMLComponent( rImport, _nPrefix, _rLocalName,xAttrList,m_xComponent.get());
+ xContext = new OXMLComponent( rImport,xAttrList,m_xComponent.get());
break;
- case XML_TOK_REP_CONDITIONAL_PRINT_EXPRESSION:
+ case XML_ELEMENT(REPORT, XML_CONDITIONAL_PRINT_EXPRESSION):
rImport.GetProgressBarHelper()->Increment( PROGRESS_BAR_STEP );
- pContext = new OXMLCondPrtExpr( rImport, _nPrefix, _rLocalName,xAttrList,m_xComponent.get());
+ xContext = new OXMLCondPrtExpr( rImport,xAttrList,m_xComponent.get());
break;
- case XML_TOK_FORMATCONDITION:
+ case XML_ELEMENT(REPORT, XML_FORMAT_CONDITION):
{
uno::Reference< report::XFormatCondition > xNewCond = m_xComponent->createFormatCondition();
m_xComponent->insertByIndex(m_xComponent->getCount(),uno::makeAny(xNewCond));
rImport.GetProgressBarHelper()->Increment( PROGRESS_BAR_STEP );
- pContext = new OXMLFormatCondition( rImport, _nPrefix, _rLocalName,xAttrList,xNewCond);
+ xContext = new OXMLFormatCondition( rImport,xAttrList,xNewCond);
}
break;
default:
break;
}
- return pContext;
+ return xContext;
}
ORptFilter& OXMLReportElement::GetOwnImport()
diff --git a/reportdesign/source/filter/xml/xmlReportElement.hxx b/reportdesign/source/filter/xml/xmlReportElement.hxx
index a5d11ac73605..5f64dbe732e8 100644
--- a/reportdesign/source/filter/xml/xmlReportElement.hxx
+++ b/reportdesign/source/filter/xml/xmlReportElement.hxx
@@ -33,15 +33,13 @@ namespace rptxml
void operator =(const OXMLReportElement&) = delete;
public:
- OXMLReportElement( ORptFilter& rImport, sal_uInt16 nPrfx,
- const OUString& rLName,
- const css::uno::Reference< css::xml::sax::XAttributeList > & xAttrList
+ OXMLReportElement( ORptFilter& rImport,
+ const css::uno::Reference< css::xml::sax::XFastAttributeList > & xAttrList
,const css::uno::Reference< css::report::XReportControlModel >& _xComponent);
virtual ~OXMLReportElement() override;
- virtual SvXMLImportContextRef 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;
};
} // namespace rptxml
diff --git a/reportdesign/source/filter/xml/xmlReportElementBase.cxx b/reportdesign/source/filter/xml/xmlReportElementBase.cxx
index 0963b2732439..122395abc6a5 100644
--- a/reportdesign/source/filter/xml/xmlReportElementBase.cxx
+++ b/reportdesign/source/filter/xml/xmlReportElementBase.cxx
@@ -17,6 +17,7 @@
* the License at http://www.apache.org/licenses/LICENSE-2.0 .
*/
#include <xmloff/ProgressBarHelper.hxx>
+#include <xmloff/xmlnmspe.hxx>
#include "xmlReportElementBase.hxx"
#include "xmlfilter.hxx"
#include "xmlControlProperty.hxx"
@@ -32,11 +33,9 @@ namespace rptxml
using namespace ::com::sun::star::xml::sax;
OXMLReportElementBase::OXMLReportElementBase( ORptFilter& rImport
- ,sal_uInt16 nPrfx
- , const OUString& rLName
,const Reference< XReportComponent > & _xComponent
,OXMLTable* _pContainer) :
- SvXMLImportContext( rImport, nPrfx, rLName )
+ SvXMLImportContext( rImport )
,m_rImport(rImport)
,m_pContainer(_pContainer)
,m_xReportComponent(_xComponent)
@@ -48,47 +47,44 @@ OXMLReportElementBase::~OXMLReportElementBase()
{
}
-SvXMLImportContextRef OXMLReportElementBase::CreateChildContext(
- sal_uInt16 nPrefix,
- const OUString& rLocalName,
- const Reference< XAttributeList > & xAttrList )
+css::uno::Reference< css::xml::sax::XFastContextHandler > OXMLReportElementBase::createFastChildContext(
+ sal_Int32 nElement,
+ const Reference< XFastAttributeList > & xAttrList )
{
- SvXMLImportContextRef xContext = CreateChildContext_(nPrefix,rLocalName,xAttrList);
+ css::uno::Reference< css::xml::sax::XFastContextHandler > xContext = createFastChildContext_(nElement,xAttrList);
return xContext;
}
-SvXMLImportContextRef OXMLReportElementBase::CreateChildContext_(
- sal_uInt16 nPrefix,
- const OUString& rLocalName,
- const Reference< XAttributeList > & xAttrList )
+css::uno::Reference< css::xml::sax::XFastContextHandler > OXMLReportElementBase::createFastChildContext_(
+ sal_Int32 nElement,
+ const Reference< XFastAttributeList > & xAttrList )
{
- SvXMLImportContext *pContext = nullptr;
- const SvXMLTokenMap& rTokenMap = m_rImport.GetControlElemTokenMap();
+ css::uno::Reference< css::xml::sax::XFastContextHandler > xContext;
- switch( rTokenMap.Get( nPrefix, rLocalName ) )
+ switch( nElement )
{
- case XML_TOK_REPORT_ELEMENT:
+ case XML_ELEMENT(REPORT, XML_REPORT_ELEMENT):
{
uno::Reference<report::XReportControlModel> xReportModel(m_xReportComponent,uno::UNO_QUERY);
if ( xReportModel.is() )
{
m_rImport.GetProgressBarHelper()->Increment( PROGRESS_BAR_STEP );
- pContext = new OXMLReportElement( m_rImport, nPrefix, rLocalName,xAttrList,xReportModel);
+ xContext = new OXMLReportElement( m_rImport,xAttrList,xReportModel);
}
}
break;
- case XML_TOK_PROPERTIES:
+ case XML_ELEMENT(FORM, XML_PROPERTIES):
m_rImport.GetProgressBarHelper()->Increment( PROGRESS_BAR_STEP );
- pContext = new OXMLControlProperty( m_rImport, nPrefix, rLocalName,xAttrList,m_xReportComponent.get());
+ xContext = new OXMLControlProperty( m_rImport,xAttrList,m_xReportComponent.get());
break;
default:
break;
}
- return pContext;
+ return xContext;
}
-void OXMLReportElementBase::EndElement()
+void OXMLReportElementBase::endFastElement(sal_Int32 )
{
try
{
diff --git a/reportdesign/source/filter/xml/xmlReportElementBase.hxx b/reportdesign/source/filter/xml/xmlReportElementBase.hxx
index b8fc8361c9b1..ab60557e0b2a 100644
--- a/reportdesign/source/filter/xml/xmlReportElementBase.hxx
+++ b/reportdesign/source/filter/xml/xmlReportElementBase.hxx
@@ -46,23 +46,22 @@ namespace rptxml
OXMLTable* m_pContainer;
css::uno::Reference< css::report::XReportComponent > m_xReportComponent;
- virtual SvXMLImportContextRef CreateChildContext_( sal_uInt16 nPrefix,
- const OUString& rLocalName,
- const css::uno::Reference< css::xml::sax::XAttributeList > & xAttrList );
+ virtual css::uno::Reference< css::xml::sax::XFastContextHandler > createFastChildContext_( sal_Int32 nElement,
+ const css::uno::Reference< css::xml::sax::XFastAttributeList > & xAttrList );
public:
OXMLReportElementBase( ORptFilter& rImport
- ,sal_uInt16 nPrfx
- ,const OUString& rLName
,const css::uno::Reference< css::report::XReportComponent >& _xComponent
,OXMLTable* _pContainer);
virtual ~OXMLReportElementBase() override;
- virtual SvXMLImportContextRef CreateChildContext( sal_uInt16 nPrefix,
- const OUString& rLocalName,
- const css::uno::Reference< css::xml::sax::XAttributeList > & xAttrList ) override;
+ virtual void SAL_CALL startFastElement( sal_Int32 /*nElement*/,
+ const css::uno::Reference< css::xml::sax::XFastAttributeList >& ) 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;
+
+ virtual void SAL_CALL endFastElement(sal_Int32 nElement) override;
};
} // namespace rptxml
diff --git a/reportdesign/source/filter/xml/xmlSection.cxx b/reportdesign/source/filter/xml/xmlSection.cxx
index 0c5a647f8662..07646370ea29 100644
--- a/reportdesign/source/filter/xml/xmlSection.cxx
+++ b/reportdesign/source/filter/xml/xmlSection.cxx
@@ -50,39 +50,33 @@ namespace rptxml
OXMLSection::OXMLSection( ORptFilter& rImport,
- sal_uInt16 nPrfx, const OUString& _sLocalName,
- const uno::Reference< xml::sax::XAttributeList > & _xAttrList
+ const uno::Reference< xml::sax::XFastAttributeList > & _xAttrList
,const uno::Reference< report::XSection >& _xSection
,bool _bPageHeader)
-:SvXMLImportContext( rImport, nPrfx, _sLocalName )
+:SvXMLImportContext( rImport )
,m_xSection(_xSection)
{
- OSL_ENSURE(_xAttrList.is(),"Attribute list is NULL!");
- const SvXMLNamespaceMap& rMap = rImport.GetNamespaceMap();
- const SvXMLTokenMap& rTokenMap = rImport.GetSectionElemTokenMap();
-
- const sal_Int16 nLength = (m_xSection.is() && _xAttrList.is()) ? _xAttrList->getLength() : 0;
+ if (!m_xSection.is())
+ return;
static const OUString s_sTRUE = ::xmloff::token::GetXMLToken(XML_TRUE);
try
{
- for(sal_Int16 i = 0; i < nLength; ++i)
+ sax_fastparser::FastAttributeList *pAttribList =
+ sax_fastparser::FastAttributeList::castToFastAttributeList( _xAttrList );
+ for (auto &aIter : *pAttribList)
{
- OUString sLocalName;
- const OUString sAttrName = _xAttrList->getNameByIndex( i );
- const sal_uInt16 nPrefix = rMap.GetKeyByAttrName( sAttrName,&sLocalName );
- const OUString sValue = _xAttrList->getValueByIndex( i );
+ OUString sValue = aIter.toString();
- switch( rTokenMap.Get( nPrefix, sLocalName ) )
+ switch( aIter.getToken() )
{
-
- case XML_TOK_PAGE_PRINT_OPTION:
+ case XML_ELEMENT(REPORT, XML_PAGE_PRINT_OPTION):
if ( _bPageHeader )
m_xSection->getReportDefinition()->setPageHeaderOption(lcl_getReportPrintOption(sValue));
else
m_xSection->getReportDefinition()->setPageFooterOption(lcl_getReportPrintOption(sValue));
break;
- case XML_TOK_REPEAT_SECTION:
+ case XML_ELEMENT(REPORT, XML_REPEAT_SECTION):
m_xSection->setRepeatSection(sValue == s_sTRUE );
break;
@@ -101,25 +95,23 @@ OXMLSection::~OXMLSection()
{
}
-SvXMLImportContextRef OXMLSection::CreateChildContext(
- sal_uInt16 _nPrefix,
- const OUString& _rLocalName,
- const uno::Reference< xml::sax::XAttributeList > & xAttrList )
+css::uno::Reference< css::xml::sax::XFastContextHandler > OXMLSection::createFastChildContext(
+ sal_Int32 nElement,
+ const Reference< XFastAttributeList > & xAttrList )
{
- SvXMLImportContext *pContext = nullptr;
+ css::uno::Reference< css::xml::sax::XFastContextHandler > xContext;
ORptFilter& rImport = GetOwnImport();
- const SvXMLTokenMap& rTokenMap = rImport.GetSectionElemTokenMap();
- switch( rTokenMap.Get( _nPrefix, _rLocalName ) )
+ switch( nElement )
{
- case XML_TOK_TABLE:
- pContext = new OXMLTable( rImport, _nPrefix, _rLocalName, xAttrList, m_xSection);
+ case XML_ELEMENT(TABLE, XML_TABLE):
+ xContext = new OXMLTable( rImport, xAttrList, m_xSection);
break;
default:
break;
}
- return pContext;
+ return xContext;
}
ORptFilter& OXMLSection::GetOwnImport()
diff --git a/reportdesign/source/filter/xml/xmlSection.hxx b/reportdesign/source/filter/xml/xmlSection.hxx
index b677d3cb5cfb..26e8517232ff 100644
--- a/reportdesign/source/filter/xml/xmlSection.hxx
+++ b/reportdesign/source/filter/xml/xmlSection.hxx
@@ -37,16 +37,13 @@ namespace rptxml
public:
OXMLSection( ORptFilter& rImport
- ,sal_uInt16 nPrfx
- ,const OUString& rLName
- ,const css::uno::Reference< css::xml::sax::XAttributeList > & xAttrList
+ ,const css::uno::Reference< css::xml::sax::XFastAttributeList > & xAttrList
,const css::uno::Reference< css::report::XSection >& _xSection
,bool _bPageHeader = true);
virtual ~OXMLSection() override;
- virtual SvXMLImportContextRef 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;
};
} // namespace rptxml
diff --git a/reportdesign/source/filter/xml/xmlSubDocument.cxx b/reportdesign/source/filter/xml/xmlSubDocument.cxx
index ff97c749656b..7b09d5a1b6b7 100644
--- a/reportdesign/source/filter/xml/xmlSubDocument.cxx
+++ b/reportdesign/source/filter/xml/xmlSubDocument.cxx
@@ -36,13 +36,11 @@ namespace rptxml
using namespace ::com::sun::star::uno;
using namespace ::com::sun::star::xml::sax;
-OXMLSubDocument::OXMLSubDocument( ORptFilter& rImport,
- sal_uInt16 nPrfx
- ,const OUString& rLName
+OXMLSubDocument::OXMLSubDocument( ORptFilter& rImport
,const Reference< XReportComponent > & _xComponent
,OXMLTable* _pContainer
,OXMLCell* _pCellParent) :
- OXMLReportElementBase( rImport, nPrfx, rLName,_xComponent.get(),_pContainer)
+ OXMLReportElementBase( rImport,_xComponent.get(),_pContainer)
,m_xFake(_xComponent)
,m_pCellParent(_pCellParent)
,m_nCurrentCount(0)
@@ -55,31 +53,21 @@ OXMLSubDocument::~OXMLSubDocument()
{
}
-SvXMLImportContextRef OXMLSubDocument::CreateChildContext_(
- sal_uInt16 _nPrefix,
- const OUString& _rLocalName,
- const Reference< XAttributeList > & xAttrList )
+SvXMLImportContextRef OXMLSubDocument::CreateChildContext( sal_uInt16 nPrefix,
+ const OUString& rLocalName,
+ const css::uno::Reference< css::xml::sax::XAttributeList > & xAttrList )
{
- SvXMLImportContextRef xContext = OXMLReportElementBase::CreateChildContext_(_nPrefix,_rLocalName,xAttrList);
- if (xContext)
- return xContext;
+ SvXMLImportContextRef xContext;
const SvXMLTokenMap& rTokenMap = static_cast<ORptFilter&>(GetImport()).GetReportElemTokenMap();
-
- switch( rTokenMap.Get( _nPrefix, _rLocalName ) )
+ switch( rTokenMap.Get( nPrefix, rLocalName ) )
{
- case XML_TOK_MASTER_DETAIL_FIELDS:
- {
- GetImport().GetProgressBarHelper()->Increment( PROGRESS_BAR_STEP );
- xContext = new OXMLMasterFields(static_cast<ORptFilter&>(GetImport()), _nPrefix, _rLocalName,xAttrList ,this);
- }
- break;
case XML_TOK_SUB_FRAME:
{
if ( !m_bContainsShape )
m_nCurrentCount = m_pContainer->getSection()->getCount();
rtl::Reference< XMLShapeImportHelper > xShapeImportHelper = GetImport().GetShapeImport();
uno::Reference< drawing::XShapes > xShapes = m_pContainer->getSection().get();
- xContext = xShapeImportHelper->CreateGroupChildContext(GetImport(),_nPrefix,_rLocalName,xAttrList,xShapes);
+ xContext = xShapeImportHelper->CreateGroupChildContext(GetImport(),nPrefix,rLocalName,xAttrList,xShapes);
m_bContainsShape = true;
if (m_pCellParent)
{
@@ -88,11 +76,31 @@ SvXMLImportContextRef OXMLSubDocument::CreateChildContext_(
}
}
break;
+ }
+ return xContext;
+}
+
+css::uno::Reference< css::xml::sax::XFastContextHandler > OXMLSubDocument::createFastChildContext_(
+ sal_Int32 nElement,
+ const Reference< XFastAttributeList > & xAttrList )
+{
+ css::uno::Reference< css::xml::sax::XFastContextHandler > xContext = OXMLReportElementBase::createFastChildContext_(nElement,xAttrList);
+ if (xContext)
+ return xContext;
+
+ switch( nElement )
+ {
+ case XML_ELEMENT(REPORT, XML_MASTER_DETAIL_FIELDS):
+ {
+ GetImport().GetProgressBarHelper()->Increment( PROGRESS_BAR_STEP );
+ xContext = new OXMLMasterFields(static_cast<ORptFilter&>(GetImport()),xAttrList ,this);
+ }
+ break;
// FIXME: is it *intentional* that this is supported?
// ORptExport::exportContainer() can export this but the import
// used to be rather accidental previously
- case XML_TOK_SUB_BODY:
- xContext = new RptXMLDocumentBodyContext(GetImport(), _nPrefix, _rLocalName);
+ case XML_ELEMENT(OFFICE, XML_BODY):
+ xContext = new RptXMLDocumentBodyContext(GetImport());
break;
default:
break;
@@ -101,7 +109,7 @@ SvXMLImportContextRef OXMLSubDocument::CreateChildContext_(
return xContext;
}
-void OXMLSubDocument::EndElement()
+void OXMLSubDocument::endFastElement(sal_Int32 )
{
if ( m_bContainsShape )
{
diff --git a/reportdesign/source/filter/xml/xmlSubDocument.hxx b/reportdesign/source/filter/xml/xmlSubDocument.hxx
index 3c0a0d33c6d4..38a4007ea5f8 100644
--- a/reportdesign/source/filter/xml/xmlSubDocument.hxx
+++ b/reportdesign/source/filter/xml/xmlSubDocument.hxx
@@ -39,20 +39,21 @@ namespace rptxml
OXMLSubDocument(const OXMLSubDocument&) = delete;
void operator =(const OXMLSubDocument&) = delete;
- virtual SvXMLImportContextRef 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 > createFastChildContext_( sal_Int32 nElement,
+ const css::uno::Reference< css::xml::sax::XFastAttributeList > & xAttrList ) override;
public:
OXMLSubDocument( ORptFilter& rImport
- ,sal_uInt16 nPrfx
- ,const OUString& rLName
,const css::uno::Reference< css::report::XReportComponent >& _xComponent
,OXMLTable* _pContainer
,OXMLCell* _pCellParent);
virtual ~OXMLSubDocument() override;
- virtual void EndElement() override;
+ virtual SvXMLImportContextRef CreateChildContext( sal_uInt16 nPrefix,
+ const OUString& rLocalName,
+ const css::uno::Reference< css::xml::sax::XAttributeList > & xAttrList ) override;
+
+ virtual void SAL_CALL endFastElement(sal_Int32 nElement) override;
virtual void addMasterDetailPair(const ::std::pair< OUString,OUString >& _aPair) override;
};
diff --git a/reportdesign/source/filter/xml/xmlTable.cxx b/reportdesign/source/filter/xml/xmlTable.cxx
index 7bf8e57123d2..5c400a33512d 100644
--- a/reportdesign/source/filter/xml/xmlTable.cxx
+++ b/reportdesign/source/filter/xml/xmlTable.cxx
@@ -57,51 +57,46 @@ namespace rptxml
}
OXMLTable::OXMLTable( ORptFilter& rImport
- ,sal_uInt16 nPrfx
- ,const OUString& _sLocalName
- ,const Reference< XAttributeList > & _xAttrList
+ ,const Reference< XFastAttributeList > & _xAttrList
,const uno::Reference< report::XSection >& _xSection
)
-:SvXMLImportContext( rImport, nPrfx, _sLocalName )
+:SvXMLImportContext( rImport )
,m_xSection(_xSection)
,m_nColSpan(1)
,m_nRowSpan(0)
,m_nRowIndex(0)
,m_nColumnIndex(0)
{
- OSL_ENSURE(_xAttrList.is(),"Attribute list is NULL!");
- const SvXMLNamespaceMap& rMap = rImport.GetNamespaceMap();
- const SvXMLTokenMap& rTokenMap = rImport.GetSectionElemTokenMap();
- const sal_Int16 nLength = (m_xSection.is() && _xAttrList.is()) ? _xAttrList->getLength() : 0;
+ if (!m_xSection.is())
+ return;
static const OUString s_sTRUE = ::xmloff::token::GetXMLToken(XML_TRUE);
try
{
- for(sal_Int16 i = 0; i < nLength; ++i)
+ sax_fastparser::FastAttributeList *pAttribList =
+ sax_fastparser::FastAttributeList::castToFastAttributeList( _xAttrList );
+ for (auto &aIter : *pAttribList)
{
- OUString sLocalName;
- const OUString sAttrName = _xAttrList->getNameByIndex( i );
- const sal_uInt16 nPrefix = rMap.GetKeyByAttrName( sAttrName,&sLocalName );
- const OUString sValue = _xAttrList->getValueByIndex( i );
+ OUString sValue = aIter.toString();
- switch( rTokenMap.Get( nPrefix, sLocalName ) )
+ switch( aIter.getToken() )
{
- case XML_TOK_VISIBLE:
+ case XML_ELEMENT(REPORT, XML_VISIBLE):
m_xSection->setVisible(sValue == s_sTRUE);
break;
- case XML_TOK_FORCE_NEW_PAGE:
+ case XML_ELEMENT(REPORT, XML_FORCE_NEW_PAGE):
m_xSection->setForceNewPage(lcl_getForceNewPageOption(sValue));
break;
- case XML_TOK_FORCE_NEW_COLUMN:
+ case XML_ELEMENT(REPORT, XML_FORCE_NEW_COLUMN):
m_xSection->setNewRowOrCol(lcl_getForceNewPageOption(sValue));
break;
- case XML_TOK_KEEP_TOGETHER:
+ case XML_ELEMENT(REPORT, XML_KEEP_TOGETHER):
m_xSection->setKeepTogether(sValue == s_sTRUE);
break;
- case XML_TOK_SECTION_NAME:
+ case XML_ELEMENT(TABLE, XML_NAME):
m_xSection->setName(sValue);
break;
- case XML_TOK_SECT_STYLE_NAME:
+ case XML_ELEMENT(TABLE, XML_STYLE_NAME):
m_sStyleName = sValue;
break;
default:
@@ -119,38 +114,36 @@ OXMLTable::~OXMLTable()
{
}
-SvXMLImportContextRef OXMLTable::CreateChildContext(
- sal_uInt16 _nPrefix,
- const OUString& _rLocalName,
- const Reference< XAttributeList > & xAttrList )
+css::uno::Reference< css::xml::sax::XFastContextHandler > OXMLTable::createFastChildContext(
+ sal_Int32 nElement,
+ const Reference< XFastAttributeList > & xAttrList )
{
- SvXMLImportContext *pContext = nullptr;
+ css::uno::Reference< css::xml::sax::XFastContextHandler > xContext;
ORptFilter& rImport = GetOwnImport();
- const SvXMLTokenMap& rTokenMap = rImport.GetColumnTokenMap();
- switch( rTokenMap.Get( _nPrefix, _rLocalName ) )
+ switch( nElement )
{
- case XML_TOK_TABLE_COLUMNS:
- case XML_TOK_TABLE_ROWS:
- pContext = new OXMLRowColumn( rImport, _nPrefix, _rLocalName,xAttrList ,this);
+ case XML_ELEMENT(TABLE, XML_TABLE_COLUMNS):
+ case XML_ELEMENT(TABLE, XML_TABLE_ROWS):
+ xContext = new OXMLRowColumn( rImport,xAttrList ,this);
break;
- case XML_TOK_ROW:
+ case XML_ELEMENT(TABLE, XML_TABLE_ROW):
incrementRowIndex();
rImport.GetProgressBarHelper()->Increment( PROGRESS_BAR_STEP );
- pContext = new OXMLRowColumn( rImport, _nPrefix, _rLocalName,xAttrList,this);
+ xContext = new OXMLRowColumn( rImport,xAttrList,this);
break;
- case XML_TOK_COLUMN:
+ case XML_ELEMENT(TABLE, XML_TABLE_COLUMN):
rImport.GetProgressBarHelper()->Increment( PROGRESS_BAR_STEP );
- pContext = new OXMLRowColumn( rImport, _nPrefix, _rLocalName,xAttrList,this);
+ xContext = new OXMLRowColumn( rImport,xAttrList,this);
break;
- case XML_TOK_CONDITIONAL_PRINT_EXPRESSION:
- pContext = new OXMLCondPrtExpr( rImport, _nPrefix, _rLocalName,xAttrList,m_xSection.get());
+ case XML_ELEMENT(REPORT, XML_CONDITIONAL_PRINT_EXPRESSION):
+ xContext = new OXMLCondPrtExpr( rImport,xAttrList,m_xSection.get());
break;
default:
break;
}
- return pContext;
+ return xContext;
}
ORptFilter& OXMLTable::GetOwnImport()
@@ -158,7 +151,7 @@ ORptFilter& OXMLTable::GetOwnImport()
return static_cast<ORptFilter&>(GetImport());
}
-void OXMLTable::EndElement()
+void OXMLTable::endFastElement(sal_Int32 )
{
try
{
diff --git a/reportdesign/source/filter/xml/xmlTable.hxx b/reportdesign/source/filter/xml/xmlTable.hxx
index cf377ffd0323..508ad5087166 100644
--- a/reportdesign/source/filter/xml/xmlTable.hxx
+++ b/reportdesign/source/filter/xml/xmlTable.hxx
@@ -57,18 +57,15 @@ namespace rptxml
public:
OXMLTable( ORptFilter& rImport
- ,sal_uInt16 nPrfx
- ,const OUString& rLName
- ,const css::uno::Reference< css::xml::sax::XAttributeList > & xAttrList
+ ,const css::uno::Reference< css::xml::sax::XFastAttributeList > & xAttrList
,const css::uno::Reference< css::report::XSection >& _xSection
);
virtual ~OXMLTable() override;
- virtual SvXMLImportContextRef 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 addHeight(sal_Int32 _nHeight) { m_aHeight.push_back(_nHeight); }
void addAutoHeight(bool _bAutoHeight) { m_aAutoHeight.push_back(_bAutoHeight); }
diff --git a/reportdesign/source/filter/xml/xmlfilter.cxx b/reportdesign/source/filter/xml/xmlfilter.cxx
index 768a68753265..fcd130727dae 100644
--- a/reportdesign/source/filter/xml/xmlfilter.cxx
+++ b/reportdesign/source/filter/xml/xmlfilter.cxx
@@ -665,14 +665,12 @@ public:
}
-SvXMLImportContextRef RptXMLDocumentBodyContext::CreateChildContext(
- sal_uInt16 const nPrefix,
- const OUString& rLocalName,
- const uno::Reference<xml::sax::XAttributeList> & xAttrList)
+css::uno::Reference< css::xml::sax::XFastContextHandler > RptXMLDocumentBodyContext::createFastChildContext(
+ sal_Int32 nElement,
+ const uno::Reference<xml::sax::XFastAttributeList> & xAttrList)
{
ORptFilter & rImport(static_cast<ORptFilter&>(GetImport()));
- if ((XML_NAMESPACE_OFFICE == nPrefix || XML_NAMESPACE_OOO == nPrefix)
- && IsXMLToken(rLocalName, XML_REPORT))
+ if (nElement == XML_ELEMENT(OFFICE, XML_REPORT) || nElement == XML_ELEMENT(OOO, XML_REPORT))
{
rImport.GetProgressBarHelper()->Increment( PROGRESS_BAR_STEP );
const SvXMLStylesContext* pAutoStyles = rImport.GetAutoStyles();
@@ -684,7 +682,7 @@ SvXMLImportContextRef RptXMLDocumentBodyContext::CreateChildContext(
pAutoStyle->FillPropertySet(rImport.getReportDefinition().get());
}
}
- return new OXMLReport(rImport, nPrefix, rLocalName, xAttrList, rImport.getReportDefinition());
+ return new OXMLReport(rImport, xAttrList, rImport.getReportDefinition());
}
return nullptr;
}
@@ -703,8 +701,15 @@ public:
const css::uno::Reference< css::xml::sax::XFastAttributeList >& ) 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
+ sal_Int32 nElement, const css::uno::Reference< css::xml::sax::XFastAttributeList >& /*xAttrList*/ ) override
{
+ ORptFilter & rImport(static_cast<ORptFilter&>(GetImport()));
+ switch (nElement)
+ {
+ case XML_ELEMENT(OFFICE, XML_BODY):
+ return new RptXMLDocumentBodyContext(rImport);
+ break;
+ }
return nullptr;
}
@@ -726,9 +731,6 @@ public:
rImport.GetProgressBarHelper()->Increment( PROGRESS_BAR_STEP );
pContext = rImport.CreateFontDeclsContext(rLocalName, xAttrList);
break;
- case XML_TOK_CONTENT_BODY:
- pContext = new RptXMLDocumentBodyContext(rImport, nPrefix, rLocalName);
- break;
default:
break;
}
diff --git a/reportdesign/source/filter/xml/xmlfilter.hxx b/reportdesign/source/filter/xml/xmlfilter.hxx
index 041dda702c4e..6257832567fa 100644
--- a/reportdesign/source/filter/xml/xmlfilter.hxx
+++ b/reportdesign/source/filter/xml/xmlfilter.hxx
@@ -229,16 +229,16 @@ public:
class RptXMLDocumentBodyContext : public SvXMLImportContext
{
public:
- RptXMLDocumentBodyContext(SvXMLImport & rImport,
- sal_uInt16 const nPrefix,
- const OUString& rLocalName)
- : SvXMLImportContext(rImport, nPrefix, rLocalName)
+ RptXMLDocumentBodyContext(SvXMLImport & rImport)
+ : SvXMLImportContext(rImport)
{
}
- virtual SvXMLImportContextRef CreateChildContext(sal_uInt16 const nPrefix,
- const OUString& rLocalName,
- const css::uno::Reference<css::xml::sax::XAttributeList> & xAttrList) override;
+ virtual void SAL_CALL startFastElement( sal_Int32 /*nElement*/,
+ const css::uno::Reference< css::xml::sax::XFastAttributeList >& ) 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;
};
} // rptxml