From a756e7f8f32f9c509b410b4791915833af808b93 Mon Sep 17 00:00:00 2001 From: Matthieu Gautier Date: Thu, 30 Jan 2020 14:51:37 +0100 Subject: [PATCH] Add flavour attribute to book. Fix #259 Fix kiwix/kiwix-tools#316 --- include/book.h | 3 +++ src/book.cpp | 5 +++++ src/libxml_dumper.cpp | 1 + src/opds_dumper.cpp | 1 + src/wrapper/java/book.cpp | 1 + src/wrapper/java/org/kiwix/kiwixlib/Book.java | 1 + 6 files changed, 12 insertions(+) diff --git a/include/book.h b/include/book.h index 7e3bb0cf9..8d137f302 100644 --- a/include/book.h +++ b/include/book.h @@ -62,6 +62,7 @@ class Book const std::string& getTags() const { return m_tags; } std::string getTagStr(const std::string& tagName) const; bool getTagBool(const std::string& tagName) const; + const std::string& getFlavour() const { return m_flavour; } const std::string& getOrigId() const { return m_origId; } const uint64_t& getArticleCount() const { return m_articleCount; } const uint64_t& getMediaCount() const { return m_mediaCount; } @@ -83,6 +84,7 @@ class Book void setDate(const std::string& date) { m_date = date; } void setUrl(const std::string& url) { m_url = url; } void setName(const std::string& name) { m_name = name; } + void setFlavour(const std::string& flavour) { m_flavour = flavour; } void setTags(const std::string& tags) { m_tags = tags; } void setOrigId(const std::string& origId) { m_origId = origId; } void setArticleCount(uint64_t articleCount) { m_articleCount = articleCount; } @@ -105,6 +107,7 @@ class Book std::string m_date; std::string m_url; std::string m_name; + std::string m_flavour; std::string m_tags; std::string m_origId; uint64_t m_articleCount; diff --git a/src/book.cpp b/src/book.cpp index 103535e60..8b2f30db7 100644 --- a/src/book.cpp +++ b/src/book.cpp @@ -59,6 +59,7 @@ bool Book::update(const kiwix::Book& other) m_date = other.m_date; m_url = other.m_url; m_name = other.m_name; + m_flavour = other.m_flavour; m_tags = other.m_tags; m_origId = other.m_origId; m_articleCount = other.m_articleCount; @@ -85,6 +86,7 @@ void Book::update(const kiwix::Reader& reader) m_publisher = reader.getPublisher(); m_date = reader.getDate(); m_name = reader.getName(); + m_flavour = reader.getFlavour(); m_tags = reader.getTags(); m_origId = reader.getOrigId(); m_articleCount = reader.getArticleCount(); @@ -112,6 +114,7 @@ void Book::updateFromXml(const pugi::xml_node& node, const std::string& baseDir) m_date = ATTR("date"); m_url = ATTR("url"); m_name = ATTR("name"); + m_flavour = ATTR("flavour"); m_tags = ATTR("tags"); m_origId = ATTR("origId"); m_articleCount = strtoull(ATTR("articleCount"), 0, 0); @@ -142,6 +145,7 @@ void Book::updateFromOpds(const pugi::xml_node& node, const std::string& urlHost if (!m_id.compare(0, 9, "urn:uuid:")) { m_id.erase(0, 9); } + // No path on opds. m_title = VALUE("title"); m_description = VALUE("summary"); m_language = VALUE("language"); @@ -149,6 +153,7 @@ void Book::updateFromOpds(const pugi::xml_node& node, const std::string& urlHost m_publisher = node.child("publisher").child("name").child_value(); m_date = fromOpdsDate(VALUE("updated")); m_name = VALUE("name"); + m_flavour = VALUE("flavour"); m_tags = VALUE("tags"); for(auto linkNode = node.child("link"); linkNode; linkNode = linkNode.next_sibling("link")) { diff --git a/src/libxml_dumper.cpp b/src/libxml_dumper.cpp index 56ec4b44d..3c0cefab9 100644 --- a/src/libxml_dumper.cpp +++ b/src/libxml_dumper.cpp @@ -58,6 +58,7 @@ void LibXMLDumper::handleBook(Book book, pugi::xml_node root_node) { ADD_ATTR_NOT_EMPTY(entry_node, "creator", book.getCreator()); ADD_ATTR_NOT_EMPTY(entry_node, "publisher", book.getPublisher()); ADD_ATTR_NOT_EMPTY(entry_node, "name", book.getName()); + ADD_ATTR_NOT_EMPTY(entry_node, "flavour", book.getFlavour()); ADD_ATTR_NOT_EMPTY(entry_node, "tags", book.getTags()); ADD_ATTR_NOT_EMPTY(entry_node, "faviconMimeType", book.getFaviconMimeType()); ADD_ATTR_NOT_EMPTY(entry_node, "faviconUrl", book.getFaviconUrl()); diff --git a/src/opds_dumper.cpp b/src/opds_dumper.cpp index 04cdb5436..dd584e29f 100644 --- a/src/opds_dumper.cpp +++ b/src/opds_dumper.cpp @@ -76,6 +76,7 @@ pugi::xml_node OPDSDumper::handleBook(Book book, pugi::xml_node root_node) { ADD_TEXT_ENTRY(entry_node, "language", book.getLanguage()); ADD_TEXT_ENTRY(entry_node, "updated", gen_date_from_yyyy_mm_dd(book.getDate())); ADD_TEXT_ENTRY(entry_node, "name", book.getName()); + ADD_TEXT_ENTRY(entry_node, "flavour", book.getFlavour()); ADD_TEXT_ENTRY(entry_node, "tags", book.getTags()); ADD_TEXT_ENTRY(entry_node, "icon", rootLocation + "/meta?name=favicon&content=" + book.getHumanReadableIdFromPath()); diff --git a/src/wrapper/java/book.cpp b/src/wrapper/java/book.cpp index 77cf55dcd..9f7df5b73 100644 --- a/src/wrapper/java/book.cpp +++ b/src/wrapper/java/book.cpp @@ -58,6 +58,7 @@ GETTER(jstring, getPublisher) GETTER(jstring, getDate) GETTER(jstring, getUrl) GETTER(jstring, getName) +GETTER(jstring, getFlavour) GETTER(jstring, getTags) GETTER(jlong, getArticleCount) GETTER(jlong, getMediaCount) diff --git a/src/wrapper/java/org/kiwix/kiwixlib/Book.java b/src/wrapper/java/org/kiwix/kiwixlib/Book.java index f4f45d68e..3f00956a9 100644 --- a/src/wrapper/java/org/kiwix/kiwixlib/Book.java +++ b/src/wrapper/java/org/kiwix/kiwixlib/Book.java @@ -19,6 +19,7 @@ public class Book public native String getDate(); public native String getUrl(); public native String getName(); + public native String getFlavour(); public native String getTags(); /** * Return the value associated to the tag tagName