summaryrefslogtreecommitdiffstats
path: root/fbreader/src/database/booksdb/runnables
diff options
context:
space:
mode:
authorMichele Calgaro <[email protected]>2024-06-07 23:30:05 +0900
committerMichele Calgaro <[email protected]>2024-06-07 23:30:05 +0900
commit17b259df9cb6b28779d4881b2b6c805ee2e48eea (patch)
tree5ed61937459cb7081089111b0242c01ec178f1f3 /fbreader/src/database/booksdb/runnables
parent1cba8bce178eb2d6719c6f7f21e2c9352c5513a6 (diff)
downloadtde-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')
-rw-r--r--fbreader/src/database/booksdb/runnables/ClearBooksDBRunnable.cpp46
-rw-r--r--fbreader/src/database/booksdb/runnables/DeleteBookRunnable.cpp37
-rw-r--r--fbreader/src/database/booksdb/runnables/DeleteFileEntriesRunnable.cpp60
-rw-r--r--fbreader/src/database/booksdb/runnables/FindFileIdRunnable.cpp123
-rw-r--r--fbreader/src/database/booksdb/runnables/InitBooksDBRunnable.cpp40
-rw-r--r--fbreader/src/database/booksdb/runnables/LoadFileEntriesRunnable.cpp68
-rw-r--r--fbreader/src/database/booksdb/runnables/LoadRecentBooksRunnable.cpp51
-rw-r--r--fbreader/src/database/booksdb/runnables/SaveAuthorsRunnable.cpp75
-rw-r--r--fbreader/src/database/booksdb/runnables/SaveBookRunnable.cpp43
-rw-r--r--fbreader/src/database/booksdb/runnables/SaveBookStateStackRunnable.cpp56
-rw-r--r--fbreader/src/database/booksdb/runnables/SaveRecentBooksRunnable.cpp49
-rw-r--r--fbreader/src/database/booksdb/runnables/SaveSeriesRunnable.cpp58
-rw-r--r--fbreader/src/database/booksdb/runnables/SaveTableBookRunnable.cpp80
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;
-}