diff --git a/app/src/main/java/fr/free/nrw/commons/CommonsApplication.kt b/app/src/main/java/fr/free/nrw/commons/CommonsApplication.kt index 90ab0393a..1b43da0e4 100644 --- a/app/src/main/java/fr/free/nrw/commons/CommonsApplication.kt +++ b/app/src/main/java/fr/free/nrw/commons/CommonsApplication.kt @@ -15,8 +15,7 @@ import com.facebook.drawee.backends.pipeline.Fresco import com.facebook.imagepipeline.core.ImagePipelineConfig import fr.free.nrw.commons.auth.LoginActivity import fr.free.nrw.commons.auth.SessionManager -import fr.free.nrw.commons.bookmarks.items.BookmarkItemsDao -import fr.free.nrw.commons.bookmarks.locations.BookmarkLocationsDao +import fr.free.nrw.commons.bookmarks.items.BookmarkItemsTable import fr.free.nrw.commons.bookmarks.pictures.BookmarkPicturesDao import fr.free.nrw.commons.category.CategoryDao import fr.free.nrw.commons.concurrency.BackgroundPoolExceptionHandler @@ -258,7 +257,7 @@ class CommonsApplication : MultiDexApplication() { Timber.e(e) } BookmarkPicturesDao.Table.onDelete(db) - BookmarkItemsDao.Table.onDelete(db) + BookmarkItemsTable.onDelete(db) } diff --git a/app/src/main/java/fr/free/nrw/commons/bookmarks/items/BookmarkItemsContentProvider.java b/app/src/main/java/fr/free/nrw/commons/bookmarks/items/BookmarkItemsContentProvider.java index 3a85ec159..e5f496197 100644 --- a/app/src/main/java/fr/free/nrw/commons/bookmarks/items/BookmarkItemsContentProvider.java +++ b/app/src/main/java/fr/free/nrw/commons/bookmarks/items/BookmarkItemsContentProvider.java @@ -1,7 +1,7 @@ package fr.free.nrw.commons.bookmarks.items; -import static fr.free.nrw.commons.bookmarks.items.BookmarkItemsDao.Table.COLUMN_ID; -import static fr.free.nrw.commons.bookmarks.items.BookmarkItemsDao.Table.TABLE_NAME; +import static fr.free.nrw.commons.bookmarks.items.BookmarkItemsTable.COLUMN_ID; +import static fr.free.nrw.commons.bookmarks.items.BookmarkItemsTable.TABLE_NAME; import android.content.ContentValues; import android.database.Cursor; diff --git a/app/src/main/java/fr/free/nrw/commons/bookmarks/items/BookmarkItemsController.kt b/app/src/main/java/fr/free/nrw/commons/bookmarks/items/BookmarkItemsController.kt index ca81d716b..d1a9ef785 100644 --- a/app/src/main/java/fr/free/nrw/commons/bookmarks/items/BookmarkItemsController.kt +++ b/app/src/main/java/fr/free/nrw/commons/bookmarks/items/BookmarkItemsController.kt @@ -18,6 +18,6 @@ class BookmarkItemsController @Inject constructor() { * @return a list of DepictedItem objects. */ fun loadFavoritesItems(): List { - return bookmarkItemsDao?.allBookmarksItems ?: emptyList() + return bookmarkItemsDao?.getAllBookmarksItems() ?: emptyList() } } diff --git a/app/src/main/java/fr/free/nrw/commons/bookmarks/items/BookmarkItemsDao.java b/app/src/main/java/fr/free/nrw/commons/bookmarks/items/BookmarkItemsDao.java deleted file mode 100644 index 6788a8290..000000000 --- a/app/src/main/java/fr/free/nrw/commons/bookmarks/items/BookmarkItemsDao.java +++ /dev/null @@ -1,329 +0,0 @@ -package fr.free.nrw.commons.bookmarks.items; - -import android.annotation.SuppressLint; -import android.content.ContentProviderClient; -import android.content.ContentValues; -import android.database.Cursor; -import android.database.sqlite.SQLiteDatabase; -import android.os.RemoteException; -import fr.free.nrw.commons.category.CategoryItem; -import fr.free.nrw.commons.upload.structure.depictions.DepictedItem; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.List; -import javax.inject.Inject; -import javax.inject.Named; -import javax.inject.Provider; -import javax.inject.Singleton; -import org.apache.commons.lang3.StringUtils; - -/** - * Handles database operations for bookmarked items - */ -@Singleton -public class BookmarkItemsDao { - - private final Provider clientProvider; - - @Inject - public BookmarkItemsDao( - @Named("bookmarksItem") final Provider clientProvider) { - this.clientProvider = clientProvider; - } - - - /** - * Find all persisted items bookmarks on database - * @return list of bookmarks - */ - public List getAllBookmarksItems() { - final List items = new ArrayList<>(); - final ContentProviderClient db = clientProvider.get(); - try (final Cursor cursor = db.query( - BookmarkItemsContentProvider.BASE_URI, - Table.ALL_FIELDS, - null, - new String[]{}, - null)) { - while (cursor != null && cursor.moveToNext()) { - items.add(fromCursor(cursor)); - } - } catch (final RemoteException e) { - throw new RuntimeException(e); - } finally { - db.release(); - } - return items; - } - - - /** - * Look for a bookmark in database and in order to insert or delete it - * @param depictedItem : Bookmark object - * @return boolean : is bookmark now favorite ? - */ - public boolean updateBookmarkItem(final DepictedItem depictedItem) { - final boolean bookmarkExists = findBookmarkItem(depictedItem.getId()); - if (bookmarkExists) { - deleteBookmarkItem(depictedItem); - } else { - addBookmarkItem(depictedItem); - } - return !bookmarkExists; - } - - /** - * Add a Bookmark to database - * @param depictedItem : Bookmark to add - */ - private void addBookmarkItem(final DepictedItem depictedItem) { - final ContentProviderClient db = clientProvider.get(); - try { - db.insert(BookmarkItemsContentProvider.BASE_URI, toContentValues(depictedItem)); - } catch (final RemoteException e) { - throw new RuntimeException(e); - } finally { - db.release(); - } - } - - /** - * Delete a bookmark from database - * @param depictedItem : Bookmark to delete - */ - private void deleteBookmarkItem(final DepictedItem depictedItem) { - final ContentProviderClient db = clientProvider.get(); - try { - db.delete(BookmarkItemsContentProvider.uriForName(depictedItem.getId()), null, null); - } catch (final RemoteException e) { - throw new RuntimeException(e); - } finally { - db.release(); - } - } - - /** - * Find a bookmark from database based on its name - * @param depictedItemID : Bookmark to find - * @return boolean : is bookmark in database ? - */ - public boolean findBookmarkItem(final String depictedItemID) { - if (depictedItemID == null) { //Avoiding NPE's - return false; - } - final ContentProviderClient db = clientProvider.get(); - try (final Cursor cursor = db.query( - BookmarkItemsContentProvider.BASE_URI, - Table.ALL_FIELDS, - Table.COLUMN_ID + "=?", - new String[]{depictedItemID}, - null - )) { - if (cursor != null && cursor.moveToFirst()) { - return true; - } - } catch (final RemoteException e) { - throw new RuntimeException(e); - } finally { - db.release(); - } - return false; - } - - /** - * Recives real data from cursor - * @param cursor : Object for storing database data - * @return DepictedItem - */ - @SuppressLint("Range") - DepictedItem fromCursor(final Cursor cursor) { - final String fileName = cursor.getString(cursor.getColumnIndex(Table.COLUMN_NAME)); - final String description - = cursor.getString(cursor.getColumnIndex(Table.COLUMN_DESCRIPTION)); - final String imageUrl = cursor.getString(cursor.getColumnIndex(Table.COLUMN_IMAGE)); - final String instanceListString - = cursor.getString(cursor.getColumnIndex(Table.COLUMN_INSTANCE_LIST)); - final List instanceList = StringToArray(instanceListString); - final String categoryNameListString = cursor.getString(cursor - .getColumnIndex(Table.COLUMN_CATEGORIES_NAME_LIST)); - final List categoryNameList = StringToArray(categoryNameListString); - final String categoryDescriptionListString = cursor.getString(cursor - .getColumnIndex(Table.COLUMN_CATEGORIES_DESCRIPTION_LIST)); - final List categoryDescriptionList = StringToArray(categoryDescriptionListString); - final String categoryThumbnailListString = cursor.getString(cursor - .getColumnIndex(Table.COLUMN_CATEGORIES_THUMBNAIL_LIST)); - final List categoryThumbnailList = StringToArray(categoryThumbnailListString); - final List categoryList = convertToCategoryItems(categoryNameList, - categoryDescriptionList, categoryThumbnailList); - final boolean isSelected - = Boolean.parseBoolean(cursor.getString(cursor - .getColumnIndex(Table.COLUMN_IS_SELECTED))); - final String id = cursor.getString(cursor.getColumnIndex(Table.COLUMN_ID)); - - return new DepictedItem( - fileName, - description, - imageUrl, - instanceList, - categoryList, - isSelected, - id - ); - } - - private List convertToCategoryItems(List categoryNameList, - List categoryDescriptionList, List categoryThumbnailList) { - List categoryItems = new ArrayList<>(); - for(int i=0; i StringToArray(final String listString) { - final String[] elements = listString.split(","); - return Arrays.asList(elements); - } - - /** - * Converts string to List - * @param list list of items - * @return string comma separated single string of items - */ - private String ArrayToString(final List list) { - if (list != null) { - return StringUtils.join(list, ','); - } - return null; - } - - /** - * Takes data from DepictedItem and create a content value object - * @param depictedItem depicted item - * @return ContentValues - */ - private ContentValues toContentValues(final DepictedItem depictedItem) { - - final List namesOfCommonsCategories = new ArrayList<>(); - for (final CategoryItem category : - depictedItem.getCommonsCategories()) { - namesOfCommonsCategories.add(category.getName()); - } - - final List descriptionsOfCommonsCategories = new ArrayList<>(); - for (final CategoryItem category : - depictedItem.getCommonsCategories()) { - descriptionsOfCommonsCategories.add(category.getDescription()); - } - - final List thumbnailsOfCommonsCategories = new ArrayList<>(); - for (final CategoryItem category : - depictedItem.getCommonsCategories()) { - thumbnailsOfCommonsCategories.add(category.getThumbnail()); - } - - final ContentValues cv = new ContentValues(); - cv.put(Table.COLUMN_NAME, depictedItem.getName()); - cv.put(Table.COLUMN_DESCRIPTION, depictedItem.getDescription()); - cv.put(Table.COLUMN_IMAGE, depictedItem.getImageUrl()); - cv.put(Table.COLUMN_INSTANCE_LIST, ArrayToString(depictedItem.getInstanceOfs())); - cv.put(Table.COLUMN_CATEGORIES_NAME_LIST, ArrayToString(namesOfCommonsCategories)); - cv.put(Table.COLUMN_CATEGORIES_DESCRIPTION_LIST, - ArrayToString(descriptionsOfCommonsCategories)); - cv.put(Table.COLUMN_CATEGORIES_THUMBNAIL_LIST, - ArrayToString(thumbnailsOfCommonsCategories)); - cv.put(Table.COLUMN_IS_SELECTED, depictedItem.isSelected()); - cv.put(Table.COLUMN_ID, depictedItem.getId()); - return cv; - } - - /** - * Table of bookmarksItems data - */ - public static final class Table { - public static final String TABLE_NAME = "bookmarksItems"; - public static final String COLUMN_NAME = "item_name"; - public static final String COLUMN_DESCRIPTION = "item_description"; - public static final String COLUMN_IMAGE = "item_image_url"; - public static final String COLUMN_INSTANCE_LIST = "item_instance_of"; - public static final String COLUMN_CATEGORIES_NAME_LIST = "item_name_categories"; - public static final String COLUMN_CATEGORIES_DESCRIPTION_LIST = "item_description_categories"; - public static final String COLUMN_CATEGORIES_THUMBNAIL_LIST = "item_thumbnail_categories"; - public static final String COLUMN_IS_SELECTED = "item_is_selected"; - public static final String COLUMN_ID = "item_id"; - - public static final String[] ALL_FIELDS = { - COLUMN_NAME, - COLUMN_DESCRIPTION, - COLUMN_IMAGE, - COLUMN_INSTANCE_LIST, - COLUMN_CATEGORIES_NAME_LIST, - COLUMN_CATEGORIES_DESCRIPTION_LIST, - COLUMN_CATEGORIES_THUMBNAIL_LIST, - COLUMN_IS_SELECTED, - COLUMN_ID - }; - - static final String DROP_TABLE_STATEMENT = "DROP TABLE IF EXISTS " + TABLE_NAME; - static final String CREATE_TABLE_STATEMENT = "CREATE TABLE " + TABLE_NAME + " (" - + COLUMN_NAME + " STRING," - + COLUMN_DESCRIPTION + " STRING," - + COLUMN_IMAGE + " STRING," - + COLUMN_INSTANCE_LIST + " STRING," - + COLUMN_CATEGORIES_NAME_LIST + " STRING," - + COLUMN_CATEGORIES_DESCRIPTION_LIST + " STRING," - + COLUMN_CATEGORIES_THUMBNAIL_LIST + " STRING," - + COLUMN_IS_SELECTED + " STRING," - + COLUMN_ID + " STRING PRIMARY KEY" - + ");"; - - /** - * Creates table - * @param db SQLiteDatabase - */ - public static void onCreate(final SQLiteDatabase db) { - db.execSQL(CREATE_TABLE_STATEMENT); - } - - /** - * Deletes database - * @param db SQLiteDatabase - */ - public static void onDelete(final SQLiteDatabase db) { - db.execSQL(DROP_TABLE_STATEMENT); - onCreate(db); - } - - /** - * Updates database - * @param db SQLiteDatabase - * @param from starting - * @param to end - */ - public static void onUpdate(final SQLiteDatabase db, int from, final int to) { - if (from == to) { - return; - } - if (from < 18) { - // doesn't exist yet - from++; - onUpdate(db, from, to); - return; - } - - if (from == 18) { - // table added in version 19 - onCreate(db); - from++; - onUpdate(db, from, to); - } - } - } -} diff --git a/app/src/main/java/fr/free/nrw/commons/bookmarks/items/BookmarkItemsDao.kt b/app/src/main/java/fr/free/nrw/commons/bookmarks/items/BookmarkItemsDao.kt new file mode 100644 index 000000000..9626bc171 --- /dev/null +++ b/app/src/main/java/fr/free/nrw/commons/bookmarks/items/BookmarkItemsDao.kt @@ -0,0 +1,223 @@ +package fr.free.nrw.commons.bookmarks.items + +import android.annotation.SuppressLint +import android.content.ContentProviderClient +import android.content.ContentValues +import android.database.Cursor +import android.os.RemoteException +import androidx.core.content.contentValuesOf +import fr.free.nrw.commons.bookmarks.items.BookmarkItemsContentProvider.BASE_URI +import fr.free.nrw.commons.bookmarks.items.BookmarkItemsContentProvider.uriForName +import fr.free.nrw.commons.bookmarks.items.BookmarkItemsTable.COLUMN_CATEGORIES_DESCRIPTION_LIST +import fr.free.nrw.commons.bookmarks.items.BookmarkItemsTable.COLUMN_CATEGORIES_NAME_LIST +import fr.free.nrw.commons.bookmarks.items.BookmarkItemsTable.COLUMN_CATEGORIES_THUMBNAIL_LIST +import fr.free.nrw.commons.bookmarks.items.BookmarkItemsTable.COLUMN_DESCRIPTION +import fr.free.nrw.commons.bookmarks.items.BookmarkItemsTable.COLUMN_ID +import fr.free.nrw.commons.bookmarks.items.BookmarkItemsTable.COLUMN_IMAGE +import fr.free.nrw.commons.bookmarks.items.BookmarkItemsTable.COLUMN_INSTANCE_LIST +import fr.free.nrw.commons.bookmarks.items.BookmarkItemsTable.COLUMN_IS_SELECTED +import fr.free.nrw.commons.bookmarks.items.BookmarkItemsTable.COLUMN_NAME +import fr.free.nrw.commons.category.CategoryItem +import fr.free.nrw.commons.upload.structure.depictions.DepictedItem +import javax.inject.Inject +import javax.inject.Named +import javax.inject.Provider +import javax.inject.Singleton + +/** + * Handles database operations for bookmarked items + */ +@Singleton +class BookmarkItemsDao @Inject constructor( + @param:Named("bookmarksItem") private val clientProvider: Provider +) { + /** + * Find all persisted items bookmarks on database + * @return list of bookmarks + */ + fun getAllBookmarksItems(): List { + val items: MutableList = mutableListOf() + val db = clientProvider.get() + try { + db.query( + BASE_URI, + BookmarkItemsTable.ALL_FIELDS, + null, + arrayOf(), + null + ).use { cursor -> + while (cursor != null && cursor.moveToNext()) { + items.add(fromCursor(cursor)) + } + } + } catch (e: RemoteException) { + throw RuntimeException(e) + } finally { + db.release() + } + return items + } + + + /** + * Look for a bookmark in database and in order to insert or delete it + * @param depictedItem : Bookmark object + * @return boolean : is bookmark now favorite ? + */ + fun updateBookmarkItem(depictedItem: DepictedItem): Boolean { + val bookmarkExists = findBookmarkItem(depictedItem.id) + if (bookmarkExists) { + deleteBookmarkItem(depictedItem) + } else { + addBookmarkItem(depictedItem) + } + return !bookmarkExists + } + + /** + * Add a Bookmark to database + * @param depictedItem : Bookmark to add + */ + private fun addBookmarkItem(depictedItem: DepictedItem) { + val db = clientProvider.get() + try { + db.insert(BASE_URI, toContentValues(depictedItem)) + } catch (e: RemoteException) { + throw RuntimeException(e) + } finally { + db.release() + } + } + + /** + * Delete a bookmark from database + * @param depictedItem : Bookmark to delete + */ + private fun deleteBookmarkItem(depictedItem: DepictedItem) { + val db = clientProvider.get() + try { + db.delete(uriForName(depictedItem.id), null, null) + } catch (e: RemoteException) { + throw RuntimeException(e) + } finally { + db.release() + } + } + + /** + * Find a bookmark from database based on its name + * @param depictedItemID : Bookmark to find + * @return boolean : is bookmark in database ? + */ + fun findBookmarkItem(depictedItemID: String?): Boolean { + if (depictedItemID == null) { //Avoiding NPE's + return false + } + val db = clientProvider.get() + try { + db.query( + BASE_URI, + BookmarkItemsTable.ALL_FIELDS, + COLUMN_ID + "=?", + arrayOf(depictedItemID), + null + ).use { cursor -> + if (cursor != null && cursor.moveToFirst()) { + return true + } + } + } catch (e: RemoteException) { + throw RuntimeException(e) + } finally { + db.release() + } + return false + } + + /** + * Recives real data from cursor + * @param cursor : Object for storing database data + * @return DepictedItem + */ + @SuppressLint("Range") + fun fromCursor(cursor: Cursor) = with(cursor) { + DepictedItem( + getString(COLUMN_NAME), + getString(COLUMN_DESCRIPTION), + getString(COLUMN_IMAGE), + getStringArray(COLUMN_INSTANCE_LIST), + convertToCategoryItems( + getStringArray(COLUMN_CATEGORIES_NAME_LIST), + getStringArray(COLUMN_CATEGORIES_DESCRIPTION_LIST), + getStringArray(COLUMN_CATEGORIES_THUMBNAIL_LIST) + ), + getString(COLUMN_IS_SELECTED).toBoolean(), + getString(COLUMN_ID) + ) + } + + private fun Cursor.getStringArray(name: String): List = + stringToArray(getString(name)) + + @SuppressLint("Range") + private fun Cursor.getString(name: String): String = + getString(getColumnIndex(name)) + + private fun convertToCategoryItems( + categoryNameList: List, + categoryDescriptionList: List, + categoryThumbnailList: List + ): List { + return buildList { + for (i in categoryNameList.indices) { + add( + CategoryItem( + categoryNameList[i], + categoryDescriptionList[i], + categoryThumbnailList[i], + false + ) + ) + } + } + } + + /** + * Converts string to List + * @param listString comma separated single string from of list items + * @return List of string + */ + private fun stringToArray(listString: String?): List { + if (listString.isNullOrEmpty()) return emptyList(); + val elements = listString.split(",".toRegex()).dropLastWhile { it.isEmpty() }.toTypedArray() + return listOf(*elements) + } + + /** + * Converts string to List + * @param list list of items + * @return string comma separated single string of items + */ + private fun arrayToString(list: List?): String? { + return list?.joinToString(",") + } + + /** + * Takes data from DepictedItem and create a content value object + * @param depictedItem depicted item + * @return ContentValues + */ + private fun toContentValues(depictedItem: DepictedItem): ContentValues { + return contentValuesOf( + COLUMN_NAME to depictedItem.name, + COLUMN_DESCRIPTION to depictedItem.description, + COLUMN_IMAGE to depictedItem.imageUrl, + COLUMN_INSTANCE_LIST to arrayToString(depictedItem.instanceOfs), + COLUMN_CATEGORIES_NAME_LIST to arrayToString(depictedItem.commonsCategories.map { it.name }), + COLUMN_CATEGORIES_DESCRIPTION_LIST to arrayToString(depictedItem.commonsCategories.map { it.description }), + COLUMN_CATEGORIES_THUMBNAIL_LIST to arrayToString(depictedItem.commonsCategories.map { it.thumbnail }), + COLUMN_IS_SELECTED to depictedItem.isSelected, + COLUMN_ID to depictedItem.id, + ) + } +} diff --git a/app/src/main/java/fr/free/nrw/commons/bookmarks/items/BookmarkItemsTable.kt b/app/src/main/java/fr/free/nrw/commons/bookmarks/items/BookmarkItemsTable.kt new file mode 100644 index 000000000..b1b03c71b --- /dev/null +++ b/app/src/main/java/fr/free/nrw/commons/bookmarks/items/BookmarkItemsTable.kt @@ -0,0 +1,90 @@ +package fr.free.nrw.commons.bookmarks.items + +import android.database.sqlite.SQLiteDatabase + +/** + * Table of bookmarksItems data + */ +object BookmarkItemsTable { + const val TABLE_NAME = "bookmarksItems" + const val COLUMN_NAME = "item_name" + const val COLUMN_DESCRIPTION = "item_description" + const val COLUMN_IMAGE = "item_image_url" + const val COLUMN_INSTANCE_LIST = "item_instance_of" + const val COLUMN_CATEGORIES_NAME_LIST = "item_name_categories" + const val COLUMN_CATEGORIES_DESCRIPTION_LIST = "item_description_categories" + const val COLUMN_CATEGORIES_THUMBNAIL_LIST = "item_thumbnail_categories" + const val COLUMN_IS_SELECTED = "item_is_selected" + const val COLUMN_ID = "item_id" + + val ALL_FIELDS = arrayOf( + COLUMN_NAME, + COLUMN_DESCRIPTION, + COLUMN_IMAGE, + COLUMN_INSTANCE_LIST, + COLUMN_CATEGORIES_NAME_LIST, + COLUMN_CATEGORIES_DESCRIPTION_LIST, + COLUMN_CATEGORIES_THUMBNAIL_LIST, + COLUMN_IS_SELECTED, + COLUMN_ID + ) + + const val DROP_TABLE_STATEMENT = "DROP TABLE IF EXISTS $TABLE_NAME" + + val CREATE_TABLE_STATEMENT = + """CREATE TABLE $TABLE_NAME ( + $COLUMN_NAME STRING, + $COLUMN_DESCRIPTION STRING, + $COLUMN_IMAGE STRING, + $COLUMN_INSTANCE_LIST STRING, + $COLUMN_CATEGORIES_NAME_LIST STRING, + $COLUMN_CATEGORIES_DESCRIPTION_LIST STRING, + $COLUMN_CATEGORIES_THUMBNAIL_LIST STRING, + $COLUMN_IS_SELECTED STRING, + $COLUMN_ID STRING PRIMARY KEY + );""".trimIndent() + + /** + * Creates table + * + * @param db SQLiteDatabase + */ + fun onCreate(db: SQLiteDatabase) { + db.execSQL(CREATE_TABLE_STATEMENT) + } + + /** + * Deletes database + * + * @param db SQLiteDatabase + */ + fun onDelete(db: SQLiteDatabase) { + db.execSQL(DROP_TABLE_STATEMENT) + onCreate(db) + } + + /** + * Updates database + * + * @param db SQLiteDatabase + * @param from starting + * @param to end + */ + fun onUpdate(db: SQLiteDatabase, from: Int, to: Int) { + if (from == to) { + return + } + + if (from < 18) { + // doesn't exist yet + onUpdate(db, from + 1, to) + return + } + + if (from == 18) { + // table added in version 19 + onCreate(db) + onUpdate(db, from + 1, to) + } + } +} \ No newline at end of file diff --git a/app/src/main/java/fr/free/nrw/commons/data/DBOpenHelper.kt b/app/src/main/java/fr/free/nrw/commons/data/DBOpenHelper.kt index 7cb7f60f7..acd8315e1 100644 --- a/app/src/main/java/fr/free/nrw/commons/data/DBOpenHelper.kt +++ b/app/src/main/java/fr/free/nrw/commons/data/DBOpenHelper.kt @@ -4,8 +4,7 @@ import android.content.Context import android.database.sqlite.SQLiteDatabase import android.database.sqlite.SQLiteException import android.database.sqlite.SQLiteOpenHelper -import fr.free.nrw.commons.bookmarks.items.BookmarkItemsDao -import fr.free.nrw.commons.bookmarks.locations.BookmarkLocationsDao +import fr.free.nrw.commons.bookmarks.items.BookmarkItemsTable import fr.free.nrw.commons.bookmarks.pictures.BookmarkPicturesDao import fr.free.nrw.commons.category.CategoryDao import fr.free.nrw.commons.explore.recentsearches.RecentSearchesDao @@ -31,7 +30,7 @@ class DBOpenHelper( override fun onCreate(db: SQLiteDatabase) { CategoryDao.Table.onCreate(db) BookmarkPicturesDao.Table.onCreate(db) - BookmarkItemsDao.Table.onCreate(db) + BookmarkItemsTable.onCreate(db) RecentSearchesDao.Table.onCreate(db) RecentLanguagesDao.Table.onCreate(db) } @@ -39,7 +38,7 @@ class DBOpenHelper( override fun onUpgrade(db: SQLiteDatabase, from: Int, to: Int) { CategoryDao.Table.onUpdate(db, from, to) BookmarkPicturesDao.Table.onUpdate(db, from, to) - BookmarkItemsDao.Table.onUpdate(db, from, to) + BookmarkItemsTable.onUpdate(db, from, to) RecentSearchesDao.Table.onUpdate(db, from, to) RecentLanguagesDao.Table.onUpdate(db, from, to) deleteTable(db, CONTRIBUTIONS_TABLE) diff --git a/app/src/test/kotlin/fr/free/nrw/commons/bookmarks/items/BookmarkItemsControllerTest.kt b/app/src/test/kotlin/fr/free/nrw/commons/bookmarks/items/BookmarkItemsControllerTest.kt index 98279520d..38bf6b267 100644 --- a/app/src/test/kotlin/fr/free/nrw/commons/bookmarks/items/BookmarkItemsControllerTest.kt +++ b/app/src/test/kotlin/fr/free/nrw/commons/bookmarks/items/BookmarkItemsControllerTest.kt @@ -21,7 +21,7 @@ class BookmarkItemsControllerTest { @Before fun setup() { MockitoAnnotations.openMocks(this) - whenever(bookmarkDao!!.allBookmarksItems) + whenever(bookmarkDao!!.getAllBookmarksItems()) .thenReturn(mockBookmarkList) } diff --git a/app/src/test/kotlin/fr/free/nrw/commons/bookmarks/items/BookmarkItemsDaoTest.kt b/app/src/test/kotlin/fr/free/nrw/commons/bookmarks/items/BookmarkItemsDaoTest.kt index 60ae7869d..e7ecbe074 100644 --- a/app/src/test/kotlin/fr/free/nrw/commons/bookmarks/items/BookmarkItemsDaoTest.kt +++ b/app/src/test/kotlin/fr/free/nrw/commons/bookmarks/items/BookmarkItemsDaoTest.kt @@ -18,20 +18,20 @@ import com.nhaarman.mockitokotlin2.mock import com.nhaarman.mockitokotlin2.verify import com.nhaarman.mockitokotlin2.whenever import fr.free.nrw.commons.TestCommonsApplication -import fr.free.nrw.commons.bookmarks.items.BookmarkItemsDao.Table.COLUMN_CATEGORIES_DESCRIPTION_LIST -import fr.free.nrw.commons.bookmarks.items.BookmarkItemsDao.Table.COLUMN_CATEGORIES_NAME_LIST -import fr.free.nrw.commons.bookmarks.items.BookmarkItemsDao.Table.COLUMN_CATEGORIES_THUMBNAIL_LIST -import fr.free.nrw.commons.bookmarks.items.BookmarkItemsDao.Table.COLUMN_DESCRIPTION -import fr.free.nrw.commons.bookmarks.items.BookmarkItemsDao.Table.COLUMN_ID -import fr.free.nrw.commons.bookmarks.items.BookmarkItemsDao.Table.COLUMN_IMAGE -import fr.free.nrw.commons.bookmarks.items.BookmarkItemsDao.Table.COLUMN_INSTANCE_LIST -import fr.free.nrw.commons.bookmarks.items.BookmarkItemsDao.Table.COLUMN_IS_SELECTED -import fr.free.nrw.commons.bookmarks.items.BookmarkItemsDao.Table.COLUMN_NAME -import fr.free.nrw.commons.bookmarks.items.BookmarkItemsDao.Table.CREATE_TABLE_STATEMENT -import fr.free.nrw.commons.bookmarks.items.BookmarkItemsDao.Table.DROP_TABLE_STATEMENT -import fr.free.nrw.commons.bookmarks.items.BookmarkItemsDao.Table.onCreate -import fr.free.nrw.commons.bookmarks.items.BookmarkItemsDao.Table.onDelete -import fr.free.nrw.commons.bookmarks.items.BookmarkItemsDao.Table.onUpdate +import fr.free.nrw.commons.bookmarks.items.BookmarkItemsTable.COLUMN_CATEGORIES_DESCRIPTION_LIST +import fr.free.nrw.commons.bookmarks.items.BookmarkItemsTable.COLUMN_CATEGORIES_NAME_LIST +import fr.free.nrw.commons.bookmarks.items.BookmarkItemsTable.COLUMN_CATEGORIES_THUMBNAIL_LIST +import fr.free.nrw.commons.bookmarks.items.BookmarkItemsTable.COLUMN_DESCRIPTION +import fr.free.nrw.commons.bookmarks.items.BookmarkItemsTable.COLUMN_ID +import fr.free.nrw.commons.bookmarks.items.BookmarkItemsTable.COLUMN_IMAGE +import fr.free.nrw.commons.bookmarks.items.BookmarkItemsTable.COLUMN_INSTANCE_LIST +import fr.free.nrw.commons.bookmarks.items.BookmarkItemsTable.COLUMN_IS_SELECTED +import fr.free.nrw.commons.bookmarks.items.BookmarkItemsTable.COLUMN_NAME +import fr.free.nrw.commons.bookmarks.items.BookmarkItemsTable.CREATE_TABLE_STATEMENT +import fr.free.nrw.commons.bookmarks.items.BookmarkItemsTable.DROP_TABLE_STATEMENT +import fr.free.nrw.commons.bookmarks.items.BookmarkItemsTable.onCreate +import fr.free.nrw.commons.bookmarks.items.BookmarkItemsTable.onDelete +import fr.free.nrw.commons.bookmarks.items.BookmarkItemsTable.onUpdate import fr.free.nrw.commons.category.CategoryItem import fr.free.nrw.commons.upload.structure.depictions.DepictedItem import org.junit.Assert @@ -135,7 +135,7 @@ class BookmarkItemsDaoTest { whenever(client.query(any(), any(), anyOrNull(), any(), anyOrNull())) .thenReturn(createCursor(14)) - val result = testObject.allBookmarksItems + val result = testObject.getAllBookmarksItems() Assert.assertEquals(14, (result.size)) } @@ -145,20 +145,20 @@ class BookmarkItemsDaoTest { whenever(client.query(any(), any(), anyOrNull(), any(), anyOrNull())).thenThrow( RemoteException(""), ) - testObject.allBookmarksItems + testObject.getAllBookmarksItems() } @Test fun getAllItemsBookmarksReturnsEmptyList_emptyCursor() { whenever(client.query(any(), any(), anyOrNull(), any(), anyOrNull())) .thenReturn(createCursor(0)) - Assert.assertTrue(testObject.allBookmarksItems.isEmpty()) + Assert.assertTrue(testObject.getAllBookmarksItems().isEmpty()) } @Test fun getAllItemsBookmarksReturnsEmptyList_nullCursor() { whenever(client.query(any(), any(), anyOrNull(), any(), anyOrNull())).thenReturn(null) - Assert.assertTrue(testObject.allBookmarksItems.isEmpty()) + Assert.assertTrue(testObject.getAllBookmarksItems().isEmpty()) } @Test @@ -167,7 +167,7 @@ class BookmarkItemsDaoTest { whenever(client.query(any(), any(), anyOrNull(), any(), anyOrNull())).thenReturn(mockCursor) whenever(mockCursor.moveToFirst()).thenReturn(false) - testObject.allBookmarksItems + testObject.getAllBookmarksItems() verify(mockCursor).close() }