diff options
author | Michele Calgaro <[email protected]> | 2024-06-07 23:30:05 +0900 |
---|---|---|
committer | Michele Calgaro <[email protected]> | 2024-06-07 23:30:05 +0900 |
commit | 17b259df9cb6b28779d4881b2b6c805ee2e48eea (patch) | |
tree | 5ed61937459cb7081089111b0242c01ec178f1f3 /fbreader/src/database/booksdb/runnables | |
parent | 1cba8bce178eb2d6719c6f7f21e2c9352c5513a6 (diff) | |
download | tde-ebook-reader-17b259df9cb6b28779d4881b2b6c805ee2e48eea.tar.gz tde-ebook-reader-17b259df9cb6b28779d4881b2b6c805ee2e48eea.zip |
Rename to tde-ebook-reader
Signed-off-by: Michele Calgaro <[email protected]>
Diffstat (limited to 'fbreader/src/database/booksdb/runnables')
13 files changed, 0 insertions, 786 deletions
diff --git a/fbreader/src/database/booksdb/runnables/ClearBooksDBRunnable.cpp b/fbreader/src/database/booksdb/runnables/ClearBooksDBRunnable.cpp deleted file mode 100644 index c0c9063..0000000 --- a/fbreader/src/database/booksdb/runnables/ClearBooksDBRunnable.cpp +++ /dev/null @@ -1,46 +0,0 @@ -/* - * Copyright (C) 2009-2012 Geometer Plus <[email protected]> - * - * 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 2 of the License, or - * (at your option) 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. - */ - - - -#include "../DBRunnables.h" -#include "../../sqldb/implsqlite/SQLiteFactory.h" - -bool ClearBooksDBRunnable::run() { - shared_ptr<DBCommand> cmd; - - cmd = SQLiteFactory::createCommand(BooksDBQuery::CLEAR_DATABASE, myConnection); - if (!cmd->execute()) { - return false; - } - - cmd = SQLiteFactory::createCommand(BooksDBQuery::INIT_DATABASE, myConnection); - if (!cmd->execute()) { - return false; - } - - cmd = SQLiteFactory::createCommand(BooksDBQuery::SECOND_INIT_DATABASE, myConnection); - if (!cmd->execute()) { - return false; - } - - return true; -} - - diff --git a/fbreader/src/database/booksdb/runnables/DeleteBookRunnable.cpp b/fbreader/src/database/booksdb/runnables/DeleteBookRunnable.cpp deleted file mode 100644 index e9e2c14..0000000 --- a/fbreader/src/database/booksdb/runnables/DeleteBookRunnable.cpp +++ /dev/null @@ -1,37 +0,0 @@ -/* - * Copyright (C) 2009-2012 Geometer Plus <[email protected]> - * - * 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 2 of the License, or - * (at your option) 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. - */ - -#include "../DBRunnables.h" -#include "../../sqldb/implsqlite/SQLiteFactory.h" - -DeleteBookRunnable::DeleteBookRunnable(DBConnection &connection) { - myFindFileId = new FindFileIdRunnable(connection); - myDeleteFile = SQLiteFactory::createCommand(BooksDBQuery::DELETE_FILE, connection, "@file_id", DBValue::DBINT); -} - -bool DeleteBookRunnable::run() { - myFindFileId->setFileName(myFileName, true); - if (!myFindFileId->run()) { - return false; - } - - (DBIntValue &) *myDeleteFile->parameter("@file_id").value() = myFindFileId->fileId(); - return myDeleteFile->execute(); -} - diff --git a/fbreader/src/database/booksdb/runnables/DeleteFileEntriesRunnable.cpp b/fbreader/src/database/booksdb/runnables/DeleteFileEntriesRunnable.cpp deleted file mode 100644 index 065a4c2..0000000 --- a/fbreader/src/database/booksdb/runnables/DeleteFileEntriesRunnable.cpp +++ /dev/null @@ -1,60 +0,0 @@ -/* - * Copyright (C) 2009-2012 Geometer Plus <[email protected]> - * - * 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 2 of the License, or - * (at your option) 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. - */ - -#include "../DBRunnables.h" -#include "../../sqldb/implsqlite/SQLiteFactory.h" - -DeleteFileEntriesRunnable::DeleteFileEntriesRunnable(DBConnection &connection) { - myDeleteFileEntries = SQLiteFactory::createCommand(BooksDBQuery::DELETE_FILE_ENTRIES, connection, "@file_id", DBValue::DBINT); - myLoadFileEntryIds = SQLiteFactory::createCommand(BooksDBQuery::LOAD_FILE_ENTRY_IDS, connection, "@file_id", DBValue::DBINT); -} - -bool DeleteFileEntriesRunnable::run() { - return doDelete(myFileId); -} - -bool DeleteFileEntriesRunnable::doDelete(int fileId) { - (DBIntValue &) *myLoadFileEntryIds->parameter("@file_id").value() = fileId; - shared_ptr<DBDataReader> reader = myLoadFileEntryIds->executeReader(); - if (reader.isNull()) { - return false; - } - - std::vector<int> fileIds; - while (reader->next()) { - if (reader->type(0) != DBValue::DBINT /* file_id */ ) { - reader->close(); - return false; - } - fileIds.push_back(reader->intValue(0)); - } - reader->close(); - - if (fileIds.empty()) { - return true; - } - for (std::vector<int>::const_iterator it = fileIds.begin(); it != fileIds.end(); ++it) { - if (!doDelete(*it)) { - return false; - } - } - (DBIntValue &) *myDeleteFileEntries->parameter("@file_id").value() = fileId; - return myDeleteFileEntries->execute(); -} - diff --git a/fbreader/src/database/booksdb/runnables/FindFileIdRunnable.cpp b/fbreader/src/database/booksdb/runnables/FindFileIdRunnable.cpp deleted file mode 100644 index 4461c4f..0000000 --- a/fbreader/src/database/booksdb/runnables/FindFileIdRunnable.cpp +++ /dev/null @@ -1,123 +0,0 @@ -/* - * Copyright (C) 2009-2012 Geometer Plus <[email protected]> - * - * 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 2 of the License, or - * (at your option) 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. - */ - -#include <ZLibrary.h> -#include <ZLFile.h> - -#include "../DBRunnables.h" -#include "../../sqldb/implsqlite/SQLiteFactory.h" - -static const std::string FIND_FILE_ID = - "SELECT file_id FROM Files" \ - " WHERE name = @name AND coalesce(parent_id, 0) = @parent_id;"; - -static const std::string ADD_FILE = - "INSERT INTO Files (name, parent_id, size)" \ - " VALUES(@name, nullif(@parent_id, 0), nullif(@size, 0));" \ - " SELECT last_insert_rowid() AS file_id;"; - -FindFileIdRunnable::FindFileIdRunnable(DBConnection &connection) { - myFindFileId = SQLiteFactory::createCommand(FIND_FILE_ID, connection, "@name", DBValue::DBTEXT, "@parent_id", DBValue::DBINT); - myAddFile = SQLiteFactory::createCommand(ADD_FILE, connection, "@name", DBValue::DBTEXT, "@parent_id", DBValue::DBINT, "@size", DBValue::DBINT); -} - -bool FindFileIdRunnable::run() { - const std::string resolvedPath = ZLFile(myFileName).resolvedPath(); - const std::string physPath = ZLFile(resolvedPath).physicalFilePath(); - const std::string dirName = physPath.substr(0, physPath.rfind(ZLibrary::FileNameDelimiter)); - - DBTextValue &findName = (DBTextValue &) *myFindFileId->parameter("@name").value(); - DBIntValue &findParent = (DBIntValue &) *myFindFileId->parameter("@parent_id").value(); - - DBTextValue &addName = (DBTextValue &) *myAddFile->parameter("@name").value(); - DBIntValue &addParent = (DBIntValue &) *myAddFile->parameter("@parent_id").value(); - ((DBIntValue &) *myAddFile->parameter("@size").value()) = 0; - - std::size_t index = dirName.length() + 1; - findName = dirName; - findParent = 0; - while (true) { - shared_ptr<DBValue> physId = myFindFileId->executeScalar(); - if (physId.isNull() || physId->type() != DBValue::DBINT || ((DBIntValue &) *physId).value() == 0) { - if (!myAdd) { - return false; - } - addName = findName.value(); - addParent = findParent.value(); - physId = myAddFile->executeScalar(); - if (physId.isNull() || physId->type() != DBValue::DBINT || ((DBIntValue &) *physId).value() == 0) { - return false; - } - } - if (index == 0) { - myFileId = ((DBIntValue &) *physId).value(); - return true; - } - std::size_t index2 = resolvedPath.find(BooksDBQuery::ArchiveEntryDelimiter, index); - findName = resolvedPath.substr(index, index2 - index); - index = index2 + 1; - findParent = ((DBIntValue &) *physId).value(); - } -} - -void FindFileIdRunnable::setFileName(const std::string &fileName, bool add) { - myFileName = fileName; - myAdd = add; - myFileId = 0; -} - -int FindFileIdRunnable::fileId() const { - return myFileId; -} - -SaveFileEntriesRunnable::SaveFileEntriesRunnable(DBConnection &connection) { - myAddFile = SQLiteFactory::createCommand(ADD_FILE, connection, "@name", DBValue::DBTEXT, "@parent_id", DBValue::DBINT, "@size", DBValue::DBINT); - - myFindFileId = new FindFileIdRunnable(connection); - myDeleteFileEntries = new DeleteFileEntriesRunnable(connection); -} - -bool SaveFileEntriesRunnable::run() { - myFindFileId->setFileName(myFileName, true); - if (!myFindFileId->run()) { - return false; - } - - myDeleteFileEntries->setFileId(myFindFileId->fileId()); - if (!myDeleteFileEntries->run()) { - return false; - } - - DBTextValue &addName = (DBTextValue &) *myAddFile->parameter("@name").value(); - ((DBIntValue &) *myAddFile->parameter("@parent_id").value()) = myFindFileId->fileId(); - ((DBIntValue &) *myAddFile->parameter("@size").value()) = 0; - - for (std::vector<std::string>::const_iterator it = myEntries.begin(); it != myEntries.end(); ++it) { - const std::string &entry = (*it); - if (entry.empty()) { - continue; - } - addName = entry; - if (!myAddFile->execute()) { - return false; - } - } - return true; -} - diff --git a/fbreader/src/database/booksdb/runnables/InitBooksDBRunnable.cpp b/fbreader/src/database/booksdb/runnables/InitBooksDBRunnable.cpp deleted file mode 100644 index b8a4b01..0000000 --- a/fbreader/src/database/booksdb/runnables/InitBooksDBRunnable.cpp +++ /dev/null @@ -1,40 +0,0 @@ -/* - * Copyright (C) 2009-2012 Geometer Plus <[email protected]> - * - * 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 2 of the License, or - * (at your option) 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. - */ - - - -#include "../DBRunnables.h" -#include "../../sqldb/implsqlite/SQLiteFactory.h" - -bool InitBooksDBRunnable::run() { - shared_ptr<DBCommand> cmd; - cmd = SQLiteFactory::createCommand(BooksDBQuery::INIT_DATABASE, myConnection); - if (!cmd->execute()) { - return false; - } - - cmd = SQLiteFactory::createCommand(BooksDBQuery::SECOND_INIT_DATABASE, myConnection); - if (!cmd->execute()) { - return false; - } - - return true; -} - - diff --git a/fbreader/src/database/booksdb/runnables/LoadFileEntriesRunnable.cpp b/fbreader/src/database/booksdb/runnables/LoadFileEntriesRunnable.cpp deleted file mode 100644 index 3668b83..0000000 --- a/fbreader/src/database/booksdb/runnables/LoadFileEntriesRunnable.cpp +++ /dev/null @@ -1,68 +0,0 @@ -/* - * Copyright (C) 2009-2012 Geometer Plus <[email protected]> - * - * 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 2 of the License, or - * (at your option) 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. - */ - -#include "../DBRunnables.h" -#include "../../sqldb/implsqlite/SQLiteFactory.h" - -LoadFileEntriesRunnable::LoadFileEntriesRunnable(DBConnection &connection) { - myLoadFileEntries = SQLiteFactory::createCommand(BooksDBQuery::LOAD_FILE_ENTRIES, connection, "@file_id", DBValue::DBINT); - - myFindFileId = new FindFileIdRunnable(connection); -} - -bool LoadFileEntriesRunnable::run() { - DBCommand &cmd = *myLoadFileEntries; - - myFindFileId->setFileName(myFileName); - if (!myFindFileId->run()) { - return false; - } - ((DBIntValue &) *cmd.parameter("@file_id").value()) = myFindFileId->fileId(); - - shared_ptr<DBDataReader> reader = cmd.executeReader(); - - if (reader.isNull()) { - return false; - } - - myEntries.clear(); - - bool res = true; - while (reader->next()) { - if (reader->type(0) != DBValue::DBTEXT /* name */) { - res = false; - continue; - } - myEntries.push_back( - myFileName + BooksDBQuery::ArchiveEntryDelimiter + - reader->textValue(0, std::string()) - ); - } - reader->close(); - return res; -} - -void LoadFileEntriesRunnable::setFileName(const std::string &fileName) { - myFileName = fileName; -} - -void LoadFileEntriesRunnable::collectEntries(std::vector<std::string> &entries) { - myEntries.swap(entries); - myEntries.clear(); -} diff --git a/fbreader/src/database/booksdb/runnables/LoadRecentBooksRunnable.cpp b/fbreader/src/database/booksdb/runnables/LoadRecentBooksRunnable.cpp deleted file mode 100644 index 06e6f79..0000000 --- a/fbreader/src/database/booksdb/runnables/LoadRecentBooksRunnable.cpp +++ /dev/null @@ -1,51 +0,0 @@ -/* - * Copyright (C) 2009-2012 Geometer Plus <[email protected]> - * - * 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 2 of the License, or - * (at your option) 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. - */ - -#include "../DBRunnables.h" -#include "../../../library/Author.h" -#include "../../sqldb/implsqlite/SQLiteFactory.h" - -LoadRecentBooksRunnable::LoadRecentBooksRunnable(DBConnection &connection) { - myLoadRecentBooks = SQLiteFactory::createCommand(BooksDBQuery::LOAD_RECENT_BOOKS, connection); -} - -bool LoadRecentBooksRunnable::run() { - shared_ptr<DBDataReader> reader = myLoadRecentBooks->executeReader(); - if (reader.isNull()) { - return false; - } - myFileIds.clear(); - - bool res = true; - while (reader->next()) { - if (reader->type(0) != DBValue::DBINT /* file_id */) { - res = false; - continue; - } - const int fileId = reader->intValue(0); - myFileIds.push_back(fileId); - } - reader->close(); - return res; -} - -void LoadRecentBooksRunnable::collectFileIds(std::vector<int> &fileIds) { - myFileIds.swap(fileIds); - myFileIds.clear(); -} diff --git a/fbreader/src/database/booksdb/runnables/SaveAuthorsRunnable.cpp b/fbreader/src/database/booksdb/runnables/SaveAuthorsRunnable.cpp deleted file mode 100644 index 7336a74..0000000 --- a/fbreader/src/database/booksdb/runnables/SaveAuthorsRunnable.cpp +++ /dev/null @@ -1,75 +0,0 @@ -/* - * Copyright (C) 2009-2012 Geometer Plus <[email protected]> - * - * 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 2 of the License, or - * (at your option) 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. - */ - -#include <algorithm> - -#include "../DBRunnables.h" -#include "../../../library/Book.h" -#include "../../../library/Author.h" -#include "../../sqldb/implsqlite/SQLiteFactory.h" - -SaveAuthorsRunnable::SaveAuthorsRunnable(DBConnection &connection) { - mySetBookAuthor = SQLiteFactory::createCommand(BooksDBQuery::SET_BOOK_AUTHOR, connection, "@author_id", DBValue::DBINT, "@book_id", DBValue::DBINT, "@author_index", DBValue::DBINT); - myTrimBookAuthors = SQLiteFactory::createCommand(BooksDBQuery::TRIM_BOOK_AUTHORS, connection, "@book_id", DBValue::DBINT, "@authors_number", DBValue::DBINT); - myFindAuthorId = SQLiteFactory::createCommand(BooksDBQuery::FIND_AUTHOR_ID, connection, "@name", DBValue::DBTEXT, "@sort_key", DBValue::DBTEXT); - myAddAuthor = SQLiteFactory::createCommand(BooksDBQuery::ADD_AUTHOR, connection, "@name", DBValue::DBTEXT, "@sort_key", DBValue::DBTEXT); -} - -bool SaveAuthorsRunnable::run() { - if (myBook->bookId() == 0) { - return false; - } - const AuthorList &bookAuthors = myBook->authors(); // save link to vector - - ((DBIntValue &) *mySetBookAuthor->parameter("@book_id").value()) = myBook->bookId(); - DBIntValue &setAuthorId = (DBIntValue &) *mySetBookAuthor->parameter("@author_id").value(); - DBIntValue &setAuthorIndex = (DBIntValue &) *mySetBookAuthor->parameter("@author_index").value(); - DBTextValue &findAuthor = (DBTextValue &) *myFindAuthorId->parameter("@name").value(); - DBTextValue &findSortKey = (DBTextValue &) *myFindAuthorId->parameter("@sort_key").value(); - DBTextValue &addAuthor = (DBTextValue &) *myAddAuthor->parameter("@name").value(); - DBTextValue &addSortKey = (DBTextValue &) *myAddAuthor->parameter("@sort_key").value(); - - int index = 0; - for (AuthorList::const_iterator it = bookAuthors.begin(); it != bookAuthors.end(); ++it) { - const Author &author = **it; - findAuthor.setValue( author.name() ); - findSortKey.setValue( author.sortKey() ); - shared_ptr<DBValue> tableAuthorId = myFindAuthorId->executeScalar(); - if (tableAuthorId.isNull() || tableAuthorId->type() != DBValue::DBINT || ((DBIntValue &) *tableAuthorId).value() == 0) { - addAuthor.setValue( author.name() ); - addSortKey.setValue( author.sortKey() ); - tableAuthorId = myAddAuthor->executeScalar(); - if (tableAuthorId.isNull() || tableAuthorId->type() != DBValue::DBINT || ((DBIntValue &) *tableAuthorId).value() == 0) { - return false; - } - } - setAuthorId = ((DBIntValue &) *tableAuthorId).value(); - setAuthorIndex = ++index; - if (!mySetBookAuthor->execute()) { - return false; - } - } - ((DBIntValue &) *myTrimBookAuthors->parameter("@book_id").value()) = myBook->bookId(); - ((DBIntValue &) *myTrimBookAuthors->parameter("@authors_number").value()) = index; - return myTrimBookAuthors->execute(); -} - -void SaveAuthorsRunnable::setBook(shared_ptr<Book> book) { - myBook = book; -} diff --git a/fbreader/src/database/booksdb/runnables/SaveBookRunnable.cpp b/fbreader/src/database/booksdb/runnables/SaveBookRunnable.cpp deleted file mode 100644 index 7cf8dff..0000000 --- a/fbreader/src/database/booksdb/runnables/SaveBookRunnable.cpp +++ /dev/null @@ -1,43 +0,0 @@ -/* - * Copyright (C) 2009-2012 Geometer Plus <[email protected]> - * - * 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 2 of the License, or - * (at your option) 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. - */ - -#include "../DBRunnables.h" -#include "../../../library/Book.h" - -SaveBookRunnable::SaveBookRunnable(SaveTableBookRunnable &saveTableBook, SaveAuthorsRunnable &saveAuthors, - SaveSeriesRunnable &saveSeries, SaveTagsRunnable &saveTags) : - mySaveTableBook(saveTableBook), - mySaveAuthors(saveAuthors), - mySaveSeries(saveSeries), - mySaveTags(saveTags) { -} - -bool SaveBookRunnable::run() { - return mySaveTableBook.run() - && mySaveAuthors.run() - && mySaveSeries.run() - && mySaveTags.run(); -} - -void SaveBookRunnable::setBook(shared_ptr<Book> book) { - mySaveTableBook.setBook(book); - mySaveAuthors.setBook(book); - mySaveTags.setBook(book); - mySaveSeries.setBook(book); -} diff --git a/fbreader/src/database/booksdb/runnables/SaveBookStateStackRunnable.cpp b/fbreader/src/database/booksdb/runnables/SaveBookStateStackRunnable.cpp deleted file mode 100644 index 85d4a89..0000000 --- a/fbreader/src/database/booksdb/runnables/SaveBookStateStackRunnable.cpp +++ /dev/null @@ -1,56 +0,0 @@ -/* - * Copyright (C) 2009-2012 Geometer Plus <[email protected]> - * - * 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 2 of the License, or - * (at your option) 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. - */ - -#include "../DBRunnables.h" -#include "../../sqldb/implsqlite/SQLiteFactory.h" - - -SaveBookStateStackRunnable::SaveBookStateStackRunnable(DBConnection &connection) { - myTrimBookStateStack = SQLiteFactory::createCommand(BooksDBQuery::TRIM_BOOK_STATE_STACK, connection, "@book_id", DBValue::DBINT, "@stackSize", DBValue::DBINT); - mySetBookStateStack = SQLiteFactory::createCommand(BooksDBQuery::SET_BOOK_STATE_STACK, connection, "@book_id", DBValue::DBINT, "@position", DBValue::DBINT, "@paragraph", DBValue::DBINT, "@word", DBValue::DBINT, "@char", DBValue::DBINT); -} - -bool SaveBookStateStackRunnable::run() { - ((DBIntValue &) *myTrimBookStateStack->parameter("@book_id").value()) = myBookId; - ((DBIntValue &) *myTrimBookStateStack->parameter("@stackSize").value()) = myStack.size(); - - if (!myTrimBookStateStack->execute()) { - return false; - } - - ((DBIntValue &) *mySetBookStateStack->parameter("@book_id").value()) = myBookId; - - DBIntValue &savePosition = (DBIntValue &) *mySetBookStateStack->parameter("@position").value(); - DBIntValue &saveParagraph = (DBIntValue &) *mySetBookStateStack->parameter("@paragraph").value(); - DBIntValue &saveWord = (DBIntValue &) *mySetBookStateStack->parameter("@word").value(); - DBIntValue &saveChar = (DBIntValue &) *mySetBookStateStack->parameter("@char").value(); - - for (std::size_t i = 0; i < myStack.size(); ++i) { - const ReadingState &pos = myStack[i]; - savePosition = i + 1; - saveParagraph = pos.Paragraph; - saveWord = pos.Word; - saveChar = pos.Character; - if (!mySetBookStateStack->execute()) { - return false; - } - } - return true; -} - diff --git a/fbreader/src/database/booksdb/runnables/SaveRecentBooksRunnable.cpp b/fbreader/src/database/booksdb/runnables/SaveRecentBooksRunnable.cpp deleted file mode 100644 index 1c355ed..0000000 --- a/fbreader/src/database/booksdb/runnables/SaveRecentBooksRunnable.cpp +++ /dev/null @@ -1,49 +0,0 @@ -/* - * Copyright (C) 2009-2012 Geometer Plus <[email protected]> - * - * 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 2 of the License, or - * (at your option) 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. - */ - -#include "../DBRunnables.h" -#include "../../../library/Book.h" -#include "../../sqldb/implsqlite/SQLiteFactory.h" - -SaveRecentBooksRunnable::SaveRecentBooksRunnable(DBConnection &connection) { - myClearRecentBooks = SQLiteFactory::createCommand(BooksDBQuery::CLEAR_RECENT_BOOKS, connection); - myInsertRecentBooks = SQLiteFactory::createCommand(BooksDBQuery::INSERT_RECENT_BOOKS, connection, "@book_id", DBValue::DBINT); -} - -bool SaveRecentBooksRunnable::run() { - if (!myClearRecentBooks->execute()) { - return false; - } - DBIntValue &insertBookId = (DBIntValue &) *myInsertRecentBooks->parameter("@book_id").value(); - for (BookList::const_iterator it = myBooks.begin(); it != myBooks.end(); ++it) { - shared_ptr<Book> book = (*it); - if (book->bookId() == 0) { - return false; - } - insertBookId = book->bookId(); - if (!myInsertRecentBooks->execute()) { - return false; - } - } - return true; -} - -void SaveRecentBooksRunnable::setBooks(const BookList &books) { - myBooks = books; // copy vector -} diff --git a/fbreader/src/database/booksdb/runnables/SaveSeriesRunnable.cpp b/fbreader/src/database/booksdb/runnables/SaveSeriesRunnable.cpp deleted file mode 100644 index e56777b..0000000 --- a/fbreader/src/database/booksdb/runnables/SaveSeriesRunnable.cpp +++ /dev/null @@ -1,58 +0,0 @@ -/* - * Copyright (C) 2009-2012 Geometer Plus <[email protected]> - * - * 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 2 of the License, or - * (at your option) 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. - */ - -#include "../DBRunnables.h" -#include "../../../library/Book.h" -#include "../../sqldb/implsqlite/SQLiteFactory.h" - -SaveSeriesRunnable::SaveSeriesRunnable(DBConnection &connection) { - mySetBookSeries = SQLiteFactory::createCommand(BooksDBQuery::SET_BOOKSERIES, connection, "@book_id", DBValue::DBINT, "@series_id", DBValue::DBINT, "@book_index", DBValue::DBTEXT); - myDeleteBookSeries = SQLiteFactory::createCommand(BooksDBQuery::DELETE_BOOKSERIES, connection, "@book_id", DBValue::DBINT); - myFindSeriesId = SQLiteFactory::createCommand(BooksDBQuery::FIND_SERIES_ID, connection, "@name", DBValue::DBTEXT); - myAddSeries = SQLiteFactory::createCommand(BooksDBQuery::ADD_SERIES, connection, "@name", DBValue::DBTEXT); -} - -bool SaveSeriesRunnable::run() { - if (myBook->bookId() == 0) { - return false; - } - - if (myBook->seriesTitle().empty()) { - ((DBIntValue &) *myDeleteBookSeries->parameter("@book_id").value()) = myBook->bookId(); - return myDeleteBookSeries->execute(); - } - - ((DBTextValue &) *myFindSeriesId->parameter("@name").value()) = myBook->seriesTitle(); - shared_ptr<DBValue> tableSeriesId = myFindSeriesId->executeScalar(); - if (tableSeriesId.isNull() || tableSeriesId->type() != DBValue::DBINT || ((DBIntValue &) *tableSeriesId).value() == 0) { - ((DBTextValue &) *myAddSeries->parameter("@name").value()) = myBook->seriesTitle(); - tableSeriesId = myAddSeries->executeScalar(); - if (tableSeriesId.isNull() || tableSeriesId->type() != DBValue::DBINT || ((DBIntValue &) *tableSeriesId).value() == 0) { - return false; - } - } - ((DBIntValue &) *mySetBookSeries->parameter("@book_id").value()) = myBook->bookId(); - mySetBookSeries->parameter("@series_id").setValue( tableSeriesId ); - ((DBTextValue &) *mySetBookSeries->parameter("@book_index").value()) = myBook->indexInSeries().value(); - return mySetBookSeries->execute(); -} - -void SaveSeriesRunnable::setBook(shared_ptr<Book> book) { - myBook = book; -} diff --git a/fbreader/src/database/booksdb/runnables/SaveTableBookRunnable.cpp b/fbreader/src/database/booksdb/runnables/SaveTableBookRunnable.cpp deleted file mode 100644 index 770963e..0000000 --- a/fbreader/src/database/booksdb/runnables/SaveTableBookRunnable.cpp +++ /dev/null @@ -1,80 +0,0 @@ -/* - * Copyright (C) 2009-2012 Geometer Plus <[email protected]> - * - * 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 2 of the License, or - * (at your option) 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. - */ - -#include "../DBRunnables.h" -#include "../../../library/Book.h" -#include "../../sqldb/implsqlite/SQLiteFactory.h" - -SaveTableBookRunnable::SaveTableBookRunnable(DBConnection &connection) { - myFindBookId = SQLiteFactory::createCommand(BooksDBQuery::FIND_BOOK_ID, connection, "@file_id", DBValue::DBINT); - - myAddBook = SQLiteFactory::createCommand(BooksDBQuery::ADD_BOOK, connection, "@encoding", DBValue::DBTEXT, "@language", DBValue::DBTEXT, "@title", DBValue::DBTEXT, "@file_id", DBValue::DBINT); - myUpdateBook = SQLiteFactory::createCommand(BooksDBQuery::UPDATE_BOOK, connection, "@encoding", DBValue::DBTEXT, "@language", DBValue::DBTEXT, "@title", DBValue::DBTEXT, "@book_id", DBValue::DBINT); - - myFindFileId = new FindFileIdRunnable(connection); -} - -bool SaveTableBookRunnable::run() { - if (myBook->bookId() != 0) { - return updateTableBook(myBook); - } - - myFindFileId->setFileName(myBook->file().path(), true); - if (!myFindFileId->run()) { - return false; - } - const int fileId = myFindFileId->fileId(); - - ((DBIntValue &) *myFindBookId->parameter("@file_id").value()) = fileId; - shared_ptr<DBValue> dbBookId = myFindBookId->executeScalar(); - - if (dbBookId.isNull() || dbBookId->type() != DBValue::DBINT || ((DBIntValue &) *dbBookId).value() == 0) { - return addTableBook(myBook, fileId); - } else { - myBook->setBookId( ((DBIntValue &) *dbBookId).value() ); - return updateTableBook(myBook); - } -} - -bool SaveTableBookRunnable::addTableBook(const shared_ptr<Book> book, int fileId) { - - ((DBTextValue &) *myAddBook->parameter("@encoding").value()) = book->encoding(); - ((DBTextValue &) *myAddBook->parameter("@language").value()) = book->language(); - ((DBTextValue &) *myAddBook->parameter("@title").value()) = book->title(); - ((DBIntValue &) *myAddBook->parameter("@file_id").value()) = fileId; - shared_ptr<DBValue> dbBookId = myAddBook->executeScalar(); - - if (dbBookId.isNull() || dbBookId->type() != DBValue::DBINT || ((DBIntValue &) *dbBookId).value() == 0) { - return false; - } - book->setBookId(((DBIntValue&)*dbBookId).value()); - return true; -} - -bool SaveTableBookRunnable::updateTableBook(const shared_ptr<Book> book) { - ((DBTextValue&)*myUpdateBook->parameter("@encoding").value()) = book->encoding(); - ((DBTextValue&)*myUpdateBook->parameter("@language").value()) = book->language(); - ((DBTextValue&)*myUpdateBook->parameter("@title").value()) = book->title(); - ((DBIntValue&)*myUpdateBook->parameter("@book_id").value()) = book->bookId(); - return myUpdateBook->execute(); -} - -void SaveTableBookRunnable::setBook(shared_ptr<Book> book) { - myBook = book; -} |