diff --git a/core/src/main/java/org/kiwix/kiwixmobile/core/data/local/dao/BookDao.java b/core/src/main/java/org/kiwix/kiwixmobile/core/data/local/dao/BookDao.java deleted file mode 100644 index 67cd7168df..0000000000 --- a/core/src/main/java/org/kiwix/kiwixmobile/core/data/local/dao/BookDao.java +++ /dev/null @@ -1,89 +0,0 @@ -/* - * Kiwix Android - * Copyright (c) 2019 Kiwix - * 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 - * (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, see . - * - */ -package org.kiwix.kiwixmobile.core.data.local.dao; - -import com.yahoo.squidb.data.SquidCursor; -import com.yahoo.squidb.sql.Query; -import java.io.File; -import java.util.ArrayList; -import javax.inject.Inject; -import org.kiwix.kiwixmobile.core.data.local.KiwixDatabase; -import org.kiwix.kiwixmobile.core.data.local.entity.BookDatabaseEntity; -import org.kiwix.kiwixmobile.core.entity.LibraryNetworkEntity.Book; -import org.kiwix.kiwixmobile.core.utils.files.FileUtils; - -/** - * Dao class for books - */ - -@Deprecated -public class BookDao { - private final KiwixDatabase kiwixDatabase; - - @Inject - public BookDao(KiwixDatabase kiwixDatabase) { - this.kiwixDatabase = kiwixDatabase; - } - - private void setBookDetails(Book book, SquidCursor bookCursor) { - book.setId(bookCursor.get(BookDatabaseEntity.BOOK_ID)); - book.setTitle(bookCursor.get(BookDatabaseEntity.TITLE)); - book.setDescription(bookCursor.get(BookDatabaseEntity.DESCRIPTION)); - book.setLanguage(bookCursor.get(BookDatabaseEntity.LANGUAGE)); - book.setCreator(bookCursor.get(BookDatabaseEntity.BOOK_CREATOR)); - book.setPublisher(bookCursor.get(BookDatabaseEntity.PUBLISHER)); - book.setDate(bookCursor.get(BookDatabaseEntity.DATE)); - book.setFile(new File(bookCursor.get(BookDatabaseEntity.URL))); - book.setArticleCount(bookCursor.get(BookDatabaseEntity.ARTICLE_COUNT)); - book.setMediaCount(bookCursor.get(BookDatabaseEntity.MEDIA_COUNT)); - book.setSize(bookCursor.get(BookDatabaseEntity.SIZE)); - book.setFavicon(bookCursor.get(BookDatabaseEntity.FAVICON)); - book.setBookName(bookCursor.get(BookDatabaseEntity.NAME)); - } - - public ArrayList getBooks() { - ArrayList books = new ArrayList<>(); - try { - SquidCursor bookCursor = kiwixDatabase.query(BookDatabaseEntity.class, - Query.select()); - while (bookCursor.moveToNext()) { - Book book = new Book(); - setBookDetails(book, bookCursor); - books.add(book); - } - } catch (Exception exception) { - exception.printStackTrace(); - } - return filterBookResults(books); - } - - public ArrayList filterBookResults(ArrayList books) { - ArrayList filteredBookList = new ArrayList<>(); - for (Book book : books) { - if (!FileUtils.hasPart(book.getFile())) { - if (book.getFile().exists()) { - filteredBookList.add(book); - } else { - kiwixDatabase.deleteWhere(BookDatabaseEntity.class, - BookDatabaseEntity.URL.eq(book.getFile().getPath())); - } - } - } - return filteredBookList; - } -} diff --git a/core/src/main/java/org/kiwix/kiwixmobile/core/data/local/dao/BookDao.kt b/core/src/main/java/org/kiwix/kiwixmobile/core/data/local/dao/BookDao.kt new file mode 100644 index 0000000000..bb99d26a3f --- /dev/null +++ b/core/src/main/java/org/kiwix/kiwixmobile/core/data/local/dao/BookDao.kt @@ -0,0 +1,92 @@ +/* + * Kiwix Android + * Copyright (c) 2019 Kiwix + * 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 + * (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, see . + * + */ +package org.kiwix.kiwixmobile.core.data.local.dao + +import com.yahoo.squidb.data.SquidCursor +import com.yahoo.squidb.sql.Query +import org.kiwix.kiwixmobile.core.data.local.KiwixDatabase +import org.kiwix.kiwixmobile.core.data.local.entity.BookDatabaseEntity +import org.kiwix.kiwixmobile.core.entity.LibraryNetworkEntity +import org.kiwix.kiwixmobile.core.utils.files.FileUtils.hasPart +import java.io.File +import javax.inject.Inject + +/** + * Dao class for books + */ +@Deprecated("") +class BookDao @Inject constructor(private val kiwixDatabase: KiwixDatabase) { + private fun setBookDetails( + book: LibraryNetworkEntity.Book, + bookCursor: SquidCursor + ) { + book.id = bookCursor.get(BookDatabaseEntity.BOOK_ID)!! + book.title = bookCursor.get(BookDatabaseEntity.TITLE)!! + book.description = bookCursor.get(BookDatabaseEntity.DESCRIPTION) + book.language = bookCursor.get(BookDatabaseEntity.LANGUAGE)!! + book.creator = bookCursor.get(BookDatabaseEntity.BOOK_CREATOR)!! + book.publisher = bookCursor.get(BookDatabaseEntity.PUBLISHER)!! + book.date = bookCursor.get(BookDatabaseEntity.DATE)!! + book.file = bookCursor.get(BookDatabaseEntity.URL)?.let(::File) + book.articleCount = bookCursor.get(BookDatabaseEntity.ARTICLE_COUNT) + book.mediaCount = bookCursor.get(BookDatabaseEntity.MEDIA_COUNT) + book.size = bookCursor.get(BookDatabaseEntity.SIZE)!! + book.favicon = bookCursor.get(BookDatabaseEntity.FAVICON)!! + book.bookName = bookCursor.get(BookDatabaseEntity.NAME) + } + + val books: ArrayList + @Suppress("TooGenericExceptionCaught") + get() { + val books = ArrayList() + try { + val bookCursor = kiwixDatabase.query( + BookDatabaseEntity::class.java, + Query.select() + ) + while (bookCursor.moveToNext()) { + val book = LibraryNetworkEntity.Book() + setBookDetails(book, bookCursor) + books.add(book) + } + } catch (exception: Exception) { + exception.printStackTrace() + } + return filterBookResults(books) + } + + fun filterBookResults( + books: ArrayList + ): ArrayList { + val filteredBookList = ArrayList() + books + .asSequence() + .filterNot { it.file?.let(::hasPart) == true } + .forEach { + if (it.file?.exists() == true) { + filteredBookList.add(it) + } else { + kiwixDatabase.deleteWhere( + BookDatabaseEntity::class.java, + BookDatabaseEntity.URL.eq(it.file?.path) + ) + } + } + return filteredBookList + } +}