[Libreoffice-commits] libvisio.git: src/lib src/test
Miklos Vajna
vmiklos at collabora.co.uk
Mon Dec 22 01:45:22 PST 2014
src/lib/VSDXMetaData.cpp | 22 ++++++++++++++++++++++
src/lib/VSDXMetaData.h | 1 +
src/lib/tokens.txt | 1 +
src/test/data/fdo86664.vsdx |binary
src/test/importtest.cpp | 1 +
5 files changed, 25 insertions(+)
New commits:
commit e6a780adb90eb5122f03d4baeae3990972304bf5
Author: Miklos Vajna <vmiklos at collabora.co.uk>
Date: Mon Dec 22 10:40:25 2014 +0100
VSDX: import <dc:subject>
Change-Id: I8685be2883d3fa9719aafd0f1c1e928f863fb2ce
diff --git a/src/lib/VSDXMetaData.cpp b/src/lib/VSDXMetaData.cpp
index fafa998..697d003 100644
--- a/src/lib/VSDXMetaData.cpp
+++ b/src/lib/VSDXMetaData.cpp
@@ -38,6 +38,24 @@ void libvisio::VSDXMetaData::readTitle(xmlTextReaderPtr reader)
m_metaData.insert("dc:title", title);
}
+void libvisio::VSDXMetaData::readSubject(xmlTextReaderPtr reader)
+{
+ int ret = 1;
+ int tokenId = XML_TOKEN_INVALID;
+ int tokenType = -1;
+ librevenge::RVNGString subject;
+ do
+ {
+ ret = xmlTextReaderRead(reader);
+ tokenId = getElementToken(reader);
+ tokenType = xmlTextReaderNodeType(reader);
+ if (xmlTextReaderNodeType(reader) == XML_READER_TYPE_TEXT)
+ subject.append((const char *)xmlTextReaderConstValue(reader));
+ }
+ while ((XML_DC_SUBJECT != tokenId || XML_READER_TYPE_END_ELEMENT != tokenType) && 1 == ret);
+ m_metaData.insert("dc:subject", subject);
+}
+
void libvisio::VSDXMetaData::readCreated(xmlTextReaderPtr reader)
{
int ret = 1;
@@ -94,6 +112,10 @@ void libvisio::VSDXMetaData::readCoreProperties(xmlTextReaderPtr reader)
if (tokenType == XML_READER_TYPE_ELEMENT)
readTitle(reader);
break;
+ case XML_DC_SUBJECT:
+ if (tokenType == XML_READER_TYPE_ELEMENT)
+ readSubject(reader);
+ break;
case XML_DCTERMS_CREATED:
if (tokenType == XML_READER_TYPE_ELEMENT)
readCreated(reader);
diff --git a/src/lib/VSDXMetaData.h b/src/lib/VSDXMetaData.h
index 5ef98b8..f8a8f9c 100644
--- a/src/lib/VSDXMetaData.h
+++ b/src/lib/VSDXMetaData.h
@@ -31,6 +31,7 @@ private:
int getElementToken(xmlTextReaderPtr reader);
void readCoreProperties(xmlTextReaderPtr reader);
void readTitle(xmlTextReaderPtr reader);
+ void readSubject(xmlTextReaderPtr reader);
void readCreated(xmlTextReaderPtr reader);
void readModified(xmlTextReaderPtr reader);
diff --git a/src/lib/tokens.txt b/src/lib/tokens.txt
index 5bf651d..8e0db55 100644
--- a/src/lib/tokens.txt
+++ b/src/lib/tokens.txt
@@ -227,6 +227,7 @@ XForm
XForm1D
Y
cp:coreProperties
+dc:subject
dc:title
dcterms:created
dcterms:modified
diff --git a/src/test/data/fdo86664.vsdx b/src/test/data/fdo86664.vsdx
index bad6caa..1aafa80 100644
Binary files a/src/test/data/fdo86664.vsdx and b/src/test/data/fdo86664.vsdx differ
diff --git a/src/test/importtest.cpp b/src/test/importtest.cpp
index 0e83ed2..00ee34e 100644
--- a/src/test/importtest.cpp
+++ b/src/test/importtest.cpp
@@ -140,6 +140,7 @@ void ImportTest::testVsdxMetadataTitle()
m_doc = parse("fdo86664.vsdx", m_buffer);
// The setDocumentMetaData() call was missing, so the node did not exist.
assertXPath(m_doc, "/document/setDocumentMetaData", "title", "mytitle");
+ assertXPath(m_doc, "/document/setDocumentMetaData", "subject", "mysubject");
// Test <dcterms:created> and <dcterms:modified>.
assertXPath(m_doc, "/document/setDocumentMetaData", "creation-date", "2014-11-24T10:35:17Z");
assertXPath(m_doc, "/document/setDocumentMetaData", "date", "2014-11-24T10:41:22Z");
More information about the Libreoffice-commits
mailing list