Merge pull request #2838 from kiwix/Issue#2837

Squidb version change to latest
This commit is contained in:
Kelson 2022-06-27 21:47:14 +02:00 committed by GitHub
commit ceefdd6d6b
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
17 changed files with 73 additions and 48 deletions

View File

@ -70,14 +70,17 @@ public class KiwixDatabaseTest {
kiwixDatabase.migrateBookmarksVersion6();
ArrayList<String> bookmarkTitles = new ArrayList<>();
try (SquidCursor<Bookmark> bookmarkCursor = kiwixDatabase.query(Bookmark.class,
Query.selectDistinct(Bookmark.BOOKMARK_TITLE)
.where(Bookmark.ZIM_ID.eq(testId)
.or(Bookmark.ZIM_NAME.eq("")))
.orderBy(Bookmark.BOOKMARK_TITLE.asc()))) {
try {
SquidCursor<Bookmark> bookmarkCursor = kiwixDatabase.query(Bookmark.class,
Query.selectDistinct(Bookmark.BOOKMARK_TITLE)
.where(Bookmark.ZIM_ID.eq(testId)
.or(Bookmark.ZIM_NAME.eq("")))
.orderBy(Bookmark.BOOKMARK_TITLE.asc()));
while (bookmarkCursor.moveToNext()) {
bookmarkTitles.add(bookmarkCursor.get(Bookmark.BOOKMARK_TITLE));
}
} catch (Exception exception) {
exception.printStackTrace();
}
assertArrayEquals(testBookmarks, bookmarkTitles.toArray());

View File

@ -20,7 +20,6 @@ package org.kiwix.kiwixmobile.data.local.dao
import androidx.test.ext.junit.runners.AndroidJUnit4
import com.yahoo.squidb.data.AbstractModel
import com.yahoo.squidb.data.SquidCursor
import com.yahoo.squidb.sql.Query
import io.mockk.every
import io.mockk.mockk
import io.mockk.verify
@ -38,6 +37,6 @@ class RecentSearchDaoTest {
kiwixDatabase.query(any<Class<AbstractModel>>(), any())
} returns mockk<SquidCursor<AbstractModel>>(relaxed = true)
RecentSearchDao(kiwixDatabase).recentSearches
verify { kiwixDatabase.query(any<Class<AbstractModel>>(), Query.select()) }
verify { kiwixDatabase.query(any<Class<AbstractModel>>(), any()) }
}
}

View File

