summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMiklos Vajna <vmiklos@collabora.co.uk>2014-11-25 12:08:53 +0100
committerMiklos Vajna <vmiklos@collabora.co.uk>2014-11-25 12:11:57 +0100
commit04735e030c94941e956423e73214ac04243bcefa (patch)
treee19807cd523df7ceef8b15af9b7e395dc71b9921
parent2060d364bc0f7df97b864bf01fc5a27da12061c3 (diff)
fdo#86664 VSDX: import <dcterms:created> and <dcterms:modified>
Change-Id: I7ff5f87729419853146d941903f88f9277106b27
-rw-r--r--src/lib/VSDXMetaData.cpp44
-rw-r--r--src/lib/VSDXMetaData.h2
-rw-r--r--src/lib/tokens.txt2
3 files changed, 48 insertions, 0 deletions
diff --git a/src/lib/VSDXMetaData.cpp b/src/lib/VSDXMetaData.cpp
index 3cbd61d..19c9709 100644
--- a/src/lib/VSDXMetaData.cpp
+++ b/src/lib/VSDXMetaData.cpp
@@ -37,6 +37,42 @@ void libvisio::VSDXMetaData::readTitle(xmlTextReaderPtr reader)
m_metaData.insert("dc:title", title);
}
+void libvisio::VSDXMetaData::readCreated(xmlTextReaderPtr reader)
+{
+ int ret = 1;
+ int tokenId = XML_TOKEN_INVALID;
+ int tokenType = -1;
+ librevenge::RVNGString created;
+ do
+ {
+ ret = xmlTextReaderRead(reader);
+ tokenId = getElementToken(reader);
+ tokenType = xmlTextReaderNodeType(reader);
+ if (xmlTextReaderNodeType(reader) == XML_READER_TYPE_TEXT)
+ created.append((const char *)xmlTextReaderConstValue(reader));
+ }
+ while ((XML_DCTERMS_CREATED != tokenId || XML_READER_TYPE_END_ELEMENT != tokenType) && 1 == ret);
+ m_metaData.insert("meta:creation-date", created);
+}
+
+void libvisio::VSDXMetaData::readModified(xmlTextReaderPtr reader)
+{
+ int ret = 1;
+ int tokenId = XML_TOKEN_INVALID;
+ int tokenType = -1;
+ librevenge::RVNGString modified;
+ do
+ {
+ ret = xmlTextReaderRead(reader);
+ tokenId = getElementToken(reader);
+ tokenType = xmlTextReaderNodeType(reader);
+ if (xmlTextReaderNodeType(reader) == XML_READER_TYPE_TEXT)
+ modified.append((const char *)xmlTextReaderConstValue(reader));
+ }
+ while ((XML_DCTERMS_MODIFIED != tokenId || XML_READER_TYPE_END_ELEMENT != tokenType) && 1 == ret);
+ m_metaData.insert("dc:date", modified);
+}
+
void libvisio::VSDXMetaData::readCoreProperties(xmlTextReaderPtr reader)
{
int ret = 1;
@@ -57,6 +93,14 @@ void libvisio::VSDXMetaData::readCoreProperties(xmlTextReaderPtr reader)
if (tokenType == XML_READER_TYPE_ELEMENT)
readTitle(reader);
break;
+ case XML_DCTERMS_CREATED:
+ if (tokenType == XML_READER_TYPE_ELEMENT)
+ readCreated(reader);
+ break;
+ case XML_DCTERMS_MODIFIED:
+ if (tokenType == XML_READER_TYPE_ELEMENT)
+ readModified(reader);
+ break;
default:
break;
}
diff --git a/src/lib/VSDXMetaData.h b/src/lib/VSDXMetaData.h
index 15d22c1..5ef98b8 100644
--- a/src/lib/VSDXMetaData.h
+++ b/src/lib/VSDXMetaData.h
@@ -31,6 +31,8 @@ private:
int getElementToken(xmlTextReaderPtr reader);
void readCoreProperties(xmlTextReaderPtr reader);
void readTitle(xmlTextReaderPtr reader);
+ void readCreated(xmlTextReaderPtr reader);
+ void readModified(xmlTextReaderPtr reader);
librevenge::RVNGPropertyList m_metaData;
};
diff --git a/src/lib/tokens.txt b/src/lib/tokens.txt
index 544bab4..5bf651d 100644
--- a/src/lib/tokens.txt
+++ b/src/lib/tokens.txt
@@ -228,3 +228,5 @@ XForm1D
Y
cp:coreProperties
dc:title
+dcterms:created
+dcterms:modified