sw/qa/extras/ooxmlexport/data/tscp.docx |binary sw/qa/extras/ooxmlexport/ooxmlexport5.cxx | 13 +++++++------ sw/qa/extras/ww8export/data/tscp.doc |binary sw/qa/extras/ww8export/ww8export.cxx | 13 +++++++------ sw/source/core/doc/rdfhelper.cxx | 3 ++- sw/source/filter/basflt/fltshell.cxx | 15 +++++++-------- sw/source/filter/ww8/docxattributeoutput.cxx | 2 +- sw/source/filter/ww8/wrtww8.cxx | 2 +- writerfilter/source/dmapper/SmartTagHandler.cxx | 18 +++++++++--------- 9 files changed, 34 insertions(+), 32 deletions(-)
New commits: commit ce814d1a28bb1ff2e6df23e6ed8c256c948787af Author: Miklos Vajna <vmik...@collabora.co.uk> Date: Mon Jan 4 17:39:58 2016 +0100 DOC(X) filter: BAF -> BAILS in the smart tag mapping The filters map between a common subset of Word smart tags and Writer RDF annotations, and when doing so, they need to know what path to use for a smart tag namespace and also the other way around: what RDF types are interesting for smart tag purposes. It turns out there is BAILS specification at <http://www.tscp.org/wp-content/uploads/2013/08/TSCP_BAILSv1.pdf> that describes how to refer to BAF objects, so use that instead of our custom RDF statement / document metadata key names. Change-Id: Iac569608b05aa61547f664f2a5df7d46fe46da76 diff --git a/sw/qa/extras/ooxmlexport/data/tscp.docx b/sw/qa/extras/ooxmlexport/data/tscp.docx index 3cda72d..bbb32b1 100644 Binary files a/sw/qa/extras/ooxmlexport/data/tscp.docx and b/sw/qa/extras/ooxmlexport/data/tscp.docx differ diff --git a/sw/qa/extras/ooxmlexport/ooxmlexport5.cxx b/sw/qa/extras/ooxmlexport/ooxmlexport5.cxx index 65203a6..0507fcc 100644 --- a/sw/qa/extras/ooxmlexport/ooxmlexport5.cxx +++ b/sw/qa/extras/ooxmlexport/ooxmlexport5.cxx @@ -90,10 +90,10 @@ DECLARE_OOXMLEXPORT_TEST(testFDO76248, "FDO76248.docx") DECLARE_OOXMLEXPORT_TEST(testTscp, "tscp.docx") { uno::Reference<uno::XComponentContext> xComponentContext(comphelper::getProcessComponentContext()); - uno::Reference<rdf::XURI> xType = rdf::URI::create(xComponentContext, "urn:tscp:names:baf:1.1"); + uno::Reference<rdf::XURI> xType = rdf::URI::create(xComponentContext, "urn:bails"); uno::Reference<rdf::XDocumentMetadataAccess> xDocumentMetadataAccess(mxComponent, uno::UNO_QUERY); uno::Sequence< uno::Reference<rdf::XURI> > aGraphNames = xDocumentMetadataAccess->getMetadataGraphsWithType(xType); - // This failed, no graphs had the urn:tscp:names:baf:1.1 type. + // This failed, no graphs had the urn:bails type. CPPUNIT_ASSERT_EQUAL(static_cast<sal_Int32>(1), aGraphNames.getLength()); uno::Reference<rdf::XURI> xGraphName = aGraphNames[0]; uno::Reference<rdf::XNamedGraph> xGraph = xDocumentMetadataAccess->getRDFRepository()->getGraph(xGraphName); @@ -105,10 +105,11 @@ DECLARE_OOXMLEXPORT_TEST(testTscp, "tscp.docx") // 3 RDF statements on the second paragraph. xParagraph.set(getParagraph(2), uno::UNO_QUERY); - std::map<OUString, OUString> aExpectedStatements = { - {"urn:tscp:names:baf:1.1#BusinessAuthorization", "urn:example:tscp:1"}, - {"urn:tscp:names:baf:1.1#BusinessAuthorizationCategory", "urn:example:tscp:1:confidential"}, - {"urn:tscp:names:baf:1.1#BusinessAuthorizationDate", "2015-11-27T11:45:00"} + std::map<OUString, OUString> aExpectedStatements = + { + {"urn:bails:ExportControl:BusinessAuthorization:Identifier", "urn:example:tscp:1"}, + {"urn:bails:ExportControl:BusinessAuthorizationCategory:Identifier", "urn:example:tscp:1:confidential"}, + {"urn:bails:ExportControl:Authorization:StartValidity", "2015-11-27"} }; std::map<OUString, OUString> aActualStatements; xStatements = xGraph->getStatements(xParagraph, uno::Reference<rdf::XURI>(), uno::Reference<rdf::XURI>()); diff --git a/sw/qa/extras/ww8export/data/tscp.doc b/sw/qa/extras/ww8export/data/tscp.doc index 7b710fc..9830b28 100644 Binary files a/sw/qa/extras/ww8export/data/tscp.doc and b/sw/qa/extras/ww8export/data/tscp.doc differ diff --git a/sw/qa/extras/ww8export/ww8export.cxx b/sw/qa/extras/ww8export/ww8export.cxx index de10766..39c3fc8 100644 --- a/sw/qa/extras/ww8export/ww8export.cxx +++ b/sw/qa/extras/ww8export/ww8export.cxx @@ -103,10 +103,10 @@ DECLARE_WW8EXPORT_TEST(testN325936, "n325936.doc") DECLARE_WW8EXPORT_TEST(testTscp, "tscp.doc") { uno::Reference<uno::XComponentContext> xComponentContext(comphelper::getProcessComponentContext()); - uno::Reference<rdf::XURI> xType = rdf::URI::create(xComponentContext, "urn:tscp:names:baf:1.1"); + uno::Reference<rdf::XURI> xType = rdf::URI::create(xComponentContext, "urn:bails"); uno::Reference<rdf::XDocumentMetadataAccess> xDocumentMetadataAccess(mxComponent, uno::UNO_QUERY); uno::Sequence< uno::Reference<rdf::XURI> > aGraphNames = xDocumentMetadataAccess->getMetadataGraphsWithType(xType); - // This failed, no graphs had the urn:tscp:names:baf:1.1 type. + // This failed, no graphs had the urn:bails type. CPPUNIT_ASSERT_EQUAL(static_cast<sal_Int32>(1), aGraphNames.getLength()); uno::Reference<rdf::XURI> xGraphName = aGraphNames[0]; uno::Reference<rdf::XNamedGraph> xGraph = xDocumentMetadataAccess->getRDFRepository()->getGraph(xGraphName); @@ -118,10 +118,11 @@ DECLARE_WW8EXPORT_TEST(testTscp, "tscp.doc") // 3 RDF statements on the second paragraph. xParagraph.set(getParagraph(2), uno::UNO_QUERY); - std::map<OUString, OUString> aExpectedStatements = { - {"urn:tscp:names:baf:1.1#BusinessAuthorization", "urn:example:tscp:1"}, - {"urn:tscp:names:baf:1.1#BusinessAuthorizationCategory", "urn:example:tscp:1:confidential"}, - {"urn:tscp:names:baf:1.1#BusinessAuthorizationDate", "2015-11-27T11:45:00"} + std::map<OUString, OUString> aExpectedStatements = + { + {"urn:bails:ExportControl:BusinessAuthorization:Identifier", "urn:example:tscp:1"}, + {"urn:bails:ExportControl:BusinessAuthorizationCategory:Identifier", "urn:example:tscp:1:confidential"}, + {"urn:bails:ExportControl:Authorization:StartValidity", "2015-11-27"} }; std::map<OUString, OUString> aActualStatements; xStatements = xGraph->getStatements(xParagraph, uno::Reference<rdf::XURI>(), uno::Reference<rdf::XURI>()); diff --git a/sw/source/core/doc/rdfhelper.cxx b/sw/source/core/doc/rdfhelper.cxx index 83605ed..7f93813 100644 --- a/sw/source/core/doc/rdfhelper.cxx +++ b/sw/source/core/doc/rdfhelper.cxx @@ -9,6 +9,7 @@ #include <rdfhelper.hxx> +#include <com/sun/star/rdf/Literal.hpp> #include <com/sun/star/rdf/Statement.hpp> #include <com/sun/star/rdf/URI.hpp> #include <com/sun/star/rdf/XDocumentMetadataAccess.hpp> @@ -68,7 +69,7 @@ void SwRDFHelper::addTextNodeStatement(const OUString& rType, const OUString& rP uno::Reference<rdf::XNamedGraph> xGraph = xDocumentMetadataAccess->getRDFRepository()->getGraph(xGraphName); uno::Reference<rdf::XResource> xSubject(SwXParagraph::CreateXParagraph(*rTextNode.GetDoc(), &rTextNode), uno::UNO_QUERY); uno::Reference<rdf::XURI> xKey = rdf::URI::create(xComponentContext, rKey); - uno::Reference<rdf::XURI> xValue = rdf::URI::create(xComponentContext, rValue); + uno::Reference<rdf::XLiteral> xValue = rdf::Literal::create(xComponentContext, rValue); xGraph->addStatement(xSubject, xKey, xValue); } diff --git a/sw/source/filter/basflt/fltshell.cxx b/sw/source/filter/basflt/fltshell.cxx index c80eab7..de1e97c 100644 --- a/sw/source/filter/basflt/fltshell.cxx +++ b/sw/source/filter/basflt/fltshell.cxx @@ -81,11 +81,14 @@ static SwContentNode* GetContentNode(SwDoc* pDoc, SwNodeIndex& rIdx, bool bNext) return pCNd; } -static OUString lcl_getTypePath(const OUString& rType) +static OUString lcl_getTypePath(OUString& rType) { OUString aRet; - if (rType == "urn:tscp:names:baf:1.1") - aRet = "tscp/baf.rdf"; + if (rType.startsWith("urn:bails")) + { + rType = "urn:bails"; + aRet = "tscp/bails.rdf"; + } return aRet; } @@ -634,11 +637,7 @@ void SwFltControlStack::SetAttrInDoc(const SwPosition& rTmpPos, for (const std::pair<OUString, OUString>& rAttribute : pMark->GetAttributes()) { - sal_Int32 nIndex = rAttribute.first.indexOf('#'); - if (nIndex == -1) - continue; - - OUString aTypeNS = rAttribute.first.copy(0, nIndex); + OUString aTypeNS = rAttribute.first; OUString aMetadataFilePath = lcl_getTypePath(aTypeNS); if (aMetadataFilePath.isEmpty()) continue; diff --git a/sw/source/filter/ww8/docxattributeoutput.cxx b/sw/source/filter/ww8/docxattributeoutput.cxx index 2b9fded..6b4cade 100644 --- a/sw/source/filter/ww8/docxattributeoutput.cxx +++ b/sw/source/filter/ww8/docxattributeoutput.cxx @@ -1038,7 +1038,7 @@ void DocxAttributeOutput::EndParagraphProperties(const SfxItemSet& rParagraphMar // RDF metadata for this text node. SwTextNode* pTextNode = m_rExport.m_pCurPam->GetNode().GetTextNode(); - std::map<OUString, OUString> aStatements = SwRDFHelper::getTextNodeStatements("urn:tscp:names:baf:1.1", *pTextNode); + std::map<OUString, OUString> aStatements = SwRDFHelper::getTextNodeStatements("urn:bails", *pTextNode); if (!aStatements.empty()) { m_pSerializer->startElementNS(XML_w, XML_smartTag, diff --git a/sw/source/filter/ww8/wrtww8.cxx b/sw/source/filter/ww8/wrtww8.cxx index ae956e0..6503a68 100644 --- a/sw/source/filter/ww8/wrtww8.cxx +++ b/sw/source/filter/ww8/wrtww8.cxx @@ -1501,7 +1501,7 @@ void WW8Export::AppendAnnotationMarks(const SwTextNode& rNode, sal_Int32 nAktPos void WW8Export::AppendSmartTags(const SwTextNode& rTextNode) { - std::map<OUString, OUString> aStatements = SwRDFHelper::getTextNodeStatements("urn:tscp:names:baf:1.1", rTextNode); + std::map<OUString, OUString> aStatements = SwRDFHelper::getTextNodeStatements("urn:bails", rTextNode); if (!aStatements.empty()) { WW8_CP nCP = Fc2Cp(Strm().Tell()); diff --git a/writerfilter/source/dmapper/SmartTagHandler.cxx b/writerfilter/source/dmapper/SmartTagHandler.cxx index dc9f094..27f4e39 100644 --- a/writerfilter/source/dmapper/SmartTagHandler.cxx +++ b/writerfilter/source/dmapper/SmartTagHandler.cxx @@ -9,17 +9,21 @@ #include <SmartTagHandler.hxx> +#include <com/sun/star/rdf/Literal.hpp> #include <com/sun/star/rdf/URI.hpp> #include <ooxml/resourceids.hxx> namespace { -OUString lcl_getTypePath(const OUString& rType) +OUString lcl_getTypePath(OUString& rType) { OUString aRet; - if (rType == "urn:tscp:names:baf:1.1") - aRet = "tscp/baf.rdf"; + if (rType.startsWith("urn:bails")) + { + rType = "urn:bails"; + aRet = "tscp/bails.rdf"; + } return aRet; } } @@ -91,11 +95,7 @@ void SmartTagHandler::handle(const uno::Reference<text::XTextRange>& xParagraph) for (const std::pair<OUString, OUString>& rAttribute : m_aAttributes) { - sal_Int32 nIndex = rAttribute.first.indexOf('#'); - if (nIndex == -1) - continue; - - OUString aTypeNS = rAttribute.first.copy(0, nIndex); + OUString aTypeNS = rAttribute.first; OUString aMetadataFilePath = lcl_getTypePath(aTypeNS); if (aMetadataFilePath.isEmpty()) continue; @@ -112,7 +112,7 @@ void SmartTagHandler::handle(const uno::Reference<text::XTextRange>& xParagraph) } uno::Reference<rdf::XNamedGraph> xGraph = m_xDocumentMetadataAccess->getRDFRepository()->getGraph(xGraphName); uno::Reference<rdf::XURI> xKey = rdf::URI::create(m_xComponentContext, rAttribute.first); - uno::Reference<rdf::XURI> xValue = rdf::URI::create(m_xComponentContext, rAttribute.second); + uno::Reference<rdf::XLiteral> xValue = rdf::Literal::create(m_xComponentContext, rAttribute.second); xGraph->addStatement(xSubject, xKey, xValue); } _______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/libreoffice-commits