@ -28,7 +28,7 @@ object Versions {
const val com_google_dagger: String = "2.29.1"
const val com_yahoo_squidb: String = "2.0.0" // available: "3.2.3"
const val com_yahoo_squidb: String = "4.0.0-beta.2" // available: "3.2.3"
const val com_jakewharton: String = "10.2.3"

View File

@ -19,7 +19,6 @@ package org.kiwix.kiwixmobile.core.dao
import io.objectbox.Box
import io.objectbox.kotlin.query
import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.flow.map
import org.kiwix.kiwixmobile.core.dao.entities.RecentSearchEntity
import org.kiwix.kiwixmobile.core.dao.entities.RecentSearchEntity_
@ -31,7 +30,6 @@ class NewRecentSearchDao @Inject constructor(
private val box: Box<RecentSearchEntity>,
private val flowBuilder: FlowBuilder
) {
@OptIn(ExperimentalCoroutinesApi::class)
fun recentSearches(zimId: String?) = flowBuilder.buildCallbackFlow(
box.query {
equal(RecentSearchEntity_.zimId, zimId ?: "")

View File

@ -19,8 +19,8 @@ package org.kiwix.kiwixmobile.core.dao.entities
import io.objectbox.annotation.Entity
import io.objectbox.annotation.Id
import org.kiwix.kiwixmobile.core.page.bookmark.adapter.BookmarkItem
import org.kiwix.kiwixmobile.core.data.local.entity.Bookmark
import org.kiwix.kiwixmobile.core.page.bookmark.adapter.BookmarkItem
@Entity
data class BookmarkEntity(

View File

@ -27,7 +27,6 @@ data class RecentSearchEntity(
val searchTerm: String,
val zimId: String
) {
constructor(recentSearch: RecentSearch) : this(
0,
recentSearch.searchString,

View File

@ -20,8 +20,11 @@ package org.kiwix.kiwixmobile.core.data.local;
import android.content.Context;
import android.util.Log;
import androidx.annotation.NonNull;
import com.yahoo.squidb.android.AndroidOpenHelper;
import com.yahoo.squidb.data.ISQLiteDatabase;
import com.yahoo.squidb.data.ISQLiteOpenHelper;
import com.yahoo.squidb.data.SquidDatabase;
import com.yahoo.squidb.data.adapter.SQLiteDatabaseWrapper;
import com.yahoo.squidb.sql.Table;
import java.io.BufferedReader;
import java.io.FileNotFoundException;
@ -63,7 +66,7 @@ public class KiwixDatabase extends SquidDatabase {
public KiwixDatabase(Context context, NewBookDao bookDao, NewLanguagesDao languagesDao,
NewBookmarksDao bookmarksDao,
NewRecentSearchDao recentSearchDao) {
super(context);
super();
this.context = context;
this.bookDao = bookDao;
this.languagesDao = languagesDao;
@ -86,8 +89,14 @@ public class KiwixDatabase extends SquidDatabase {
};
}
@NonNull @Override protected ISQLiteOpenHelper createOpenHelper(
@NonNull String databaseName,
@NonNull OpenHelperDelegate delegate, int version) {
return new AndroidOpenHelper(context, databaseName, delegate, version);
}
@Override
protected boolean onUpgrade(SQLiteDatabaseWrapper db, int oldVersion, int newVersion) {
protected boolean onUpgrade(ISQLiteDatabase db, int oldVersion, int newVersion) {
Log.e("UPGRADE", "oldversion: " + oldVersion + " newVersion: " + newVersion);
switch (oldVersion) {
case 1:

View File

@ -58,13 +58,16 @@ public class BookDao {
public ArrayList<Book> getBooks() {
ArrayList<Book> books = new ArrayList<>();
try (SquidCursor<BookDatabaseEntity> bookCursor = kiwixDatabase.query(BookDatabaseEntity.class,
Query.select())) {
try {
SquidCursor<BookDatabaseEntity> 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);
}

View File

@ -42,8 +42,9 @@ public class BookmarksDao {
public List<Bookmark> getBookmarks() {
ArrayList<Bookmark> bookmarks = new ArrayList<>();
Query query = Query.select();
try (SquidCursor<Bookmark> squidCursor = kiwixDatabase
.query(Bookmark.class, query.orderBy(Bookmark.BOOKMARK_TITLE.asc()))) {
try {
SquidCursor<Bookmark> squidCursor = kiwixDatabase
.query(Bookmark.class, query.orderBy(Bookmark.BOOKMARK_TITLE.asc()));
while (squidCursor.moveToNext()) {
Bookmark bookmark = new Bookmark();
bookmark.setZimId(squidCursor.get(Bookmark.ZIM_ID));
@ -52,22 +53,27 @@ public class BookmarksDao {
bookmark.setBookmarkUrl(squidCursor.get(Bookmark.BOOKMARK_URL));
bookmarks.add(bookmark);
}
} catch (Exception exception) {
exception.printStackTrace();
}
return bookmarks;
}
public void processBookmark(StringOperation operation) {
try (SquidCursor<Bookmark> bookmarkCursor = kiwixDatabase.query(Bookmark.class,
Query.select(Bookmark.ID, Bookmark.BOOKMARK_URL))) {
try {
SquidCursor<Bookmark> bookmarkCursor = kiwixDatabase.query(Bookmark.class,
Query.select(Bookmark.ROWID, Bookmark.BOOKMARK_URL));
while (bookmarkCursor.moveToNext()) {
String url = bookmarkCursor.get(Bookmark.BOOKMARK_URL);
url = operation.apply(url);
if (url != null) {
kiwixDatabase.update(Update.table(Bookmark.TABLE)
.where(Bookmark.ID.eq(bookmarkCursor.get(Bookmark.ID)))
.where(Bookmark.ROWID.eq(bookmarkCursor.get(Bookmark.ROWID)))
.set(Bookmark.BOOKMARK_URL, url));
}
}
} catch (Exception exception) {
exception.printStackTrace();
}
}

View File

@ -37,14 +37,17 @@ public class NetworkLanguageDao {
public ArrayList<Language> getFilteredLanguages() {
ArrayList<Language> result = new ArrayList<>();
try (SquidCursor<NetworkLanguageDatabaseEntity> languageCursor = mDb.query(
NetworkLanguageDatabaseEntity.class,
Query.select())) {
try {
SquidCursor<NetworkLanguageDatabaseEntity> languageCursor = mDb.query(
NetworkLanguageDatabaseEntity.class,
Query.select());
while (languageCursor.moveToNext()) {
String languageCode = languageCursor.get(NetworkLanguageDatabaseEntity.LANGUAGE_I_S_O_3);
boolean enabled = languageCursor.get(NetworkLanguageDatabaseEntity.ENABLED);
result.add(new Language(languageCode, enabled, 0));
}
} catch (Exception exception) {
exception.printStackTrace();
}
return result;
}

View File

@ -44,11 +44,14 @@ public class RecentSearchDao {
*/
public List<RecentSearch> getRecentSearches() {
List<RecentSearch> result = new ArrayList<>();
try (SquidCursor<RecentSearch> searchCursor = mDb.query(
RecentSearch.class, Query.select())) {
try {
SquidCursor<RecentSearch> searchCursor = mDb.query(
RecentSearch.class, Query.select());
while (searchCursor.moveToNext()) {
result.add(new RecentSearch(searchCursor));
}
} catch (Exception exception) {
exception.printStackTrace();
}
return result;
}

View File

@ -17,17 +17,16 @@
*/
package org.kiwix.kiwixmobile.core.data.local.entity;
import com.yahoo.squidb.annotations.ColumnSpec;
import com.yahoo.squidb.annotations.TableModelSpec;
import com.yahoo.squidb.annotations.tables.constraints.NotNull;
/**
* Squidb spec for saved bookmarks.
*/
@TableModelSpec(className = "Bookmark", tableName = "Bookmarks")
public class BookmarksSpec {
@ColumnSpec(constraints = "NOT NULL")
public String ZimId;
public String ZimName;
public String bookmarkUrl;
public String bookmarkTitle;
@NotNull public String ZimId;
@NotNull public String ZimName;
@NotNull public String bookmarkUrl;
@NotNull public String bookmarkTitle;
}

View File

@ -17,18 +17,14 @@
*/
package org.kiwix.kiwixmobile.core.data.local.entity;
import com.yahoo.squidb.annotations.ColumnSpec;
import com.yahoo.squidb.annotations.TableModelSpec;
import com.yahoo.squidb.annotations.tables.constraints.NotNull;
/**
* Squidb spec for recent searches.
*/
@TableModelSpec(className = "RecentSearch", tableName = "recentSearches")
public class RecentSearchSpec {
@ColumnSpec(constraints = "NOT NULL")
public String searchString;
@ColumnSpec(constraints = "NOT NULL")
public String zimID;
@NotNull public String searchString;
@NotNull String zimID;
}

View File

@ -33,7 +33,7 @@ data class OpenPage(
activity as CoreMainActivity
activity.popNavigationBackstack()
if (page.zimFilePath != zimReaderContainer.zimCanonicalPath) {
activity.openPage(page.url, page.zimFilePath!!)
page.zimFilePath?.let { activity.openPage(page.url, it) }
} else {
activity.openPage(page.url)
}

View File

@ -90,7 +90,10 @@ class SearchViewModel @Inject constructor(
recentSearchDao.recentSearches(zimReaderContainer.id),
searchOrigin.asFlow()
) { searchTerm, searchResultsWithTerm, recentResults, searchOrigin ->
SearchState(searchTerm, searchResultsWithTerm, recentResults, searchOrigin)
SearchState(
searchTerm, searchResultsWithTerm,
recentResults as List<SearchListItem.RecentSearchListItem>, searchOrigin
)
}
.collect { state.value = it }
}

View File

@ -50,7 +50,9 @@ internal class NewRecentSearchDaoTest {
expectFromRecentSearches(queryResult, zimId)
newRecentSearchDao.recentSearches(zimId)
.test(this)
.assertValues(queryResult.map { RecentSearchListItem(it.searchTerm) })
.assertValues(
queryResult.map { RecentSearchListItem(it.searchTerm) }
)
.finish()
}
@ -60,7 +62,9 @@ internal class NewRecentSearchDaoTest {
expectFromRecentSearches(queryResult, "")
newRecentSearchDao.recentSearches(null)
.test(this)
.assertValues(queryResult.map { RecentSearchListItem(it.searchTerm) })
.assertValues(
queryResult.map { RecentSearchListItem(it.searchTerm) }
)
.finish()
}
@ -70,7 +74,9 @@ internal class NewRecentSearchDaoTest {
expectFromRecentSearches(queryResult, "")
newRecentSearchDao.recentSearches("")
.test(this)
.assertValues(queryResult.take(1).map { RecentSearchListItem(it.searchTerm) })
.assertValues(
queryResult.take(1).map { RecentSearchListItem(it.searchTerm) }
)
.finish()
}

View File

@ -28,10 +28,9 @@
<issue id="Typos">
<ignore path="**/values-tr/**.xml" />
</issue>
<issue id="InvalidPackage">
<ignore path="**simple-xml-2.7.1.jar" />
<ignore path="**/squidb*.jar" />
<ignore path="**javapoet-1.8.0.jar" />
<ignore path="**/org.jacoco.agent-0.8.3-runtime.jar" />
</issue>
<issue id="IconLocation">
@ -41,5 +40,4 @@
<issue id="ConvertToWebp">
<ignore path="src/main/res/drawable/search_widget_preview.png" />
</issue>
</lint>