.. _program_listing_file_include_manager.h: Program Listing for File manager.h ================================== |exhale_lsh| :ref:`Return to documentation for file ` (``include/manager.h``) .. |exhale_lsh| unicode:: U+021B0 .. UPWARDS ARROW WITH TIP LEFTWARDS .. code-block:: cpp /* * Copyright 2011 Emmanuel Engelhart * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 3 of the License, or * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, * MA 02110-1301, USA. */ #ifndef KIWIX_MANAGER_H #define KIWIX_MANAGER_H #include "book.h" #include "library.h" #include #include #include namespace pugi { class xml_document; } namespace kiwix { class LibraryManipulator { public: // functions explicit LibraryManipulator(LibraryPtr library); virtual ~LibraryManipulator(); LibraryPtr getLibrary() const { return library; } bool addBookToLibrary(const Book& book); void addBookmarkToLibrary(const Bookmark& bookmark); uint32_t removeBooksNotUpdatedSince(Library::Revision rev); protected: // overrides virtual void bookWasAddedToLibrary(const Book& book); virtual void bookmarkWasAddedToLibrary(const Bookmark& bookmark); virtual void booksWereRemovedFromLibrary(); private: // data LibraryPtr library; }; class Manager { public: // types typedef std::vector Paths; public: // functions explicit Manager(LibraryManipulator manipulator); explicit Manager(LibraryPtr library); bool readFile(const std::string& path, bool readOnly = true, bool trustLibrary = true); void reload(const Paths& paths); bool readXml(const std::string& xml, const bool readOnly = true, const std::string& libraryPath = "", bool trustLibrary = true); bool readOpds(const std::string& content, const std::string& urlHost); bool readBookmarkFile(const std::string& path); std::string addBookFromPathAndGetId(const std::string& pathToOpen, const std::string& pathToSave = "", const std::string& url = "", const bool checkMetaData = false); bool addBookFromPath(const std::string& pathToOpen, const std::string& pathToSave = "", const std::string& url = "", const bool checkMetaData = false); void addBooksFromDirectory(const std::string& path, const bool verboseFlag = false); std::string writableLibraryPath; bool m_hasSearchResult = false; uint64_t m_totalBooks = 0; uint64_t m_startIndex = 0; uint64_t m_itemsPerPage = 0; protected: kiwix::LibraryManipulator manipulator; bool readBookFromPath(const std::string& path, Book* book); bool parseXmlDom(const pugi::xml_document& doc, bool readOnly, const std::string& libraryPath, bool trustLibrary); bool parseOpdsDom(const pugi::xml_document& doc, const std::string& urlHost); }; } #endif