dbaccess/source/filter/xml/xmlColumn.cxx | 44 +- dbaccess/source/filter/xml/xmlColumn.hxx | 8 dbaccess/source/filter/xml/xmlComponent.cxx | 33 -- dbaccess/source/filter/xml/xmlComponent.hxx | 6 dbaccess/source/filter/xml/xmlConnectionData.cxx | 28 - dbaccess/source/filter/xml/xmlConnectionData.hxx | 10 dbaccess/source/filter/xml/xmlConnectionResource.cxx | 84 ++--- dbaccess/source/filter/xml/xmlConnectionResource.hxx | 7 dbaccess/source/filter/xml/xmlDataSource.cxx | 265 ++++++++--------- dbaccess/source/filter/xml/xmlDataSource.hxx | 12 dbaccess/source/filter/xml/xmlDataSourceInfo.cxx | 47 +-- dbaccess/source/filter/xml/xmlDataSourceInfo.hxx | 9 dbaccess/source/filter/xml/xmlDataSourceSetting.cxx | 51 +-- dbaccess/source/filter/xml/xmlDataSourceSetting.hxx | 17 - dbaccess/source/filter/xml/xmlDataSourceSettings.cxx | 19 - dbaccess/source/filter/xml/xmlDataSourceSettings.hxx | 9 dbaccess/source/filter/xml/xmlDatabase.cxx | 38 +- dbaccess/source/filter/xml/xmlDatabase.hxx | 14 dbaccess/source/filter/xml/xmlDatabaseDescription.cxx | 22 - dbaccess/source/filter/xml/xmlDatabaseDescription.hxx | 10 dbaccess/source/filter/xml/xmlDocuments.cxx | 34 -- dbaccess/source/filter/xml/xmlDocuments.hxx | 11 dbaccess/source/filter/xml/xmlEnums.hxx | 126 -------- dbaccess/source/filter/xml/xmlFileBasedDatabase.cxx | 89 ++--- dbaccess/source/filter/xml/xmlFileBasedDatabase.hxx | 7 dbaccess/source/filter/xml/xmlHierarchyCollection.cxx | 52 +-- dbaccess/source/filter/xml/xmlHierarchyCollection.hxx | 13 dbaccess/source/filter/xml/xmlLogin.cxx | 113 +++---- dbaccess/source/filter/xml/xmlLogin.hxx | 7 dbaccess/source/filter/xml/xmlQuery.cxx | 44 +- dbaccess/source/filter/xml/xmlQuery.hxx | 11 dbaccess/source/filter/xml/xmlServerDatabase.cxx | 63 ++-- dbaccess/source/filter/xml/xmlServerDatabase.hxx | 7 dbaccess/source/filter/xml/xmlTable.cxx | 85 ++--- dbaccess/source/filter/xml/xmlTable.hxx | 15 - dbaccess/source/filter/xml/xmlTableFilterList.cxx | 34 +- dbaccess/source/filter/xml/xmlTableFilterList.hxx | 13 dbaccess/source/filter/xml/xmlTableFilterPattern.cxx | 8 dbaccess/source/filter/xml/xmlTableFilterPattern.hxx | 6 dbaccess/source/filter/xml/xmlfilter.cxx | 268 +----------------- dbaccess/source/filter/xml/xmlfilter.hxx | 18 - xmloff/source/core/xmlimp.cxx | 3 42 files changed, 655 insertions(+), 1105 deletions(-)
New commits: commit db6c54b2e93d1cc5c02e7db7b1841fabbc3ef950 Author: Noel Grandin <noel.gran...@collabora.co.uk> AuthorDate: Sun Jan 12 20:11:49 2020 +0200 Commit: Noel Grandin <noel.gran...@collabora.co.uk> CommitDate: Mon Jan 13 13:34:15 2020 +0100 convert dbaccess to FastParser APIs Noting that I use "& TOKEN_MASK" a lot because we can be dealing with either NAMESPACE_DB or NAMESPACE_DB_OASIS. Change-Id: I5ca0aac61e37dc903bb998a43b73b48df22e55fd Reviewed-on: https://gerrit.libreoffice.org/c/core/+/86655 Tested-by: Jenkins Reviewed-by: Noel Grandin <noel.gran...@collabora.co.uk> diff --git a/dbaccess/source/filter/xml/xmlColumn.cxx b/dbaccess/source/filter/xml/xmlColumn.cxx index fc90f490179c..91dc85582883 100644 --- a/dbaccess/source/filter/xml/xmlColumn.cxx +++ b/dbaccess/source/filter/xml/xmlColumn.cxx @@ -32,6 +32,7 @@ #include <com/sun/star/container/XNameContainer.hpp> #include <com/sun/star/container/XChild.hpp> #include "xmlStyleImport.hxx" +#include <sal/log.hxx> namespace dbaxml { @@ -42,59 +43,52 @@ namespace dbaxml using namespace ::com::sun::star::xml::sax; OXMLColumn::OXMLColumn( ODBFilter& rImport - ,sal_uInt16 nPrfx - ,const OUString& _sLocalName - ,const Reference< XAttributeList > & _xAttrList + ,const Reference< XFastAttributeList > & _xAttrList ,const Reference< XNameAccess >& _xParentContainer ,const Reference< XPropertySet >& _xTable ) : - SvXMLImportContext( rImport, nPrfx, _sLocalName ) + SvXMLImportContext( rImport ) ,m_xParentContainer(_xParentContainer) ,m_xTable(_xTable) ,m_bHidden(false) { - - OSL_ENSURE(_xAttrList.is(),"Attribute list is NULL!"); - const SvXMLNamespaceMap& rMap = rImport.GetNamespaceMap(); - const SvXMLTokenMap& rTokenMap = rImport.GetColumnElemTokenMap(); - - sal_Int16 nLength = (_xAttrList.is()) ? _xAttrList->getLength() : 0; OUString sType; - for(sal_Int16 i = 0; i < nLength; ++i) + sax_fastparser::FastAttributeList *pAttribList = + sax_fastparser::FastAttributeList::castToFastAttributeList( _xAttrList ); + for (auto &aIter : *pAttribList) { - OUString sLocalName; - OUString sAttrName = _xAttrList->getNameByIndex( i ); - sal_uInt16 nPrefix = rMap.GetKeyByAttrName( sAttrName,&sLocalName ); - OUString sValue = _xAttrList->getValueByIndex( i ); + OUString sValue = aIter.toString(); - switch( rTokenMap.Get( nPrefix, sLocalName ) ) + switch( aIter.getToken() & TOKEN_MASK ) { - case XML_TOK_COLUMN_NAME: + case XML_NAME: m_sName = sValue; break; - case XML_TOK_COLUMN_STYLE_NAME: + case XML_STYLE_NAME: m_sStyleName = sValue; break; - case XML_TOK_COLUMN_HELP_MESSAGE: + case XML_HELP_MESSAGE: m_sHelpMessage = sValue; break; - case XML_TOK_COLUMN_VISIBILITY: + case XML_VISIBILITY: m_bHidden = sValue != "visible"; break; - case XML_TOK_COLUMN_TYPE_NAME: + case XML_TYPE_NAME: sType = sValue; OSL_ENSURE(!sType.isEmpty(),"No type name set"); break; - case XML_TOK_COLUMN_DEFAULT_VALUE: + case XML_DEFAULT_VALUE: if ( !(sValue.isEmpty() || sType.isEmpty()) ) m_aDefaultValue <<= sValue; break; - case XML_TOK_COLUMN_VISIBLE: + case XML_VISIBLE: m_bHidden = sValue == "false"; break; - case XML_TOK_DEFAULT_CELL_STYLE_NAME: + case XML_DEFAULT_CELL_STYLE_NAME: m_sCellStyleName = sValue; break; + default: + SAL_WARN("dbaccess", "unknown attribute " << SvXMLImport::getNameFromToken(aIter.getToken()) << " value=" << aIter.toString()); } } } @@ -104,7 +98,7 @@ OXMLColumn::~OXMLColumn() } -void OXMLColumn::EndElement() +void OXMLColumn::endFastElement(sal_Int32 ) { Reference<XDataDescriptorFactory> xFac(m_xParentContainer,UNO_QUERY); if ( xFac.is() && !m_sName.isEmpty() ) diff --git a/dbaccess/source/filter/xml/xmlColumn.hxx b/dbaccess/source/filter/xml/xmlColumn.hxx index 7b319fa4766c..cc242a905fc2 100644 --- a/dbaccess/source/filter/xml/xmlColumn.hxx +++ b/dbaccess/source/filter/xml/xmlColumn.hxx @@ -42,14 +42,14 @@ namespace dbaxml public: OXMLColumn( ODBFilter& 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::container::XNameAccess >& _xParentContainer ,const css::uno::Reference< css::beans::XPropertySet >& _xTable ); virtual ~OXMLColumn() 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; }; } // namespace dbaxml diff --git a/dbaccess/source/filter/xml/xmlComponent.cxx b/dbaccess/source/filter/xml/xmlComponent.cxx index 7db3101b679d..dde08cd1fe23 100644 --- a/dbaccess/source/filter/xml/xmlComponent.cxx +++ b/dbaccess/source/filter/xml/xmlComponent.cxx @@ -39,44 +39,39 @@ namespace dbaxml using namespace ::com::sun::star::xml::sax; OXMLComponent::OXMLComponent( ODBFilter& rImport - ,sal_uInt16 nPrfx - ,const OUString& _sLocalName - ,const Reference< XAttributeList > & _xAttrList + ,const Reference< XFastAttributeList > & _xAttrList ,const Reference< XNameAccess >& _xParentContainer ,const OUString& _sComponentServiceName ) : - SvXMLImportContext( rImport, nPrfx, _sLocalName ) + SvXMLImportContext( rImport ) ,m_bAsTemplate(false) { - - OSL_ENSURE(_xAttrList.is(),"Attribute list is NULL!"); - const SvXMLNamespaceMap& rMap = rImport.GetNamespaceMap(); - const SvXMLTokenMap& rTokenMap = rImport.GetComponentElemTokenMap(); - - 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; - OUString sAttrName = _xAttrList->getNameByIndex( i ); - sal_uInt16 nPrefix = rMap.GetKeyByAttrName( sAttrName,&sLocalName ); - OUString sValue = _xAttrList->getValueByIndex( i ); + OUString sValue = aIter.toString(); - switch( rTokenMap.Get( nPrefix, sLocalName ) ) + switch( aIter.getToken() ) { - case XML_TOK_HREF: + case XML_ELEMENT(XLINK, XML_HREF): m_sHREF = sValue; break; - case XML_TOK_COMPONENT_NAME: + case XML_ELEMENT(DB, XML_NAME): + case XML_ELEMENT(DB_OASIS, XML_NAME): m_sName = sValue; // sanitize the name. Previously, we allowed to create forms/reports/queries which contain // a / in their name, which nowadays is forbidden. To not lose such objects if they're contained // in older files, we replace the slash with something less offending. m_sName = m_sName.replace( '/', '_' ); break; - case XML_TOK_AS_TEMPLATE: + case XML_ELEMENT(DB, XML_AS_TEMPLATE): + case XML_ELEMENT(DB_OASIS, XML_AS_TEMPLATE): m_bAsTemplate = sValue == s_sTRUE; break; + default: + SAL_WARN("dbaccess", "unknown attribute " << SvXMLImport::getNameFromToken(aIter.getToken()) << " value=" << aIter.toString()); } } if ( !m_sHREF.isEmpty() && !m_sName.isEmpty() && _xParentContainer.is() ) diff --git a/dbaccess/source/filter/xml/xmlComponent.hxx b/dbaccess/source/filter/xml/xmlComponent.hxx index cd78d501eca7..5cee3a2c381c 100644 --- a/dbaccess/source/filter/xml/xmlComponent.hxx +++ b/dbaccess/source/filter/xml/xmlComponent.hxx @@ -34,12 +34,12 @@ namespace dbaxml public: OXMLComponent( ODBFilter& 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::container::XNameAccess >& _xParentContainer ,const OUString& _sComponentServiceName ); + virtual void SAL_CALL startFastElement( sal_Int32 /*nElement*/, + const css::uno::Reference< css::xml::sax::XFastAttributeList >& ) override {} virtual ~OXMLComponent() override; }; } // namespace dbaxml diff --git a/dbaccess/source/filter/xml/xmlConnectionData.cxx b/dbaccess/source/filter/xml/xmlConnectionData.cxx index ddef531688c2..c99853543dfb 100644 --- a/dbaccess/source/filter/xml/xmlConnectionData.cxx +++ b/dbaccess/source/filter/xml/xmlConnectionData.cxx @@ -36,9 +36,8 @@ namespace dbaxml using namespace ::com::sun::star::uno; using namespace ::com::sun::star::xml::sax; -OXMLConnectionData::OXMLConnectionData( ODBFilter& rImport, - sal_uInt16 nPrfx, const OUString& _sLocalName) : - SvXMLImportContext( rImport, nPrfx, _sLocalName ) +OXMLConnectionData::OXMLConnectionData( ODBFilter& rImport) : + SvXMLImportContext( rImport ) ,m_bFoundOne(false) { rImport.setNewFormat(true); @@ -49,37 +48,34 @@ OXMLConnectionData::~OXMLConnectionData() } -SvXMLImportContextRef OXMLConnectionData::CreateChildContext( - sal_uInt16 nPrefix, - const OUString& rLocalName, - const Reference< XAttributeList > & xAttrList ) +css::uno::Reference< css::xml::sax::XFastContextHandler > OXMLConnectionData::createFastChildContext( + sal_Int32 nElement, const css::uno::Reference< css::xml::sax::XFastAttributeList >& xAttrList ) { SvXMLImportContext *pContext = nullptr; - const SvXMLTokenMap& rTokenMap = GetOwnImport().GetDataSourceElemTokenMap(); - switch( rTokenMap.Get( nPrefix, rLocalName ) ) + switch( nElement & TOKEN_MASK ) { - case XML_TOK_LOGIN: + case XML_LOGIN: GetOwnImport().GetProgressBarHelper()->Increment( PROGRESS_BAR_STEP ); - pContext = new OXMLLogin( GetOwnImport(), nPrefix, rLocalName,xAttrList ); + pContext = new OXMLLogin( GetOwnImport(), xAttrList ); break; - case XML_TOK_DATABASE_DESCRIPTION: + case XML_DATABASE_DESCRIPTION: if ( !m_bFoundOne ) { m_bFoundOne = true; GetOwnImport().GetProgressBarHelper()->Increment( PROGRESS_BAR_STEP ); - pContext = new OXMLDatabaseDescription( GetOwnImport(), nPrefix, rLocalName); + pContext = new OXMLDatabaseDescription( GetOwnImport() ); } break; - case XML_TOK_CONNECTION_RESOURCE: + case XML_CONNECTION_RESOURCE: if ( !m_bFoundOne ) { m_bFoundOne = true; GetOwnImport().GetProgressBarHelper()->Increment( PROGRESS_BAR_STEP ); - pContext = new OXMLConnectionResource( GetOwnImport(), nPrefix, rLocalName,xAttrList ); + pContext = new OXMLConnectionResource( GetOwnImport(), xAttrList ); } break; - case XML_TOK_COMPOUND_DATABASE: + case XML_COMPOUND_DATABASE: if ( !m_bFoundOne ) { m_bFoundOne = true; diff --git a/dbaccess/source/filter/xml/xmlConnectionData.hxx b/dbaccess/source/filter/xml/xmlConnectionData.hxx index 57d0c07ef9fa..20c552e42fec 100644 --- a/dbaccess/source/filter/xml/xmlConnectionData.hxx +++ b/dbaccess/source/filter/xml/xmlConnectionData.hxx @@ -33,13 +33,13 @@ namespace dbaxml ODBFilter& GetOwnImport(); public: - OXMLConnectionData( ODBFilter& rImport, sal_uInt16 nPrfx, - const OUString& rLName); + OXMLConnectionData( ODBFilter& rImport ); virtual ~OXMLConnectionData() 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 css::uno::Reference< css::xml::sax::XFastContextHandler > SAL_CALL createFastChildContext( + sal_Int32 nElement, const css::uno::Reference< css::xml::sax::XFastAttributeList >& AttrList ) override; }; } // namespace dbaxml diff --git a/dbaccess/source/filter/xml/xmlConnectionResource.cxx b/dbaccess/source/filter/xml/xmlConnectionResource.cxx index b1e7e36b6dd8..744345b4c7f9 100644 --- a/dbaccess/source/filter/xml/xmlConnectionResource.cxx +++ b/dbaccess/source/filter/xml/xmlConnectionResource.cxx @@ -34,57 +34,53 @@ namespace dbaxml using namespace ::com::sun::star::xml::sax; OXMLConnectionResource::OXMLConnectionResource( ODBFilter& rImport, - sal_uInt16 nPrfx, const OUString& _sLocalName, - const Reference< XAttributeList > & _xAttrList) : - SvXMLImportContext( rImport, nPrfx, _sLocalName ) + const Reference< XFastAttributeList > & _xAttrList) : + SvXMLImportContext( rImport ) { - - OSL_ENSURE(_xAttrList.is(),"Attribute list is NULL!"); - const SvXMLNamespaceMap& rMap = rImport.GetNamespaceMap(); - const SvXMLTokenMap& rTokenMap = rImport.GetComponentElemTokenMap(); - Reference<XPropertySet> xDataSource = rImport.getDataSource(); PropertyValue aProperty; - const sal_Int16 nLength = (xDataSource.is() && _xAttrList.is()) ? _xAttrList->getLength() : 0; - for(sal_Int16 i = 0; i < nLength; ++i) + if (xDataSource.is()) { - OUString sLocalName; - const OUString sAttrName = _xAttrList->getNameByIndex( i ); - const sal_uInt16 nPrefix = rMap.GetKeyByAttrName( sAttrName,&sLocalName ); - const OUString sValue = _xAttrList->getValueByIndex( i ); - - aProperty.Name.clear(); - aProperty.Value = Any(); - - switch( rTokenMap.Get( nPrefix, sLocalName ) ) + sax_fastparser::FastAttributeList *pAttribList = + sax_fastparser::FastAttributeList::castToFastAttributeList( _xAttrList ); + for (auto &aIter : *pAttribList) { - case XML_TOK_HREF: - try - { - xDataSource->setPropertyValue(PROPERTY_URL,makeAny(sValue)); - } - catch(const Exception&) - { - DBG_UNHANDLED_EXCEPTION("dbaccess"); - } - break; - case XML_TOK_TYPE: - aProperty.Name = PROPERTY_TYPE; - break; - case XML_TOK_SHOW: - aProperty.Name = "Show"; - break; - case XML_TOK_ACTUATE: - aProperty.Name = "Actuate"; - break; - } - if ( !aProperty.Name.isEmpty() ) - { - if ( !aProperty.Value.hasValue() ) - aProperty.Value <<= sValue; - rImport.addInfo(aProperty); + OUString sValue = aIter.toString(); + aProperty.Name.clear(); + aProperty.Value = Any(); + + switch( aIter.getToken() ) + { + case XML_ELEMENT(XLINK, XML_HREF): + try + { + xDataSource->setPropertyValue(PROPERTY_URL,makeAny(sValue)); + } + catch(const Exception&) + { + DBG_UNHANDLED_EXCEPTION("dbaccess"); + } + break; + case XML_ELEMENT(XLINK, XML_TYPE): + aProperty.Name = PROPERTY_TYPE; + break; + case XML_ELEMENT(XLINK, XML_SHOW): + aProperty.Name = "Show"; + break; + case XML_ELEMENT(XLINK, XML_ACTUATE): + aProperty.Name = "Actuate"; + break; + default: + SAL_WARN("dbaccess", "unknown attribute " << SvXMLImport::getNameFromToken(aIter.getToken()) << " value=" << aIter.toString()); + } + if ( !aProperty.Name.isEmpty() ) + { + if ( !aProperty.Value.hasValue() ) + aProperty.Value <<= sValue; + rImport.addInfo(aProperty); + } } } } diff --git a/dbaccess/source/filter/xml/xmlConnectionResource.hxx b/dbaccess/source/filter/xml/xmlConnectionResource.hxx index d5effa9e65fd..7b2bb478f0c4 100644 --- a/dbaccess/source/filter/xml/xmlConnectionResource.hxx +++ b/dbaccess/source/filter/xml/xmlConnectionResource.hxx @@ -30,9 +30,10 @@ namespace dbaxml { public: - OXMLConnectionResource( ODBFilter& rImport, sal_uInt16 nPrfx, - const OUString& rLName, - const css::uno::Reference< css::xml::sax::XAttributeList > & xAttrList); + OXMLConnectionResource( ODBFilter& rImport, + const css::uno::Reference< css::xml::sax::XFastAttributeList >& xAttrList ); + virtual void SAL_CALL startFastElement( sal_Int32 /*nElement*/, + const css::uno::Reference< css::xml::sax::XFastAttributeList >& ) override {} virtual ~OXMLConnectionResource() override; }; } // namespace dbaxml diff --git a/dbaccess/source/filter/xml/xmlDataSource.cxx b/dbaccess/source/filter/xml/xmlDataSource.cxx index aad160ee9bae..6044ed9d6a34 100644 --- a/dbaccess/source/filter/xml/xmlDataSource.cxx +++ b/dbaccess/source/filter/xml/xmlDataSource.cxx @@ -41,15 +41,11 @@ namespace dbaxml using namespace ::com::sun::star::xml::sax; OXMLDataSource::OXMLDataSource( ODBFilter& rImport, - sal_uInt16 nPrfx, const OUString& _sLocalName, - const Reference< XAttributeList > & _xAttrList, const UsedFor _eUsedFor ) : - SvXMLImportContext( rImport, nPrfx, _sLocalName ) + const css::uno::Reference< css::xml::sax::XFastAttributeList >& _xAttrList, + const UsedFor _eUsedFor ) : + SvXMLImportContext( rImport ) { - OSL_ENSURE(_xAttrList.is(),"Attribute list is NULL!"); - const SvXMLNamespaceMap& rMap = rImport.GetNamespaceMap(); - const SvXMLTokenMap& rTokenMap = rImport.GetDataSourceElemTokenMap(); - Reference<XPropertySet> xDataSource = rImport.getDataSource(); PropertyValue aProperty; @@ -58,112 +54,115 @@ OXMLDataSource::OXMLDataSource( ODBFilter& rImport, bool bFoundAppendTableAliasName = false; bool bFoundSuppressVersionColumns = false; - const sal_Int16 nLength = (xDataSource.is() && _xAttrList.is()) ? _xAttrList->getLength() : 0; static const OUString s_sTRUE = ::xmloff::token::GetXMLToken(XML_TRUE); - for(sal_Int16 i = 0; i < nLength; ++i) + if (xDataSource.is()) { - OUString sLocalName; - OUString sAttrName = _xAttrList->getNameByIndex( i ); - sal_uInt16 nPrefix = rMap.GetKeyByAttrName( sAttrName,&sLocalName ); - OUString sValue = _xAttrList->getValueByIndex( i ); + sax_fastparser::FastAttributeList *pAttribList = + sax_fastparser::FastAttributeList::castToFastAttributeList( _xAttrList ); + for (auto &aIter : *pAttribList) + { + OUString sValue = aIter.toString(); - aProperty.Name.clear(); - aProperty.Value = Any(); + aProperty.Name.clear(); + aProperty.Value = Any(); - switch( rTokenMap.Get( nPrefix, sLocalName ) ) - { - case XML_TOK_CONNECTION_RESOURCE: - try - { - xDataSource->setPropertyValue(PROPERTY_URL,makeAny(sValue)); - } - catch(const Exception&) - { - DBG_UNHANDLED_EXCEPTION("dbaccess"); - } - break; - case XML_TOK_SUPPRESS_VERSION_COLUMNS: - try - { - xDataSource->setPropertyValue(PROPERTY_SUPPRESSVERSIONCL,makeAny(sValue == s_sTRUE)); - bFoundSuppressVersionColumns = true; - } - catch(const Exception&) - { - DBG_UNHANDLED_EXCEPTION("dbaccess"); - } - break; - case XML_TOK_JAVA_DRIVER_CLASS: - aProperty.Name = INFO_JDBCDRIVERCLASS; - break; - case XML_TOK_EXTENSION: - aProperty.Name = INFO_TEXTFILEEXTENSION; - break; - case XML_TOK_IS_FIRST_ROW_HEADER_LINE: - aProperty.Name = INFO_TEXTFILEHEADER; - aProperty.Value <<= (sValue == s_sTRUE); - break; - case XML_TOK_SHOW_DELETED: - aProperty.Name = INFO_SHOWDELETEDROWS; - aProperty.Value <<= (sValue == s_sTRUE); - break; - case XML_TOK_IS_TABLE_NAME_LENGTH_LIMITED: - aProperty.Name = INFO_ALLOWLONGTABLENAMES; - aProperty.Value <<= (sValue == s_sTRUE); - bFoundTableNameLengthLimited = true; - break; - case XML_TOK_SYSTEM_DRIVER_SETTINGS: - aProperty.Name = INFO_ADDITIONALOPTIONS; - break; - case XML_TOK_ENABLE_SQL92_CHECK: - aProperty.Name = PROPERTY_ENABLESQL92CHECK; - aProperty.Value <<= (sValue == s_sTRUE); - break; - case XML_TOK_APPEND_TABLE_ALIAS_NAME: - aProperty.Name = INFO_APPEND_TABLE_ALIAS; - aProperty.Value <<= (sValue == s_sTRUE); - bFoundAppendTableAliasName = true; - break; - case XML_TOK_PARAMETER_NAME_SUBSTITUTION: - aProperty.Name = INFO_PARAMETERNAMESUBST; - aProperty.Value <<= (sValue == s_sTRUE); - bFoundParamNameSubstitution = true; - break; - case XML_TOK_IGNORE_DRIVER_PRIVILEGES: - aProperty.Name = INFO_IGNOREDRIVER_PRIV; - aProperty.Value <<= (sValue == s_sTRUE); - break; - case XML_TOK_BOOLEAN_COMPARISON_MODE: - aProperty.Name = PROPERTY_BOOLEANCOMPARISONMODE; - if ( sValue == "equal-integer" ) - aProperty.Value <<= sal_Int32(0); - else if ( sValue == "is-boolean" ) - aProperty.Value <<= sal_Int32(1); - else if ( sValue == "equal-boolean" ) - aProperty.Value <<= sal_Int32(2); - else if ( sValue == "equal-use-only-zero" ) - aProperty.Value <<= sal_Int32(3); - break; - case XML_TOK_USE_CATALOG: - aProperty.Name = INFO_USECATALOG; - aProperty.Value <<= (sValue == s_sTRUE); - break; - case XML_TOK_BASE_DN: - aProperty.Name = INFO_CONN_LDAP_BASEDN; - break; - case XML_TOK_MAX_ROW_COUNT: - aProperty.Name = INFO_CONN_LDAP_ROWCOUNT; - aProperty.Value <<= sValue.toInt32(); - break; - case XML_TOK_JAVA_CLASSPATH: - aProperty.Name = "JavaDriverClassPath"; - break; - } - if ( !aProperty.Name.isEmpty() ) - { - if ( !aProperty.Value.hasValue() ) - aProperty.Value <<= sValue; - rImport.addInfo(aProperty); + switch( aIter.getToken() & TOKEN_MASK ) + { + case XML_CONNECTION_RESOURCE: + try + { + xDataSource->setPropertyValue(PROPERTY_URL,makeAny(sValue)); + } + catch(const Exception&) + { + DBG_UNHANDLED_EXCEPTION("dbaccess"); + } + break; + case XML_SUPPRESS_VERSION_COLUMNS: + try + { + xDataSource->setPropertyValue(PROPERTY_SUPPRESSVERSIONCL,makeAny(sValue == s_sTRUE)); + bFoundSuppressVersionColumns = true; + } + catch(const Exception&) + { + DBG_UNHANDLED_EXCEPTION("dbaccess"); + } + break; + case XML_JAVA_DRIVER_CLASS: + aProperty.Name = INFO_JDBCDRIVERCLASS; + break; + case XML_EXTENSION: + aProperty.Name = INFO_TEXTFILEEXTENSION; + break; + case XML_IS_FIRST_ROW_HEADER_LINE: + aProperty.Name = INFO_TEXTFILEHEADER; + aProperty.Value <<= (sValue == s_sTRUE); + break; + case XML_SHOW_DELETED: + aProperty.Name = INFO_SHOWDELETEDROWS; + aProperty.Value <<= (sValue == s_sTRUE); + break; + case XML_IS_TABLE_NAME_LENGTH_LIMITED: + aProperty.Name = INFO_ALLOWLONGTABLENAMES; + aProperty.Value <<= (sValue == s_sTRUE); + bFoundTableNameLengthLimited = true; + break; + case XML_SYSTEM_DRIVER_SETTINGS: + aProperty.Name = INFO_ADDITIONALOPTIONS; + break; + case XML_ENABLE_SQL92_CHECK: + aProperty.Name = PROPERTY_ENABLESQL92CHECK; + aProperty.Value <<= (sValue == s_sTRUE); + break; + case XML_APPEND_TABLE_ALIAS_NAME: + aProperty.Name = INFO_APPEND_TABLE_ALIAS; + aProperty.Value <<= (sValue == s_sTRUE); + bFoundAppendTableAliasName = true; + break; + case XML_PARAMETER_NAME_SUBSTITUTION: + aProperty.Name = INFO_PARAMETERNAMESUBST; + aProperty.Value <<= (sValue == s_sTRUE); + bFoundParamNameSubstitution = true; + break; + case XML_IGNORE_DRIVER_PRIVILEGES: + aProperty.Name = INFO_IGNOREDRIVER_PRIV; + aProperty.Value <<= (sValue == s_sTRUE); + break; + case XML_BOOLEAN_COMPARISON_MODE: + aProperty.Name = PROPERTY_BOOLEANCOMPARISONMODE; + if ( sValue == "equal-integer" ) + aProperty.Value <<= sal_Int32(0); + else if ( sValue == "is-boolean" ) + aProperty.Value <<= sal_Int32(1); + else if ( sValue == "equal-boolean" ) + aProperty.Value <<= sal_Int32(2); + else if ( sValue == "equal-use-only-zero" ) + aProperty.Value <<= sal_Int32(3); + break; + case XML_USE_CATALOG: + aProperty.Name = INFO_USECATALOG; + aProperty.Value <<= (sValue == s_sTRUE); + break; + case XML_BASE_DN: + aProperty.Name = INFO_CONN_LDAP_BASEDN; + break; + case XML_MAX_ROW_COUNT: + aProperty.Name = INFO_CONN_LDAP_ROWCOUNT; + aProperty.Value <<= sValue.toInt32(); + break; + case XML_JAVA_CLASSPATH: + aProperty.Name = "JavaDriverClassPath"; + break; + default: + SAL_WARN("dbaccess", "unknown attribute " << SvXMLImport::getNameFromToken(aIter.getToken()) << " value=" << aIter.toString()); + } + if ( !aProperty.Name.isEmpty() ) + { + if ( !aProperty.Value.hasValue() ) + aProperty.Value <<= sValue; + rImport.addInfo(aProperty); + } } } if ( rImport.isNewFormat() ) @@ -205,50 +204,48 @@ OXMLDataSource::~OXMLDataSource() } -SvXMLImportContextRef OXMLDataSource::CreateChildContext( - sal_uInt16 nPrefix, - const OUString& rLocalName, - const Reference< XAttributeList > & xAttrList ) +css::uno::Reference< css::xml::sax::XFastContextHandler > OXMLDataSource::createFastChildContext( + sal_Int32 nElement, const css::uno::Reference< css::xml::sax::XFastAttributeList >& xAttrList ) { SvXMLImportContext *pContext = nullptr; - const SvXMLTokenMap& rTokenMap = GetOwnImport().GetDataSourceElemTokenMap(); - const sal_uInt16 nToken = rTokenMap.Get( nPrefix, rLocalName ); - switch( nToken ) + switch( nElement & TOKEN_MASK ) { - case XML_TOK_LOGIN: + case XML_LOGIN: GetOwnImport().GetProgressBarHelper()->Increment( PROGRESS_BAR_STEP ); - pContext = new OXMLLogin( GetOwnImport(), nPrefix, rLocalName,xAttrList ); + pContext = new OXMLLogin( GetOwnImport(), xAttrList ); break; - case XML_TOK_TABLE_FILTER: - case XML_TOK_TABLE_TYPE_FILTER: + case XML_TABLE_FILTER: + case XML_TABLE_TYPE_FILTER: GetOwnImport().GetProgressBarHelper()->Increment( PROGRESS_BAR_STEP ); - pContext = new OXMLTableFilterList( GetImport(), nPrefix, rLocalName ); + pContext = new OXMLTableFilterList( GetImport() ); break; - case XML_TOK_AUTO_INCREMENT: - case XML_TOK_DELIMITER: - case XML_TOK_FONT_CHARSET: - case XML_TOK_CHARACTER_SET: + case XML_AUTO_INCREMENT: + case XML_DELIMITER: + case XML_FONT_CHARSET: + case XML_CHARACTER_SET: GetOwnImport().GetProgressBarHelper()->Increment( PROGRESS_BAR_STEP ); - pContext = new OXMLDataSourceInfo( GetOwnImport(), nPrefix, rLocalName,xAttrList,nToken); + pContext = new OXMLDataSourceInfo( GetOwnImport(), nElement, xAttrList ); break; - case XML_TOK_DATA_SOURCE_SETTINGS: + case XML_DATA_SOURCE_SETTINGS: GetOwnImport().GetProgressBarHelper()->Increment( PROGRESS_BAR_STEP ); - pContext = new OXMLDataSourceSettings( GetOwnImport(), nPrefix, rLocalName); + pContext = new OXMLDataSourceSettings( GetOwnImport() ); break; - case XML_TOK_CONNECTION_DATA: + case XML_CONNECTION_DATA: GetOwnImport().GetProgressBarHelper()->Increment( PROGRESS_BAR_STEP ); - pContext = new OXMLConnectionData( GetOwnImport(), nPrefix, rLocalName); + pContext = new OXMLConnectionData( GetOwnImport() ); break; - case XML_TOK_DRIVER_SETTINGS: + case XML_DRIVER_SETTINGS: GetOwnImport().GetProgressBarHelper()->Increment( PROGRESS_BAR_STEP ); - pContext = new OXMLDataSource( GetOwnImport(), nPrefix, rLocalName, xAttrList, OXMLDataSource::eDriverSettings ); + pContext = new OXMLDataSource( GetOwnImport(), xAttrList, OXMLDataSource::eDriverSettings ); break; - case XML_TOK_APPLICATION_CONNECTION_SETTINGS: + case XML_APPLICATION_CONNECTION_SETTINGS: GetOwnImport().GetProgressBarHelper()->Increment( PROGRESS_BAR_STEP ); - pContext = new OXMLDataSource( GetOwnImport(), nPrefix, rLocalName, xAttrList, OXMLDataSource::eAppSettings ); + pContext = new OXMLDataSource( GetOwnImport(), xAttrList, OXMLDataSource::eAppSettings ); break; + default: + SAL_WARN("dbaccess", "unknown element " << nElement); } return pContext; diff --git a/dbaccess/source/filter/xml/xmlDataSource.hxx b/dbaccess/source/filter/xml/xmlDataSource.hxx index f78b408c5f2e..4b0ba10c900d 100644 --- a/dbaccess/source/filter/xml/xmlDataSource.hxx +++ b/dbaccess/source/filter/xml/xmlDataSource.hxx @@ -37,15 +37,15 @@ namespace dbaxml eAppSettings }; - OXMLDataSource( ODBFilter& rImport, sal_uInt16 nPrfx, - const OUString& rLName, - const css::uno::Reference< css::xml::sax::XAttributeList > & xAttrList, + OXMLDataSource( ODBFilter& rImport, + const css::uno::Reference< css::xml::sax::XFastAttributeList >& _xAttrList, const UsedFor _eUsedFor ); virtual ~OXMLDataSource() 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 css::uno::Reference< css::xml::sax::XFastContextHandler > SAL_CALL createFastChildContext( + sal_Int32 nElement, const css::uno::Reference< css::xml::sax::XFastAttributeList >& AttrList ) override; }; } // namespace dbaxml diff --git a/dbaccess/source/filter/xml/xmlDataSourceInfo.cxx b/dbaccess/source/filter/xml/xmlDataSourceInfo.cxx index 5cf4ee184ed5..75e50335dba1 100644 --- a/dbaccess/source/filter/xml/xmlDataSourceInfo.cxx +++ b/dbaccess/source/filter/xml/xmlDataSourceInfo.cxx @@ -28,6 +28,7 @@ #include <strings.hxx> #include <com/sun/star/beans/PropertyValue.hpp> #include <vector> +#include <sal/log.hxx> namespace dbaxml { @@ -35,59 +36,51 @@ namespace dbaxml using namespace ::com::sun::star::xml::sax; OXMLDataSourceInfo::OXMLDataSourceInfo( ODBFilter& rImport - ,sal_uInt16 nPrfx - ,const OUString& _sLocalName - ,const Reference< XAttributeList > & _xAttrList - ,const sal_uInt16 _nToken) : - SvXMLImportContext( rImport, nPrfx, _sLocalName ) + ,sal_Int32 nElement + ,const Reference< XFastAttributeList > & _xAttrList) : + SvXMLImportContext( rImport ) { - - OSL_ENSURE(_xAttrList.is(),"Attribute list is NULL!"); - const SvXMLNamespaceMap& rMap = rImport.GetNamespaceMap(); - const SvXMLTokenMap& rTokenMap = rImport.GetDataSourceInfoElemTokenMap(); - PropertyValue aProperty; - sal_Int16 nLength = (_xAttrList.is()) ? _xAttrList->getLength() : 0; bool bAutoEnabled = false; bool bFoundField = false,bFoundThousand = false, bFoundCharset = false; - for(sal_Int16 i = 0; i < nLength; ++i) + sax_fastparser::FastAttributeList *pAttribList = + sax_fastparser::FastAttributeList::castToFastAttributeList( _xAttrList ); + for (auto &aIter : *pAttribList) { - OUString sLocalName; - OUString sAttrName = _xAttrList->getNameByIndex( i ); - sal_uInt16 nPrefix = rMap.GetKeyByAttrName( sAttrName,&sLocalName ); - OUString sValue = _xAttrList->getValueByIndex( i ); + OUString sValue = aIter.toString(); aProperty.Name.clear(); - sal_uInt16 nToken = rTokenMap.Get( nPrefix, sLocalName ); - switch( nToken ) + switch( aIter.getToken() & TOKEN_MASK ) { - case XML_TOK_ADDITIONAL_COLUMN_STATEMENT: + case XML_ADDITIONAL_COLUMN_STATEMENT: aProperty.Name = PROPERTY_AUTOINCREMENTCREATION; bAutoEnabled = true; break; - case XML_TOK_ROW_RETRIEVING_STATEMENT: + case XML_ROW_RETRIEVING_STATEMENT: aProperty.Name = INFO_AUTORETRIEVEVALUE; bAutoEnabled = true; break; - case XML_TOK_STRING: + case XML_STRING: aProperty.Name = INFO_TEXTDELIMITER; break; - case XML_TOK_FIELD: + case XML_FIELD: aProperty.Name = INFO_FIELDDELIMITER; bFoundField = true; break; - case XML_TOK_DECIMAL: + case XML_DECIMAL: aProperty.Name = INFO_DECIMALDELIMITER; break; - case XML_TOK_THOUSAND: + case XML_THOUSAND: aProperty.Name = INFO_THOUSANDSDELIMITER; bFoundThousand = true; break; - case XML_TOK_ENCODING: + case XML_ENCODING: aProperty.Name = INFO_CHARSET; bFoundCharset = true; break; + default: + SAL_WARN("dbaccess", "unknown attribute " << SvXMLImport::getNameFromToken(aIter.getToken()) << " value=" << aIter.toString()); } if ( !aProperty.Name.isEmpty() ) { @@ -103,7 +96,7 @@ OXMLDataSourceInfo::OXMLDataSourceInfo( ODBFilter& rImport } if ( rImport.isNewFormat() ) { - if ( XML_TOK_DELIMITER == _nToken ) + if ( (nElement & TOKEN_MASK) == XML_DELIMITER ) { if ( !bFoundField ) { @@ -118,7 +111,7 @@ OXMLDataSourceInfo::OXMLDataSourceInfo( ODBFilter& rImport rImport.addInfo(aProperty); } } - if ( XML_TOK_FONT_CHARSET == _nToken && !bFoundCharset ) + if ( (nElement & TOKEN_MASK) == XML_FONT_CHARSET && !bFoundCharset ) { aProperty.Name = INFO_CHARSET; aProperty.Value <<= OUString("utf8"); diff --git a/dbaccess/source/filter/xml/xmlDataSourceInfo.hxx b/dbaccess/source/filter/xml/xmlDataSourceInfo.hxx index 1d76aca40017..b0f617a53dc8 100644 --- a/dbaccess/source/filter/xml/xmlDataSourceInfo.hxx +++ b/dbaccess/source/filter/xml/xmlDataSourceInfo.hxx @@ -28,10 +28,11 @@ namespace dbaxml { public: - OXMLDataSourceInfo( ODBFilter& rImport, sal_uInt16 nPrfx, - const OUString& rLName, - const css::uno::Reference< css::xml::sax::XAttributeList > & xAttrList - ,const sal_uInt16 _nToken); + OXMLDataSourceInfo( ODBFilter& rImport, + sal_Int32 nElement, + const css::uno::Reference< css::xml::sax::XFastAttributeList > & _xAttrList); + virtual void SAL_CALL startFastElement( sal_Int32 /*nElement*/, + const css::uno::Reference< css::xml::sax::XFastAttributeList >& ) override {} virtual ~OXMLDataSourceInfo() override; }; } // namespace dbaxml diff --git a/dbaccess/source/filter/xml/xmlDataSourceSetting.cxx b/dbaccess/source/filter/xml/xmlDataSourceSetting.cxx index a874f14bdffb..bd0506401f14 100644 --- a/dbaccess/source/filter/xml/xmlDataSourceSetting.cxx +++ b/dbaccess/source/filter/xml/xmlDataSourceSetting.cxx @@ -40,35 +40,27 @@ namespace dbaxml using namespace ::com::sun::star::xml::sax; OXMLDataSourceSetting::OXMLDataSourceSetting( ODBFilter& rImport - ,sal_uInt16 nPrfx - ,const OUString& _sLocalName - ,const Reference< XAttributeList > & _xAttrList + ,const Reference< XFastAttributeList > & _xAttrList ,OXMLDataSourceSetting* _pContainer) : - SvXMLImportContext( rImport, nPrfx, _sLocalName ) + SvXMLImportContext( rImport ) ,m_pContainer(_pContainer) ,m_bIsList(false) { m_aPropType = cppu::UnoType<void>::get(); - OSL_ENSURE(_xAttrList.is(),"Attribute list is NULL!"); - const SvXMLNamespaceMap& rMap = rImport.GetNamespaceMap(); - const SvXMLTokenMap& rTokenMap = rImport.GetDataSourceInfoElemTokenMap(); - - 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; - OUString sAttrName = _xAttrList->getNameByIndex( i ); - sal_uInt16 nPrefix = rMap.GetKeyByAttrName( sAttrName,&sLocalName ); - OUString sValue = _xAttrList->getValueByIndex( i ); + OUString sValue = aIter.toString(); - switch( rTokenMap.Get( nPrefix, sLocalName ) ) + switch( aIter.getToken() & TOKEN_MASK ) { - case XML_TOK_DATA_SOURCE_SETTING_IS_LIST: + case XML_DATA_SOURCE_SETTING_IS_LIST: m_bIsList = sValue == "true"; break; - case XML_TOK_DATA_SOURCE_SETTING_TYPE: + case XML_DATA_SOURCE_SETTING_TYPE: { // needs to be translated into a css::uno::Type static std::map< OUString, css::uno::Type > s_aTypeNameMap = [&]() @@ -91,9 +83,11 @@ OXMLDataSourceSetting::OXMLDataSourceSetting( ODBFilter& rImport m_aPropType = aTypePos->second; } break; - case XML_TOK_DATA_SOURCE_SETTING_NAME: + case XML_DATA_SOURCE_SETTING_NAME: m_aSetting.Name = sValue; break; + default: + SAL_WARN("dbaccess", "unknown attribute " << SvXMLImport::getNameFromToken(aIter.getToken()) << " value=" << aIter.toString()); } } @@ -103,30 +97,27 @@ OXMLDataSourceSetting::~OXMLDataSourceSetting() { } -SvXMLImportContextRef OXMLDataSourceSetting::CreateChildContext( - sal_uInt16 nPrefix, - const OUString& rLocalName, - const Reference< XAttributeList > & xAttrList ) +css::uno::Reference< css::xml::sax::XFastContextHandler > OXMLDataSourceSetting::createFastChildContext( + sal_Int32 nElement, const css::uno::Reference< css::xml::sax::XFastAttributeList >& xAttrList ) { SvXMLImportContext *pContext = nullptr; - const SvXMLTokenMap& rTokenMap = GetOwnImport().GetDataSourceInfoElemTokenMap(); - switch( rTokenMap.Get( nPrefix, rLocalName ) ) + switch( nElement & TOKEN_MASK ) { - case XML_TOK_DATA_SOURCE_SETTING: + case XML_DATA_SOURCE_SETTING: GetOwnImport().GetProgressBarHelper()->Increment( PROGRESS_BAR_STEP ); - pContext = new OXMLDataSourceSetting( GetOwnImport(), nPrefix, rLocalName,xAttrList); + pContext = new OXMLDataSourceSetting( GetOwnImport(), xAttrList); break; - case XML_TOK_DATA_SOURCE_SETTING_VALUE: + case XML_DATA_SOURCE_SETTING_VALUE: GetOwnImport().GetProgressBarHelper()->Increment( PROGRESS_BAR_STEP ); - pContext = new OXMLDataSourceSetting( GetOwnImport(), nPrefix, rLocalName,xAttrList,this ); + pContext = new OXMLDataSourceSetting( GetOwnImport(), xAttrList,this ); break; } return pContext; } -void OXMLDataSourceSetting::EndElement() +void OXMLDataSourceSetting::endFastElement(sal_Int32 ) { if ( !m_aSetting.Name.isEmpty() ) { @@ -142,7 +133,7 @@ void OXMLDataSourceSetting::EndElement() } } -void OXMLDataSourceSetting::Characters( const OUString& rChars ) +void OXMLDataSourceSetting::characters( const OUString& rChars ) { if ( m_pContainer ) m_pContainer->addValue(rChars); diff --git a/dbaccess/source/filter/xml/xmlDataSourceSetting.hxx b/dbaccess/source/filter/xml/xmlDataSourceSetting.hxx index 293a9004185b..9f28d3343c83 100644 --- a/dbaccess/source/filter/xml/xmlDataSourceSetting.hxx +++ b/dbaccess/source/filter/xml/xmlDataSourceSetting.hxx @@ -38,19 +38,20 @@ namespace dbaxml static css::uno::Any convertString(const css::uno::Type& _rExpectedType, const OUString& _rReadCharacters); public: - OXMLDataSourceSetting( ODBFilter& rImport, sal_uInt16 nPrfx, - const OUString& rLName, - const css::uno::Reference< css::xml::sax::XAttributeList > & xAttrList + OXMLDataSourceSetting( ODBFilter& rImport + ,const css::uno::Reference< css::xml::sax::XFastAttributeList > & _xAttrList ,OXMLDataSourceSetting* _pContainer = nullptr); virtual ~OXMLDataSourceSetting() 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 >& AttrList ) override; - virtual void EndElement() override; + virtual void SAL_CALL startFastElement( sal_Int32 /*nElement*/, + const css::uno::Reference< css::xml::sax::XFastAttributeList >& ) override {} - virtual void Characters( const OUString& rChars ) override; + virtual void SAL_CALL endFastElement(sal_Int32 nElement) override; + + virtual void SAL_CALL characters( const OUString& rChars ) override; /** adds value to property @param _sValue diff --git a/dbaccess/source/filter/xml/xmlDataSourceSettings.cxx b/dbaccess/source/filter/xml/xmlDataSourceSettings.cxx index 3ff748158753..eff915c1d62a 100644 --- a/dbaccess/source/filter/xml/xmlDataSourceSettings.cxx +++ b/dbaccess/source/filter/xml/xmlDataSourceSettings.cxx @@ -35,10 +35,8 @@ namespace dbaxml using namespace ::com::sun::star::uno; using namespace ::com::sun::star::xml::sax; -OXMLDataSourceSettings::OXMLDataSourceSettings( ODBFilter& rImport - ,sal_uInt16 nPrfx - ,const OUString& _sLocalName) : - SvXMLImportContext( rImport, nPrfx, _sLocalName ) +OXMLDataSourceSettings::OXMLDataSourceSettings( ODBFilter& rImport ) : + SvXMLImportContext( rImport ) { } @@ -48,19 +46,16 @@ OXMLDataSourceSettings::~OXMLDataSourceSettings() } -SvXMLImportContextRef OXMLDataSourceSettings::CreateChildContext( - sal_uInt16 nPrefix, - const OUString& rLocalName, - const Reference< XAttributeList > & xAttrList ) +css::uno::Reference< css::xml::sax::XFastContextHandler > OXMLDataSourceSettings::createFastChildContext( + sal_Int32 nElement, const css::uno::Reference< css::xml::sax::XFastAttributeList >& xAttrList ) { SvXMLImportContext *pContext = nullptr; - const SvXMLTokenMap& rTokenMap = GetOwnImport().GetDataSourceInfoElemTokenMap(); - switch( rTokenMap.Get( nPrefix, rLocalName ) ) + switch( nElement & TOKEN_MASK ) { - case XML_TOK_DATA_SOURCE_SETTING: + case XML_DATA_SOURCE_SETTING: GetOwnImport().GetProgressBarHelper()->Increment( PROGRESS_BAR_STEP ); - pContext = new OXMLDataSourceSetting( GetOwnImport(), nPrefix, rLocalName,xAttrList); + pContext = new OXMLDataSourceSetting( GetOwnImport(), xAttrList ); break; } diff --git a/dbaccess/source/filter/xml/xmlDataSourceSettings.hxx b/dbaccess/source/filter/xml/xmlDataSourceSettings.hxx index 1812212479f0..27bd20435fb9 100644 --- a/dbaccess/source/filter/xml/xmlDataSourceSettings.hxx +++ b/dbaccess/source/filter/xml/xmlDataSourceSettings.hxx @@ -29,12 +29,13 @@ namespace dbaxml ODBFilter& GetOwnImport(); public: - OXMLDataSourceSettings( ODBFilter& rImport, sal_uInt16 nPrfx,const OUString& rLName); + OXMLDataSourceSettings( ODBFilter& rImport ); virtual ~OXMLDataSourceSettings() 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 css::uno::Reference< css::xml::sax::XFastContextHandler > SAL_CALL createFastChildContext( + sal_Int32 nElement, const css::uno::Reference< css::xml::sax::XFastAttributeList >& AttrList ) override; }; } // namespace dbaxml diff --git a/dbaccess/source/filter/xml/xmlDatabase.cxx b/dbaccess/source/filter/xml/xmlDatabase.cxx index d6ca6e6e1d4a..80e929e849c9 100644 --- a/dbaccess/source/filter/xml/xmlDatabase.cxx +++ b/dbaccess/source/filter/xml/xmlDatabase.cxx @@ -40,9 +40,8 @@ namespace dbaxml using namespace ::com::sun::star::sdbcx; using namespace ::com::sun::star::xml::sax; -OXMLDatabase::OXMLDatabase( ODBFilter& rImport, - sal_uInt16 nPrfx, const OUString& rLName ) : - SvXMLImportContext( rImport, nPrfx, rLName ) +OXMLDatabase::OXMLDatabase( ODBFilter& rImport ) : + SvXMLImportContext( rImport ) { } @@ -52,21 +51,18 @@ OXMLDatabase::~OXMLDatabase() } -SvXMLImportContextRef OXMLDatabase::CreateChildContext( - sal_uInt16 nPrefix, - const OUString& rLocalName, - const Reference< XAttributeList > & xAttrList ) +css::uno::Reference< css::xml::sax::XFastContextHandler > OXMLDatabase::createFastChildContext( + sal_Int32 nElement, const css::uno::Reference< css::xml::sax::XFastAttributeList >& xAttrList ) { SvXMLImportContext *pContext = nullptr; - const SvXMLTokenMap& rTokenMap = GetOwnImport().GetDatabaseElemTokenMap(); - switch( rTokenMap.Get( nPrefix, rLocalName ) ) + switch( nElement & TOKEN_MASK ) { - case XML_TOK_DATASOURCE: + case XML_DATASOURCE: GetOwnImport().GetProgressBarHelper()->Increment( PROGRESS_BAR_STEP ); - pContext = new OXMLDataSource( GetOwnImport(), nPrefix, rLocalName, xAttrList, OXMLDataSource::eDataSource ); + pContext = new OXMLDataSource( GetOwnImport(), xAttrList, OXMLDataSource::eDataSource ); break; - case XML_TOK_FORMS: + case XML_FORMS: { GetOwnImport().GetProgressBarHelper()->Increment( PROGRESS_BAR_STEP ); Any aValue; @@ -77,11 +73,11 @@ SvXMLImportContextRef OXMLDatabase::CreateChildContext( { Reference<XFormDocumentsSupplier> xSup(GetOwnImport().GetModel(),UNO_QUERY); if ( xSup.is() ) - pContext = new OXMLDocuments( GetOwnImport(), nPrefix, rLocalName,xSup->getFormDocuments(),SERVICE_NAME_FORM_COLLECTION,SERVICE_SDB_DOCUMENTDEFINITION); + pContext = new OXMLDocuments( GetOwnImport(), xSup->getFormDocuments(),SERVICE_NAME_FORM_COLLECTION,SERVICE_SDB_DOCUMENTDEFINITION); } } break; - case XML_TOK_REPORTS: + case XML_REPORTS: { GetOwnImport().GetProgressBarHelper()->Increment( PROGRESS_BAR_STEP ); Any aValue; @@ -92,11 +88,11 @@ SvXMLImportContextRef OXMLDatabase::CreateChildContext( { Reference<XReportDocumentsSupplier> xSup(GetOwnImport().GetModel(),UNO_QUERY); if ( xSup.is() ) - pContext = new OXMLDocuments( GetOwnImport(), nPrefix, rLocalName,xSup->getReportDocuments(),SERVICE_NAME_REPORT_COLLECTION,SERVICE_SDB_DOCUMENTDEFINITION); + pContext = new OXMLDocuments( GetOwnImport(), xSup->getReportDocuments(),SERVICE_NAME_REPORT_COLLECTION,SERVICE_SDB_DOCUMENTDEFINITION); } } break; - case XML_TOK_QUERIES: + case XML_QUERIES: { GetOwnImport().GetProgressBarHelper()->Increment( PROGRESS_BAR_STEP ); Any aValue; @@ -107,17 +103,17 @@ SvXMLImportContextRef OXMLDatabase::CreateChildContext( { Reference<XQueryDefinitionsSupplier> xSup(GetOwnImport().getDataSource(),UNO_QUERY); if ( xSup.is() ) - pContext = new OXMLDocuments( GetOwnImport(), nPrefix, rLocalName,xSup->getQueryDefinitions(),SERVICE_NAME_QUERY_COLLECTION); + pContext = new OXMLDocuments( GetOwnImport(), xSup->getQueryDefinitions(),SERVICE_NAME_QUERY_COLLECTION); } } break; - case XML_TOK_TABLES: - case XML_TOK_SCHEMA_DEFINITION: + case XML_TABLE_REPRESENTATIONS: + case XML_SCHEMA_DEFINITION: { GetOwnImport().GetProgressBarHelper()->Increment( PROGRESS_BAR_STEP ); Reference<XTablesSupplier> xSup(GetOwnImport().getDataSource(),UNO_QUERY); if ( xSup.is() ) - pContext = new OXMLDocuments( GetOwnImport(), nPrefix, rLocalName,xSup->getTables()); + pContext = new OXMLDocuments( GetOwnImport(), xSup->getTables()); } break; } @@ -130,7 +126,7 @@ ODBFilter& OXMLDatabase::GetOwnImport() return static_cast<ODBFilter&>(GetImport()); } -void OXMLDatabase::EndElement() +void OXMLDatabase::endFastElement(sal_Int32) { GetOwnImport().setPropertyInfo(); } diff --git a/dbaccess/source/filter/xml/xmlDatabase.hxx b/dbaccess/source/filter/xml/xmlDatabase.hxx index 73dd1cfa8de4..d1f87c263c3d 100644 --- a/dbaccess/source/filter/xml/xmlDatabase.hxx +++ b/dbaccess/source/filter/xml/xmlDatabase.hxx @@ -24,20 +24,20 @@ namespace dbaxml { class ODBFilter; - class OXMLDatabase : public SvXMLImportContext + class OXMLDatabase final : public SvXMLImportContext { ODBFilter& GetOwnImport(); public: - OXMLDatabase( ODBFilter& rImport, sal_uInt16 nPrfx, - const OUString& rLName ); + OXMLDatabase( ODBFilter& rImport ); virtual ~OXMLDatabase() 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 >& AttrList ) 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; }; } // namespace dbaxml diff --git a/dbaccess/source/filter/xml/xmlDatabaseDescription.cxx b/dbaccess/source/filter/xml/xmlDatabaseDescription.cxx index 3290e3344f8e..c024d99096c1 100644 --- a/dbaccess/source/filter/xml/xmlDatabaseDescription.cxx +++ b/dbaccess/source/filter/xml/xmlDatabaseDescription.cxx @@ -35,9 +35,8 @@ namespace dbaxml using namespace ::com::sun::star::uno; using namespace ::com::sun::star::xml::sax; -OXMLDatabaseDescription::OXMLDatabaseDescription( ODBFilter& rImport, - sal_uInt16 nPrfx, const OUString& _sLocalName) : - SvXMLImportContext( rImport, nPrfx, _sLocalName ) +OXMLDatabaseDescription::OXMLDatabaseDescription( ODBFilter& rImport ) : + SvXMLImportContext( rImport ) ,m_bFoundOne(false) { } @@ -47,30 +46,27 @@ OXMLDatabaseDescription::~OXMLDatabaseDescription() } -SvXMLImportContextRef OXMLDatabaseDescription::CreateChildContext( - sal_uInt16 nPrefix, - const OUString& rLocalName, - const Reference< XAttributeList > & xAttrList ) +css::uno::Reference< css::xml::sax::XFastContextHandler > OXMLDatabaseDescription::createFastChildContext( + sal_Int32 nElement, const css::uno::Reference< css::xml::sax::XFastAttributeList >& xAttrList ) { SvXMLImportContext *pContext = nullptr; - const SvXMLTokenMap& rTokenMap = GetOwnImport().GetDatabaseDescriptionElemTokenMap(); - switch( rTokenMap.Get( nPrefix, rLocalName ) ) + switch( nElement & TOKEN_MASK ) { - case XML_TOK_FILE_BASED_DATABASE: + case XML_FILE_BASED_DATABASE: if ( !m_bFoundOne ) { m_bFoundOne = true; GetOwnImport().GetProgressBarHelper()->Increment( PROGRESS_BAR_STEP ); - pContext = new OXMLFileBasedDatabase( GetOwnImport(), nPrefix, rLocalName,xAttrList ); + pContext = new OXMLFileBasedDatabase( GetOwnImport(), xAttrList ); } break; - case XML_TOK_SERVER_DATABASE: + case XML_SERVER_DATABASE: if ( !m_bFoundOne ) { m_bFoundOne = true; GetOwnImport().GetProgressBarHelper()->Increment( PROGRESS_BAR_STEP ); - pContext = new OXMLServerDatabase( GetOwnImport(), nPrefix, rLocalName,xAttrList ); + pContext = new OXMLServerDatabase( GetOwnImport(), xAttrList ); } break; } diff --git a/dbaccess/source/filter/xml/xmlDatabaseDescription.hxx b/dbaccess/source/filter/xml/xmlDatabaseDescription.hxx index a95f1f546901..331f98dd832c 100644 --- a/dbaccess/source/filter/xml/xmlDatabaseDescription.hxx +++ b/dbaccess/source/filter/xml/xmlDatabaseDescription.hxx @@ -33,13 +33,13 @@ namespace dbaxml ODBFilter& GetOwnImport(); public: - OXMLDatabaseDescription( ODBFilter& rImport, sal_uInt16 nPrfx, - const OUString& rLName); + OXMLDatabaseDescription( ODBFilter& rImport); virtual ~OXMLDatabaseDescription() 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 css::uno::Reference< css::xml::sax::XFastContextHandler > SAL_CALL createFastChildContext( + sal_Int32 nElement, const css::uno::Reference< css::xml::sax::XFastAttributeList >& AttrList ) override; }; } // namespace dbaxml diff --git a/dbaccess/source/filter/xml/xmlDocuments.cxx b/dbaccess/source/filter/xml/xmlDocuments.cxx index 4c58e6fada53..e5fd75d9997b 100644 --- a/dbaccess/source/filter/xml/xmlDocuments.cxx +++ b/dbaccess/source/filter/xml/xmlDocuments.cxx @@ -36,12 +36,10 @@ namespace dbaxml using namespace ::com::sun::star::xml::sax; OXMLDocuments::OXMLDocuments( ODBFilter& rImport - ,sal_uInt16 nPrfx - , const OUString& rLName ,const Reference< XNameAccess >& _xContainer ,const OUString& _sCollectionServiceName ,const OUString& _sComponentServiceName) : - SvXMLImportContext( rImport, nPrfx, rLName ) + SvXMLImportContext( rImport ) ,m_xContainer(_xContainer) ,m_sCollectionServiceName(_sCollectionServiceName) ,m_sComponentServiceName(_sComponentServiceName) @@ -50,12 +48,10 @@ OXMLDocuments::OXMLDocuments( ODBFilter& rImport } OXMLDocuments::OXMLDocuments( ODBFilter& rImport - ,sal_uInt16 nPrfx - , const OUString& rLName ,const Reference< XNameAccess >& _xContainer ,const OUString& _sCollectionServiceName ) : - SvXMLImportContext( rImport, nPrfx, rLName ) + SvXMLImportContext( rImport ) ,m_xContainer(_xContainer) ,m_sCollectionServiceName(_sCollectionServiceName) { @@ -66,31 +62,29 @@ OXMLDocuments::~OXMLDocuments() } -SvXMLImportContextRef OXMLDocuments::CreateChildContext( - sal_uInt16 nPrefix, - const OUString& rLocalName, - const Reference< XAttributeList > & xAttrList ) +css::uno::Reference< css::xml::sax::XFastContextHandler > OXMLDocuments::createFastChildContext( + sal_Int32 nElement, const css::uno::Reference< css::xml::sax::XFastAttributeList >& xAttrList ) { SvXMLImportContext *pContext = nullptr; - const SvXMLTokenMap& rTokenMap = GetOwnImport().GetDocumentsElemTokenMap(); - switch( rTokenMap.Get( nPrefix, rLocalName ) ) + switch( nElement & TOKEN_MASK ) { - case XML_TOK_TABLE: + case XML_TABLE: + case XML_TABLE_REPRESENTATION: GetOwnImport().GetProgressBarHelper()->Increment( PROGRESS_BAR_STEP ); - pContext = new OXMLTable( GetOwnImport(), nPrefix, rLocalName, xAttrList, m_xContainer, "com.sun.star.sdb.TableDefinition"); + pContext = new OXMLTable( GetOwnImport(), xAttrList, m_xContainer, "com.sun.star.sdb.TableDefinition"); break; - case XML_TOK_QUERY: + case XML_QUERY: GetOwnImport().GetProgressBarHelper()->Increment( PROGRESS_BAR_STEP ); - pContext = new OXMLQuery( GetOwnImport(), nPrefix, rLocalName,xAttrList,m_xContainer ); + pContext = new OXMLQuery( GetOwnImport(), xAttrList, m_xContainer ); break; - case XML_TOK_COMPONENT: + case XML_COMPONENT: GetOwnImport().GetProgressBarHelper()->Increment( PROGRESS_BAR_STEP ); - pContext = new OXMLComponent( GetOwnImport(), nPrefix, rLocalName,xAttrList,m_xContainer,m_sComponentServiceName ); + pContext = new OXMLComponent( GetOwnImport(), xAttrList, m_xContainer,m_sComponentServiceName ); break; - case XML_TOK_COMPONENT_COLLECTION: + case XML_COMPONENT_COLLECTION: GetOwnImport().GetProgressBarHelper()->Increment( PROGRESS_BAR_STEP ); - pContext = new OXMLHierarchyCollection( GetOwnImport(), nPrefix, rLocalName,xAttrList,m_xContainer,m_sCollectionServiceName,m_sComponentServiceName ); + pContext = new OXMLHierarchyCollection( GetOwnImport(), xAttrList, m_xContainer,m_sCollectionServiceName,m_sComponentServiceName ); break; } diff --git a/dbaccess/source/filter/xml/xmlDocuments.hxx b/dbaccess/source/filter/xml/xmlDocuments.hxx index d0141d632550..027274267650 100644 --- a/dbaccess/source/filter/xml/xmlDocuments.hxx +++ b/dbaccess/source/filter/xml/xmlDocuments.hxx @@ -38,25 +38,22 @@ namespace dbaxml // for forms and reports OXMLDocuments( ODBFilter& rImport - ,sal_uInt16 nPrfx - ,const OUString& rLName ,const css::uno::Reference< css::container::XNameAccess >& _xContainer ,const OUString& _sCollectionServiceName ,const OUString& _sComponentServiceName); // for queries OXMLDocuments( ODBFilter& rImport - ,sal_uInt16 nPrfx - ,const OUString& rLName ,const css::uno::Reference< css::container::XNameAccess >& _xContainer ,const OUString& _sCollectionServiceName = OUString() ); virtual ~OXMLDocuments() 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 css::uno::Reference< css::xml::sax::XFastContextHandler > SAL_CALL createFastChildContext( + sal_Int32 nElement, const css::uno::Reference< css::xml::sax::XFastAttributeList >& AttrList ) override; }; } // namespace dbaxml diff --git a/dbaccess/source/filter/xml/xmlEnums.hxx b/dbaccess/source/filter/xml/xmlEnums.hxx index 709536443418..0a52cd22f8bd 100644 --- a/dbaccess/source/filter/xml/xmlEnums.hxx +++ b/dbaccess/source/filter/xml/xmlEnums.hxx @@ -23,12 +23,6 @@ namespace dbaxml { - enum XMLDocTokens - { - XML_TOK_DOC_SETTINGS, - XML_TOK_DOC_STYLES, - XML_TOK_DOC_CONTENT, - }; enum XMLDocContentTokens { XML_TOK_CONTENT_AUTOSTYLES, @@ -36,126 +30,6 @@ namespace dbaxml XML_TOK_CONTENT_SCRIPTS, XML_TOK_CONTENT_BODY, }; - enum XMLDatabaseToken - { - XML_TOK_DATASOURCE, - XML_TOK_FORMS, - XML_TOK_REPORTS, - XML_TOK_QUERIES, - XML_TOK_TABLES, - XML_TOK_SCHEMA_DEFINITION - }; - enum XMLDataSource - { - XML_TOK_CONNECTION_RESOURCE, - XML_TOK_SUPPRESS_VERSION_COLUMNS, - XML_TOK_JAVA_DRIVER_CLASS, - XML_TOK_EXTENSION, - XML_TOK_IS_FIRST_ROW_HEADER_LINE, - XML_TOK_SHOW_DELETED, - XML_TOK_IS_TABLE_NAME_LENGTH_LIMITED, - XML_TOK_SYSTEM_DRIVER_SETTINGS, - XML_TOK_ENABLE_SQL92_CHECK, - XML_TOK_APPEND_TABLE_ALIAS_NAME, - XML_TOK_PARAMETER_NAME_SUBSTITUTION, - XML_TOK_IGNORE_DRIVER_PRIVILEGES, - XML_TOK_BOOLEAN_COMPARISON_MODE, - XML_TOK_USE_CATALOG, - XML_TOK_BASE_DN, - XML_TOK_MAX_ROW_COUNT, - XML_TOK_LOGIN, - XML_TOK_TABLE_FILTER, - XML_TOK_TABLE_TYPE_FILTER, - XML_TOK_AUTO_INCREMENT, - XML_TOK_DELIMITER, - XML_TOK_DATA_SOURCE_SETTINGS, - XML_TOK_FONT_CHARSET, - XML_TOK_DATABASE_DESCRIPTION, - XML_TOK_COMPOUND_DATABASE, - XML_TOK_DB_HREF, - XML_TOK_MEDIA_TYPE, - XML_TOK_DB_TYPE, - XML_TOK_HOSTNAME, - XML_TOK_PORT, - XML_TOK_LOCAL_SOCKET, - XML_TOK_DATABASE_NAME, - XML_TOK_CONNECTION_DATA, - XML_TOK_DRIVER_SETTINGS, - XML_TOK_JAVA_CLASSPATH, - XML_TOK_CHARACTER_SET, - XML_TOK_APPLICATION_CONNECTION_SETTINGS - }; - enum XMLDatabaseDescription - { - XML_TOK_FILE_BASED_DATABASE, - XML_TOK_SERVER_DATABASE - }; - enum XMLLogin - { - XML_TOK_USER_NAME, - XML_TOK_IS_PASSWORD_REQUIRED, - XML_TOK_USE_SYSTEM_USER, - XML_TOK_LOGIN_TIMEOUT - }; - enum XMLDataSourceInfo - { - XML_TOK_STRING, - XML_TOK_FIELD, - XML_TOK_DECIMAL, - XML_TOK_THOUSAND, - XML_TOK_ADDITIONAL_COLUMN_STATEMENT, - XML_TOK_ROW_RETRIEVING_STATEMENT, - XML_TOK_DATA_SOURCE_SETTING, - XML_TOK_DATA_SOURCE_SETTING_VALUE, - XML_TOK_DATA_SOURCE_SETTING_IS_LIST, - XML_TOK_DATA_SOURCE_SETTING_TYPE, - XML_TOK_DATA_SOURCE_SETTING_NAME, - XML_TOK_ENCODING, - }; - enum XMLDocuments - { - XML_TOK_COMPONENT, - XML_TOK_COMPONENT_COLLECTION, - XML_TOK_QUERY_COLLECTION, - XML_TOK_QUERY, - XML_TOK_TABLE, - XML_TOK_COLUMN - }; - enum XMLComponent - { - XML_TOK_HREF , - XML_TOK_TYPE , - XML_TOK_SHOW , - XML_TOK_ACTUATE , - XML_TOK_AS_TEMPLATE , - XML_TOK_COMPONENT_NAME - }; - enum XMLQueryTable - { - XML_TOK_QUERY_NAME, - XML_TOK_COMMAND, - XML_TOK_ESCAPE_PROCESSING, - XML_TOK_FILTER_STATEMENT, - XML_TOK_ORDER_STATEMENT, - XML_TOK_UPDATE_TABLE, - XML_TOK_CATALOG_NAME, - XML_TOK_SCHEMA_NAME, - XML_TOK_STYLE_NAME, - XML_TOK_APPLY_FILTER, - XML_TOK_APPLY_ORDER, - XML_TOK_COLUMNS - }; - enum XMLColumn - { - XML_TOK_COLUMN_NAME, - XML_TOK_COLUMN_STYLE_NAME, - XML_TOK_COLUMN_HELP_MESSAGE, - XML_TOK_COLUMN_VISIBILITY, - XML_TOK_COLUMN_DEFAULT_VALUE, - XML_TOK_COLUMN_TYPE_NAME, - XML_TOK_COLUMN_VISIBLE, - XML_TOK_DEFAULT_CELL_STYLE_NAME - }; } // namespace dbaxml #endif // INCLUDED_DBACCESS_SOURCE_FILTER_XML_XMLENUMS_HXX diff --git a/dbaccess/source/filter/xml/xmlFileBasedDatabase.cxx b/dbaccess/source/filter/xml/xmlFileBasedDatabase.cxx index e81ab45933f3..b4aa35af4a87 100644 --- a/dbaccess/source/filter/xml/xmlFileBasedDatabase.cxx +++ b/dbaccess/source/filter/xml/xmlFileBasedDatabase.cxx @@ -36,63 +36,62 @@ namespace dbaxml using namespace ::com::sun::star::xml::sax; OXMLFileBasedDatabase::OXMLFileBasedDatabase( ODBFilter& rImport, - sal_uInt16 nPrfx, const OUString& _sLocalName, - const Reference< XAttributeList > & _xAttrList) : - SvXMLImportContext( rImport, nPrfx, _sLocalName ) + const Reference< XFastAttributeList > & _xAttrList) : + SvXMLImportContext( rImport ) { - - OSL_ENSURE(_xAttrList.is(),"Attribute list is NULL!"); - const SvXMLNamespaceMap& rMap = rImport.GetNamespaceMap(); - const SvXMLTokenMap& rTokenMap = rImport.GetDataSourceElemTokenMap(); - Reference<XPropertySet> xDataSource = rImport.getDataSource(); PropertyValue aProperty; - const sal_Int16 nLength = (xDataSource.is() && _xAttrList.is()) ? _xAttrList->getLength() : 0; OUString sLocation,sMediaType,sFileTypeExtension; - for(sal_Int16 i = 0; i < nLength; ++i) + if (xDataSource.is()) { - OUString sLocalName; - const OUString sAttrName = _xAttrList->getNameByIndex( i ); - const sal_uInt16 nPrefix = rMap.GetKeyByAttrName( sAttrName,&sLocalName ); - const OUString sValue = _xAttrList->getValueByIndex( i ); + sax_fastparser::FastAttributeList *pAttribList = + sax_fastparser::FastAttributeList::castToFastAttributeList( _xAttrList ); + for (auto &aIter : *pAttribList) + { + OUString sValue = aIter.toString(); - aProperty.Name.clear(); - aProperty.Value = Any(); + aProperty.Name.clear(); + aProperty.Value = Any(); - switch( rTokenMap.Get( nPrefix, sLocalName ) ) - { - case XML_TOK_DB_HREF: - { - SvtPathOptions aPathOptions; - OUString sFileName = aPathOptions.SubstituteVariable(sValue); - if ( sValue == sFileName ) + switch( aIter.getToken() ) + { + case XML_ELEMENT(XLINK, XML_HREF): { - const sal_Int32 nFileNameLength = sFileName.getLength(); - if ( sFileName.endsWith("/") ) - sFileName = sFileName.copy( 0, nFileNameLength - 1 ); + SvtPathOptions aPathOptions; + OUString sFileName = aPathOptions.SubstituteVariable(sValue); + if ( sValue == sFileName ) + { + const sal_Int32 nFileNameLength = sFileName.getLength(); + if ( sFileName.endsWith("/") ) + sFileName = sFileName.copy( 0, nFileNameLength - 1 ); - sLocation = ::svt::OFileNotation( rImport.GetAbsoluteReference( sFileName ) ).get( ::svt::OFileNotation::N_SYSTEM ); - } + sLocation = ::svt::OFileNotation( rImport.GetAbsoluteReference( sFileName ) ).get( ::svt::OFileNotation::N_SYSTEM ); + } - if ( sLocation.isEmpty() ) - sLocation = sValue; - } - break; - case XML_TOK_MEDIA_TYPE: - sMediaType = sValue; - break; - case XML_TOK_EXTENSION: - aProperty.Name = INFO_TEXTFILEEXTENSION; - sFileTypeExtension = sValue; - break; - } - if ( !aProperty.Name.isEmpty() ) - { - if ( !aProperty.Value.hasValue() ) - aProperty.Value <<= sValue; - rImport.addInfo(aProperty); + if ( sLocation.isEmpty() ) + sLocation = sValue; + } + break; + case XML_ELEMENT(DB, XML_MEDIA_TYPE): + case XML_ELEMENT(DB_OASIS, XML_MEDIA_TYPE): + sMediaType = sValue; + break; + case XML_ELEMENT(DB, XML_EXTENSION): + case XML_ELEMENT(DB_OASIS, XML_EXTENSION): + aProperty.Name = INFO_TEXTFILEEXTENSION; + sFileTypeExtension = sValue; + break; + default: + SAL_WARN("dbaccess", "unknown attribute " << SvXMLImport::getNameFromToken(aIter.getToken()) << " value=" << aIter.toString()); + } + if ( !aProperty.Name.isEmpty() ) + { + if ( !aProperty.Value.hasValue() ) + aProperty.Value <<= sValue; + rImport.addInfo(aProperty); + } } } if ( !(sLocation.isEmpty() || sMediaType.isEmpty()) ) diff --git a/dbaccess/source/filter/xml/xmlFileBasedDatabase.hxx b/dbaccess/source/filter/xml/xmlFileBasedDatabase.hxx index ed8926a96034..6ffcd44dbc92 100644 --- a/dbaccess/source/filter/xml/xmlFileBasedDatabase.hxx +++ b/dbaccess/source/filter/xml/xmlFileBasedDatabase.hxx @@ -30,9 +30,10 @@ namespace dbaxml { public: - OXMLFileBasedDatabase( ODBFilter& rImport, sal_uInt16 nPrfx, - const OUString& rLName, - const css::uno::Reference< css::xml::sax::XAttributeList > & xAttrList); + OXMLFileBasedDatabase( ODBFilter& rImport, + const css::uno::Reference< css::xml::sax::XFastAttributeList > & _xAttrList ); + virtual void SAL_CALL startFastElement( sal_Int32 /*nElement*/, + const css::uno::Reference< css::xml::sax::XFastAttributeList >& ) override {} virtual ~OXMLFileBasedDatabase() override; }; } // namespace dbaxml diff --git a/dbaccess/source/filter/xml/xmlHierarchyCollection.cxx b/dbaccess/source/filter/xml/xmlHierarchyCollection.cxx index 44052a93ed67..3ed0e3aabfaa 100644 --- a/dbaccess/source/filter/xml/xmlHierarchyCollection.cxx +++ b/dbaccess/source/filter/xml/xmlHierarchyCollection.cxx @@ -31,6 +31,7 @@ #include <com/sun/star/beans/PropertyValue.hpp> #include <com/sun/star/container/XNameContainer.hpp> #include <comphelper/propertysequence.hxx> +#include <sal/log.hxx> namespace dbaxml { @@ -40,33 +41,27 @@ namespace dbaxml using namespace ::com::sun::star::xml::sax; OXMLHierarchyCollection::OXMLHierarchyCollection( ODBFilter& rImport - ,sal_uInt16 nPrfx - ,const OUString& _sLocalName - ,const Reference< XAttributeList > & _xAttrList + ,const Reference< XFastAttributeList > & _xAttrList ,const Reference< XNameAccess >& _xParentContainer ,const OUString& _sCollectionServiceName ,const OUString& _sComponentServiceName) : - SvXMLImportContext( rImport, nPrfx, _sLocalName ) + SvXMLImportContext( rImport ) ,m_sCollectionServiceName(_sCollectionServiceName) ,m_sComponentServiceName(_sComponentServiceName) { - - const SvXMLNamespaceMap& rMap = rImport.GetNamespaceMap(); - const SvXMLTokenMap& rTokenMap = rImport.GetComponentElemTokenMap(); - - 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; - OUString sAttrName = _xAttrList->getNameByIndex( i ); - sal_uInt16 nPrefix = rMap.GetKeyByAttrName( sAttrName,&sLocalName ); - OUString sValue = _xAttrList->getValueByIndex( i ); + OUString sValue = aIter.toString(); - switch( rTokenMap.Get( nPrefix, sLocalName ) ) + switch( aIter.getToken() & TOKEN_MASK ) { - case XML_TOK_COMPONENT_NAME: + case XML_NAME: m_sName = sValue; break; + default: + SAL_WARN("dbaccess", "unknown attribute " << SvXMLImport::getNameFromToken(aIter.getToken()) << " value=" << aIter.toString()); } } if ( !m_sName.isEmpty() && _xParentContainer.is() ) @@ -95,12 +90,10 @@ OXMLHierarchyCollection::OXMLHierarchyCollection( ODBFilter& rImport } OXMLHierarchyCollection::OXMLHierarchyCollection( ODBFilter& rImport - ,sal_uInt16 nPrfx - ,const OUString& _sLocalName ,const Reference< XNameAccess >& _xContainer ,const Reference< XPropertySet >& _xTable ) : - SvXMLImportContext( rImport, nPrfx, _sLocalName ) + SvXMLImportContext( rImport ) ,m_xContainer(_xContainer) ,m_xTable(_xTable) { @@ -111,27 +104,24 @@ OXMLHierarchyCollection::~OXMLHierarchyCollection() } -SvXMLImportContextRef OXMLHierarchyCollection::CreateChildContext( - sal_uInt16 nPrefix, - const OUString& rLocalName, - const Reference< XAttributeList > & xAttrList ) +css::uno::Reference< css::xml::sax::XFastContextHandler > OXMLHierarchyCollection::createFastChildContext( + sal_Int32 nElement, const css::uno::Reference< css::xml::sax::XFastAttributeList >& xAttrList ) { SvXMLImportContext *pContext = nullptr; - const SvXMLTokenMap& rTokenMap = GetOwnImport().GetDocumentsElemTokenMap(); - switch( rTokenMap.Get( nPrefix, rLocalName ) ) + switch( nElement & TOKEN_MASK ) { - case XML_TOK_COMPONENT: + case XML_COMPONENT: GetOwnImport().GetProgressBarHelper()->Increment( PROGRESS_BAR_STEP ); - pContext = new OXMLComponent( GetOwnImport(), nPrefix, rLocalName,xAttrList,m_xContainer,m_sComponentServiceName ); + pContext = new OXMLComponent( GetOwnImport(), xAttrList,m_xContainer,m_sComponentServiceName ); break; - case XML_TOK_COLUMN: + case XML_COLUMN: GetOwnImport().GetProgressBarHelper()->Increment( PROGRESS_BAR_STEP ); - pContext = new OXMLColumn( GetOwnImport(), nPrefix, rLocalName,xAttrList,m_xContainer,m_xTable); + pContext = new OXMLColumn( GetOwnImport(), xAttrList,m_xContainer,m_xTable); break; - case XML_TOK_COMPONENT_COLLECTION: + case XML_COMPONENT_COLLECTION: GetOwnImport().GetProgressBarHelper()->Increment( PROGRESS_BAR_STEP ); - pContext = new OXMLHierarchyCollection( GetOwnImport(), nPrefix, rLocalName,xAttrList,m_xContainer,m_sCollectionServiceName,m_sComponentServiceName); + pContext = new OXMLHierarchyCollection( GetOwnImport(), xAttrList,m_xContainer,m_sCollectionServiceName,m_sComponentServiceName); break; } diff --git a/dbaccess/source/filter/xml/xmlHierarchyCollection.hxx b/dbaccess/source/filter/xml/xmlHierarchyCollection.hxx index 4552b50b7094..758fc6321926 100644 --- a/dbaccess/source/filter/xml/xmlHierarchyCollection.hxx +++ b/dbaccess/source/filter/xml/xmlHierarchyCollection.hxx @@ -39,24 +39,21 @@ namespace dbaxml public: OXMLHierarchyCollection( ODBFilter& 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::container::XNameAccess >& _xParentContainer ,const OUString& _sCollectionServiceName ,const OUString& _sComponentServiceName ); OXMLHierarchyCollection( ODBFilter& rImport - ,sal_uInt16 nPrfx - ,const OUString& rLName ,const css::uno::Reference< css::container::XNameAccess >& _xContainer ,const css::uno::Reference< css::beans::XPropertySet >& _xTable ); virtual ~OXMLHierarchyCollection() 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 css::uno::Reference< css::xml::sax::XFastContextHandler > SAL_CALL createFastChildContext( + sal_Int32 nElement, const css::uno::Reference< css::xml::sax::XFastAttributeList >& AttrList ) override; }; } // namespace dbaxml diff --git a/dbaccess/source/filter/xml/xmlLogin.cxx b/dbaccess/source/filter/xml/xmlLogin.cxx index d747ef801f55..786be60253b2 100644 --- a/dbaccess/source/filter/xml/xmlLogin.cxx +++ b/dbaccess/source/filter/xml/xmlLogin.cxx @@ -37,80 +37,77 @@ namespace dbaxml using namespace ::com::sun::star::xml::sax; OXMLLogin::OXMLLogin( ODBFilter& rImport, - sal_uInt16 nPrfx, const OUString& _sLocalName, - const Reference< XAttributeList > & _xAttrList ) : - SvXMLImportContext( rImport, nPrfx, _sLocalName ) + const Reference< XFastAttributeList > & _xAttrList ) : + SvXMLImportContext( rImport ) { - - OSL_ENSURE(_xAttrList.is(),"Attribute list is NULL!"); - const SvXMLNamespaceMap& rMap = rImport.GetNamespaceMap(); - const SvXMLTokenMap& rTokenMap = rImport.GetLoginElemTokenMap(); - Reference<XPropertySet> xDataSource(rImport.getDataSource()); - const sal_Int16 nLength = (xDataSource.is() && _xAttrList.is()) ? _xAttrList->getLength() : 0; static const OUString s_sTRUE = ::xmloff::token::GetXMLToken(XML_TRUE); bool bUserFound = false; - for(sal_Int16 i = 0; i < nLength; ++i) + if (xDataSource.is()) { - OUString sLocalName; - OUString sAttrName = _xAttrList->getNameByIndex( i ); - sal_uInt16 nPrefix = rMap.GetKeyByAttrName( sAttrName,&sLocalName ); - OUString sValue = _xAttrList->getValueByIndex( i ); - - try + sax_fastparser::FastAttributeList *pAttribList = + sax_fastparser::FastAttributeList::castToFastAttributeList( _xAttrList ); + for (auto &aIter : *pAttribList) { - switch( rTokenMap.Get( nPrefix, sLocalName ) ) + OUString sValue = aIter.toString(); + + try { - case XML_TOK_USER_NAME: - if ( !bUserFound ) - { - bUserFound = true; + switch( aIter.getToken() & TOKEN_MASK ) + { + case XML_USER_NAME: + if ( !bUserFound ) + { + bUserFound = true; + try + { + xDataSource->setPropertyValue(PROPERTY_USER,makeAny(sValue)); + } + catch(const Exception&) + { + DBG_UNHANDLED_EXCEPTION("dbaccess"); + } + } + break; + case XML_IS_PASSWORD_REQUIRED: try { - xDataSource->setPropertyValue(PROPERTY_USER,makeAny(sValue)); + xDataSource->setPropertyValue(PROPERTY_ISPASSWORDREQUIRED,makeAny(sValue == s_sTRUE)); } catch(const Exception&) { DBG_UNHANDLED_EXCEPTION("dbaccess"); } - } - break; - case XML_TOK_IS_PASSWORD_REQUIRED: - try - { - xDataSource->setPropertyValue(PROPERTY_ISPASSWORDREQUIRED,makeAny(sValue == s_sTRUE)); - } - catch(const Exception&) - { - DBG_UNHANDLED_EXCEPTION("dbaccess"); - } - break; - case XML_TOK_USE_SYSTEM_USER: - if ( !bUserFound ) - { - bUserFound = true; - PropertyValue aProperty; - aProperty.Name = "UseSystemUser"; - aProperty.Value <<= (sValue == s_sTRUE); - rImport.addInfo(aProperty); - } - break; - case XML_TOK_LOGIN_TIMEOUT: - try - { - Reference< XDataSource>(xDataSource,UNO_QUERY_THROW)->setLoginTimeout(sValue.toInt32()); - } - catch(const Exception&) - { - DBG_UNHANDLED_EXCEPTION("dbaccess"); - } - break; + break; + case XML_USE_SYSTEM_USER: + if ( !bUserFound ) + { + bUserFound = true; + PropertyValue aProperty; + aProperty.Name = "UseSystemUser"; + aProperty.Value <<= (sValue == s_sTRUE); + rImport.addInfo(aProperty); + } + break; + case XML_LOGIN_TIMEOUT: + try + { + Reference< XDataSource>(xDataSource,UNO_QUERY_THROW)->setLoginTimeout(sValue.toInt32()); + } + catch(const Exception&) + { + DBG_UNHANDLED_EXCEPTION("dbaccess"); + } + break; + default: + SAL_WARN("dbaccess", "unknown attribute " << SvXMLImport::getNameFromToken(aIter.getToken()) << " value=" << aIter.toString()); + } + } + catch(const Exception&) + { + DBG_UNHANDLED_EXCEPTION("dbaccess"); } - } - catch(const Exception&) - { - DBG_UNHANDLED_EXCEPTION("dbaccess"); } } } diff --git a/dbaccess/source/filter/xml/xmlLogin.hxx b/dbaccess/source/filter/xml/xmlLogin.hxx index ed47680129fd..50297416d221 100644 --- a/dbaccess/source/filter/xml/xmlLogin.hxx +++ b/dbaccess/source/filter/xml/xmlLogin.hxx @@ -28,9 +28,10 @@ namespace dbaxml { public: - OXMLLogin( ODBFilter& rImport, sal_uInt16 nPrfx, - const OUString& rLName, - const css::uno::Reference< css::xml::sax::XAttributeList > & xAttrList ); + OXMLLogin( ODBFilter& rImport, + const css::uno::Reference< css::xml::sax::XFastAttributeList > & _xAttrList ); + virtual void SAL_CALL startFastElement( sal_Int32 /*nElement*/, + const css::uno::Reference< css::xml::sax::XFastAttributeList >& ) override {} virtual ~OXMLLogin() override; }; diff --git a/dbaccess/source/filter/xml/xmlQuery.cxx b/dbaccess/source/filter/xml/xmlQuery.cxx index d41b1929937d..88bc13f74322 100644 --- a/dbaccess/source/filter/xml/xmlQuery.cxx +++ b/dbaccess/source/filter/xml/xmlQuery.cxx @@ -29,6 +29,7 @@ #include <com/sun/star/beans/PropertyValue.hpp> #include <com/sun/star/beans/XPropertySet.hpp> #include <com/sun/star/container/XNameContainer.hpp> +#include <sal/log.hxx> namespace dbaxml { @@ -39,35 +40,28 @@ namespace dbaxml OXMLQuery::OXMLQuery( ODBFilter& rImport - ,sal_uInt16 nPrfx - ,const OUString& _sLocalName - ,const Reference< XAttributeList > & _xAttrList + ,const Reference< XFastAttributeList > & _xAttrList ,const css::uno::Reference< css::container::XNameAccess >& _xParentContainer ) : - OXMLTable( rImport, nPrfx, _sLocalName,_xAttrList,_xParentContainer, "com.sun.star.sdb.CommandDefinition" ) + OXMLTable( rImport, _xAttrList,_xParentContainer, "com.sun.star.sdb.CommandDefinition" ) ,m_bEscapeProcessing(true) { - - OSL_ENSURE(_xAttrList.is(),"Attribute list is NULL!"); - const SvXMLNamespaceMap& rMap = rImport.GetNamespaceMap(); - const SvXMLTokenMap& rTokenMap = rImport.GetQueryElemTokenMap(); - - 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; - OUString sAttrName = _xAttrList->getNameByIndex( i ); - sal_uInt16 nPrefix = rMap.GetKeyByAttrName( sAttrName,&sLocalName ); - OUString sValue = _xAttrList->getValueByIndex( i ); + OUString sValue = aIter.toString(); - switch( rTokenMap.Get( nPrefix, sLocalName ) ) + switch( aIter.getToken() & TOKEN_MASK ) { - case XML_TOK_COMMAND: + case XML_COMMAND: m_sCommand = sValue; break; - case XML_TOK_ESCAPE_PROCESSING: + case XML_ESCAPE_PROCESSING: m_bEscapeProcessing = sValue == "true"; break; + default: + SAL_WARN("dbaccess", "unknown attribute " << SvXMLImport::getNameFromToken(aIter.getToken()) << " value=" << aIter.toString()); } } } @@ -77,19 +71,15 @@ OXMLQuery::~OXMLQuery() } -SvXMLImportContextRef OXMLQuery::CreateChildContext( - sal_uInt16 nPrefix, - const OUString& rLocalName, - const Reference< XAttributeList > & xAttrList ) +css::uno::Reference< css::xml::sax::XFastContextHandler > OXMLQuery::createFastChildContext( + sal_Int32 nElement, const css::uno::Reference< css::xml::sax::XFastAttributeList >& xAttrList ) { - SvXMLImportContextRef xContext = OXMLTable::CreateChildContext(nPrefix, rLocalName,xAttrList ); + css::uno::Reference< css::xml::sax::XFastContextHandler > xContext = OXMLTable::createFastChildContext(nElement,xAttrList ); if (!xContext) { - const SvXMLTokenMap& rTokenMap = GetOwnImport().GetQueryElemTokenMap(); - - switch( rTokenMap.Get( nPrefix, rLocalName ) ) + switch( nElement & TOKEN_MASK ) { - case XML_TOK_UPDATE_TABLE: + case XML_UPDATE_TABLE: { GetOwnImport().GetProgressBarHelper()->Increment( PROGRESS_BAR_STEP ); OUString s1; diff --git a/dbaccess/source/filter/xml/xmlQuery.hxx b/dbaccess/source/filter/xml/xmlQuery.hxx index 995d406a9d39..211764b49b1f 100644 --- a/dbaccess/source/filter/xml/xmlQuery.hxx +++ b/dbaccess/source/filter/xml/xmlQuery.hxx @@ -35,16 +35,15 @@ namespace dbaxml public: OXMLQuery( ODBFilter& 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::container::XNameAccess >& _xParentContainer ); virtual ~OXMLQuery() 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 css::uno::Reference< css::xml::sax::XFastContextHandler > SAL_CALL createFastChildContext( + sal_Int32 nElement, const css::uno::Reference< css::xml::sax::XFastAttributeList >& AttrList ) override; }; } // namespace dbaxml diff --git a/dbaccess/source/filter/xml/xmlServerDatabase.cxx b/dbaccess/source/filter/xml/xmlServerDatabase.cxx index 6eb9ce76ef12..e231d19f78f1 100644 --- a/dbaccess/source/filter/xml/xmlServerDatabase.cxx +++ b/dbaccess/source/filter/xml/xmlServerDatabase.cxx @@ -34,47 +34,44 @@ namespace dbaxml using namespace ::com::sun::star::xml::sax; OXMLServerDatabase::OXMLServerDatabase( ODBFilter& rImport, - sal_uInt16 nPrfx, const OUString& _sLocalName, - const Reference< XAttributeList > & _xAttrList) : - SvXMLImportContext( rImport, nPrfx, _sLocalName ) + const Reference< XFastAttributeList > & _xAttrList) : + SvXMLImportContext( rImport ) { - - OSL_ENSURE(_xAttrList.is(),"Attribute list is NULL!"); - const SvXMLNamespaceMap& rMap = rImport.GetNamespaceMap(); - const SvXMLTokenMap& rTokenMap = rImport.GetDataSourceElemTokenMap(); - Reference<XPropertySet> xDataSource = rImport.getDataSource(); PropertyValue aProperty; - const sal_Int16 nLength = (xDataSource.is() && _xAttrList.is()) ? _xAttrList->getLength() : 0; OUString sType,sHostName,sPortNumber,sDatabaseName; - for(sal_Int16 i = 0; i < nLength; ++i) + if (xDataSource.is()) { - 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 ) ) + sax_fastparser::FastAttributeList *pAttribList = + sax_fastparser::FastAttributeList::castToFastAttributeList( _xAttrList ); + for (auto &aIter : *pAttribList) { - case XML_TOK_DB_TYPE: - sType = sValue; - break; - case XML_TOK_HOSTNAME: - sHostName = sValue; - break; - case XML_TOK_PORT: - sPortNumber = sValue; - break; - case XML_TOK_LOCAL_SOCKET: - aProperty.Name = "LocalSocket"; - aProperty.Value <<= sValue; - rImport.addInfo(aProperty); - break; - case XML_TOK_DATABASE_NAME: - sDatabaseName = sValue; - break; + OUString sValue = aIter.toString(); + + switch( aIter.getToken() & TOKEN_MASK ) + { + case XML_TYPE: + sType = sValue; + break; + case XML_HOSTNAME: + sHostName = sValue; + break; + case XML_PORT: + sPortNumber = sValue; + break; + case XML_LOCAL_SOCKET: + aProperty.Name = "LocalSocket"; + aProperty.Value <<= sValue; + rImport.addInfo(aProperty); + break; + case XML_DATABASE_NAME: + sDatabaseName = sValue; + break; + default: + SAL_WARN("dbaccess", "unknown attribute " << SvXMLImport::getNameFromToken(aIter.getToken()) << " value=" << aIter.toString()); + } } } if ( !sType.isEmpty() ) diff --git a/dbaccess/source/filter/xml/xmlServerDatabase.hxx b/dbaccess/source/filter/xml/xmlServerDatabase.hxx index f6576f62dab5..41c7186c13c1 100644 --- a/dbaccess/source/filter/xml/xmlServerDatabase.hxx +++ b/dbaccess/source/filter/xml/xmlServerDatabase.hxx @@ -30,9 +30,10 @@ namespace dbaxml { public: - OXMLServerDatabase( ODBFilter& rImport, sal_uInt16 nPrfx, - const OUString& rLName, - const css::uno::Reference< css::xml::sax::XAttributeList > & xAttrList); + OXMLServerDatabase( ODBFilter& rImport, + const css::uno::Reference< css::xml::sax::XFastAttributeList > & _xAttrList ); + virtual void SAL_CALL startFastElement( sal_Int32 /*nElement*/, + const css::uno::Reference< css::xml::sax::XFastAttributeList >& ) override {} virtual ~OXMLServerDatabase() override; }; } // namespace dbaxml diff --git a/dbaccess/source/filter/xml/xmlTable.cxx b/dbaccess/source/filter/xml/xmlTable.cxx index b1fc0084d828..77861056ce94 100644 --- a/dbaccess/source/filter/xml/xmlTable.cxx +++ b/dbaccess/source/filter/xml/xmlTable.cxx @@ -34,6 +34,7 @@ #include <com/sun/star/container/XNameContainer.hpp> #include <com/sun/star/uno/XComponentContext.hpp> #include <comphelper/propertysequence.hxx> +#include <sal/log.hxx> namespace dbaxml { @@ -43,50 +44,43 @@ namespace dbaxml using namespace ::com::sun::star::xml::sax; OXMLTable::OXMLTable( ODBFilter& _rImport - ,sal_uInt16 nPrfx - ,const OUString& _sLocalName - ,const uno::Reference< XAttributeList > & _xAttrList + ,const uno::Reference< XFastAttributeList > & _xAttrList ,const uno::Reference< css::container::XNameAccess >& _xParentContainer ,const OUString& _sServiceName ) - :SvXMLImportContext( _rImport, nPrfx, _sLocalName ) + :SvXMLImportContext( _rImport ) ,m_xParentContainer(_xParentContainer) ,m_bApplyFilter(false) ,m_bApplyOrder(false) { - - OSL_ENSURE(_xAttrList.is(),"Attribute list is NULL!"); - const SvXMLNamespaceMap& rMap = GetOwnImport().GetNamespaceMap(); - const SvXMLTokenMap& rTokenMap = GetOwnImport().GetQueryElemTokenMap(); - - 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; - OUString sAttrName = _xAttrList->getNameByIndex( i ); ... etc. - the rest is truncated _______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits