Example #1
0
bool BooksDB::deleteFromBookList(const Book &book) {
	if (book.bookId() == 0) {
		return false;
	}
	((DBIntValue&)*myDeleteBookList->parameter("@book_id").value()) = book.bookId();
	return myDeleteBookList->execute();
}
Example #2
0
bool BooksDB::saveBookStateStack(const Book &book, const std::deque<ReadingState> &stack) {
	if (!isInitialized() || book.bookId() == 0) {
		return false;
	}
	mySaveBookStateStack->setState(book.bookId(), stack);
	return executeAsTransaction(*mySaveBookStateStack);
}
Example #3
0
bool BooksDB::insertIntoBookList(const Book &book) {
	if (book.bookId() == 0) {
		return false;
	}
	((DBIntValue&)*myInsertBookList->parameter("@book_id").value()) = book.bookId();
	return myInsertBookList->execute();
}
Example #4
0
bool BooksDB::setStackPos(const Book &book, int stackPos) {
	if (book.bookId() == 0) {
		return false;
	}
	((DBIntValue&)*mySetStackPos->parameter("@book_id").value()) = book.bookId();
	((DBIntValue&)*mySetStackPos->parameter("@stack_pos").value()) = stackPos;
	return mySetStackPos->execute();
}
Example #5
0
bool BooksDB::setBookState(const Book &book, const ReadingState &state) {
	if (book.bookId() == 0) {
		return false;
	}
	((DBIntValue&)*mySetBookState->parameter("@book_id").value()) = book.bookId();
	((DBIntValue&)*mySetBookState->parameter("@paragraph").value()) = state.Paragraph;
	((DBIntValue&)*mySetBookState->parameter("@word").value()) = state.Word;
	((DBIntValue&)*mySetBookState->parameter("@char").value()) = state.Character;
	return mySetBookState->execute();
}
Example #6
0
bool BooksDB::checkBookList(const Book &book) {
	if (book.bookId() == 0) {
		return false;
	}
	((DBIntValue&)*myCheckBookList->parameter("@book_id").value()) = book.bookId();
	shared_ptr<DBValue> res = myCheckBookList->executeScalar();
	if (res.isNull() || res->type() != DBValue::DBINT) {
		return false;
	}
	const int checkRes = ((DBIntValue&)*res).value();
	return checkRes > 0;
}
Example #7
0
int BooksDB::loadStackPos(const Book &book) {
	if (book.bookId() == 0) {
		return 0;
	}
	((DBIntValue&)*myLoadStackPos->parameter("@book_id").value()) = book.bookId();
	shared_ptr<DBValue> stackPosValue = myLoadStackPos->executeScalar();
	if (stackPosValue.isNull()
		|| stackPosValue->type() != DBValue::DBINT) {
		return 0;
	}
	return ((DBIntValue&)*stackPosValue).value();
}
Example #8
0
bool BooksDB::removeBook(const Book &book) {
	if (!isInitialized() || book.bookId() == 0) {
		return false;
	}
	myDeleteBook->setFileName(book.file().path());
	return executeAsTransaction(*myDeleteBook);
}
Example #9
0
bool BooksDB::setEncoding(const Book &book, const std::string &encoding) {
	if (!isInitialized()) {
		return false;
	}

	shared_ptr<DBCommand> command = SQLiteFactory::createCommand(BooksDBQuery::SET_ENCODING, connection());

	command->parameters().push_back(DBCommandParameter("@book_id", new DBIntValue(book.bookId())));
	command->parameters().push_back(DBCommandParameter("@encoding", new DBTextValue(encoding)));

	return command->execute();
}
Example #10
0
bool BooksDB::loadBookState(const Book &book, ReadingState &state) {
	state.Paragraph = state.Word = state.Character = 0;
	if (book.bookId() == 0) {
		return false;
	}
	((DBIntValue&)*myLoadBookState->parameter("@book_id").value()) = book.bookId();
	shared_ptr<DBDataReader> reader = myLoadBookState->executeReader();
	if (reader.isNull()) {
		return false;
	}
	if (!reader->next()
		|| reader->type(0) != DBValue::DBINT /* paragraph */
		|| reader->type(1) != DBValue::DBINT /* word      */
		|| reader->type(2) != DBValue::DBINT /* char      */) {
		return false;
	}
	state.Paragraph = reader->intValue(0);
	state.Word = reader->intValue(1);
	state.Character = reader->intValue(2);
	return true;
}
Example #11
0
bool BooksDB::loadBookStateStack(const Book &book, std::deque<ReadingState> &stack) {
	if (book.bookId() == 0) {
		return false;
	}
	((DBIntValue&)*myLoadBookStateStack->parameter("@book_id").value()) = book.bookId();
	shared_ptr<DBDataReader> reader = myLoadBookStateStack->executeReader();
	if (reader.isNull()) {
		return false;
	}
	while (reader->next()) {
		if (reader->type(0) != DBValue::DBINT    /* paragraph */
			|| reader->type(1) != DBValue::DBINT /* word      */
			|| reader->type(2) != DBValue::DBINT /* char      */) {
			return false;
		}
		const int paragraph = reader->intValue(0);
		const int word = reader->intValue(1);
		const int character = reader->intValue(2);
		stack.push_back(ReadingState(paragraph, word, character));
	}
	return true;
}