From eb002ae30633c08d560e7833b8096967c4ef4d5e Mon Sep 17 00:00:00 2001 From: Veloman Yunkan Date: Thu, 2 Mar 2023 17:12:36 +0400 Subject: [PATCH] Deprecated Book::getLanguage() Introduced `Book::getCommaSeparatedLanguages()` instead. --- include/book.h | 3 ++- src/libxml_dumper.cpp | 4 ++-- src/manager.cpp | 2 +- src/opds_dumper.cpp | 2 +- test/book.cpp | 4 ++-- test/library.cpp | 8 ++++++-- test/manager.cpp | 2 +- 7 files changed, 15 insertions(+), 10 deletions(-) diff --git a/include/book.h b/include/book.h index dacab0776..70c3bae55 100644 --- a/include/book.h +++ b/include/book.h @@ -79,7 +79,8 @@ class Book bool isPathValid() const { return m_pathValid; } const std::string& getTitle() const { return m_title; } const std::string& getDescription() const { return m_description; } - const std::string& getLanguage() const { return m_language; } + DEPRECATED const std::string& getLanguage() const { return m_language; } + const std::string& getCommaSeparatedLanguages() const { return m_language; } const std::vector getLanguages() const; const std::string& getCreator() const { return m_creator; } const std::string& getPublisher() const { return m_publisher; } diff --git a/src/libxml_dumper.cpp b/src/libxml_dumper.cpp index 6dc884d24..722b9dac9 100644 --- a/src/libxml_dumper.cpp +++ b/src/libxml_dumper.cpp @@ -54,7 +54,7 @@ void LibXMLDumper::handleBook(Book book, pugi::xml_node root_node) { if (book.getOrigId().empty()) { ADD_ATTR_NOT_EMPTY(entry_node, "title", book.getTitle()); ADD_ATTR_NOT_EMPTY(entry_node, "description", book.getDescription()); - ADD_ATTR_NOT_EMPTY(entry_node, "language", book.getLanguage()); + ADD_ATTR_NOT_EMPTY(entry_node, "language", book.getCommaSeparatedLanguages()); 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()); @@ -97,7 +97,7 @@ void LibXMLDumper::handleBookmark(Bookmark bookmark, pugi::xml_node root_node) { auto book = library->getBookByIdThreadSafe(bookmark.getBookId()); ADD_TEXT_ENTRY(book_node, "id", book.getId()); ADD_TEXT_ENTRY(book_node, "title", book.getTitle()); - ADD_TEXT_ENTRY(book_node, "language", book.getLanguage()); + ADD_TEXT_ENTRY(book_node, "language", book.getCommaSeparatedLanguages()); ADD_TEXT_ENTRY(book_node, "date", book.getDate()); } catch (...) { ADD_TEXT_ENTRY(book_node, "id", bookmark.getBookId()); diff --git a/src/manager.cpp b/src/manager.cpp index 3f24fad17..55d9eff70 100644 --- a/src/manager.cpp +++ b/src/manager.cpp @@ -238,7 +238,7 @@ std::string Manager::addBookFromPathAndGetId(const std::string& pathToOpen, } if (!checkMetaData - || (checkMetaData && !book.getTitle().empty() && !book.getLanguage().empty() + || (!book.getTitle().empty() && !book.getLanguages().empty() && !book.getDate().empty())) { book.setUrl(url); manipulator->addBookToLibrary(book); diff --git a/src/opds_dumper.cpp b/src/opds_dumper.cpp index 98b233be7..1104029ac 100644 --- a/src/opds_dumper.cpp +++ b/src/opds_dumper.cpp @@ -81,7 +81,7 @@ std::string fullEntryXML(const Book& book, const std::string& rootLocation, cons {"name", book.getName()}, {"title", book.getTitle()}, {"description", book.getDescription()}, - {"language", book.getLanguage()}, + {"language", book.getCommaSeparatedLanguages()}, {"content_id", urlEncode(contentId)}, {"updated", bookDate}, // XXX: this should be the entry update datetime {"book_date", bookDate}, diff --git a/test/book.cpp b/test/book.cpp index 9b7200ae2..55de4e2df 100644 --- a/test/book.cpp +++ b/test/book.cpp @@ -203,14 +203,14 @@ TEST(BookTest, getLanguages) { const kiwix::Book book = makeBook(R"(id="abcd" language="fra")"); - EXPECT_EQ(book.getLanguage(), "fra"); + EXPECT_EQ(book.getCommaSeparatedLanguages(), "fra"); EXPECT_EQ(book.getLanguages(), Langs{ "fra" }); } { const kiwix::Book book = makeBook(R"(id="abcd" language="eng,ong,ing")"); - EXPECT_EQ(book.getLanguage(), "eng,ong,ing"); + EXPECT_EQ(book.getCommaSeparatedLanguages(), "eng,ong,ing"); EXPECT_EQ(book.getLanguages(), Langs({ "eng", "ong", "ing" })); } } diff --git a/test/library.cpp b/test/library.cpp index f0100db19..4fb4b7dd1 100644 --- a/test/library.cpp +++ b/test/library.cpp @@ -234,6 +234,8 @@ const char sampleLibraryXML[] = R"( namespace { +typedef std::vector Langs; + TEST(LibraryOpdsImportTest, allInOne) { kiwix::Library lib; @@ -248,7 +250,8 @@ TEST(LibraryOpdsImportTest, allInOne) EXPECT_EQ(book1.getTitle(), "Encyclopédie de la Tunisie"); EXPECT_EQ(book1.getName(), "wikipedia_fr_tunisie_novid_2018-10"); EXPECT_EQ(book1.getFlavour(), "unforgettable"); - EXPECT_EQ(book1.getLanguage(), "fra"); + EXPECT_EQ(book1.getLanguages(), Langs{ "fra" }); + EXPECT_EQ(book1.getCommaSeparatedLanguages(), "fra"); EXPECT_EQ(book1.getDate(), "8 Oct 2018"); EXPECT_EQ(book1.getDescription(), "Le meilleur de Wikipédia sur la Tunisie"); EXPECT_EQ(book1.getCreator(), "Wikipedia"); @@ -272,7 +275,8 @@ TEST(LibraryOpdsImportTest, allInOne) EXPECT_EQ(book2.getTitle(), "TED talks - Business"); EXPECT_EQ(book2.getName(), ""); EXPECT_EQ(book2.getFlavour(), ""); - EXPECT_EQ(book2.getLanguage(), "eng"); + EXPECT_EQ(book2.getLanguages(), Langs{ "eng" }); + EXPECT_EQ(book2.getCommaSeparatedLanguages(), "eng"); EXPECT_EQ(book2.getDate(), "2018-07-23"); EXPECT_EQ(book2.getDescription(), "Ideas worth spreading"); EXPECT_EQ(book2.getCreator(), "TED"); diff --git a/test/manager.cpp b/test/manager.cpp index 34774f630..e2b600644 100644 --- a/test/manager.cpp +++ b/test/manager.cpp @@ -57,7 +57,7 @@ TEST(ManagerTest, readXml) EXPECT_EQ("https://example.com/zimfiles/unittest.zim", book.getUrl()); EXPECT_EQ("Unit Test", book.getTitle()); EXPECT_EQ("Wikipedia articles about unit testing", book.getDescription()); - EXPECT_EQ("eng", book.getLanguage()); + EXPECT_EQ("eng", book.getCommaSeparatedLanguages()); EXPECT_EQ("Wikipedia", book.getCreator()); EXPECT_EQ("Kiwix", book.getPublisher()); EXPECT_EQ("2020-03-31", book.getDate());