Skip to content

Commit ae24508

Browse files
Merge pull request #1023 from psh/extract-and-test-category-db
Extracted and tested the database interactions from Category
2 parents d96acd8 + 1ba8e93 commit ae24508

File tree

7 files changed

+515
-232
lines changed

7 files changed

+515
-232
lines changed

app/src/main/java/fr/free/nrw/commons/CommonsApplication.java

+9-9
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@
2222
import dagger.android.DaggerApplication;
2323
import fr.free.nrw.commons.auth.SessionManager;
2424
import fr.free.nrw.commons.contributions.ContributionDao;
25-
import fr.free.nrw.commons.data.Category;
25+
import fr.free.nrw.commons.data.CategoryDao;
2626
import fr.free.nrw.commons.data.DBOpenHelper;
2727
import fr.free.nrw.commons.di.CommonsApplicationComponent;
2828
import fr.free.nrw.commons.di.CommonsApplicationModule;
@@ -49,15 +49,15 @@ public class CommonsApplication extends DaggerApplication {
4949
@Inject @Named("default_preferences") SharedPreferences defaultPrefs;
5050
@Inject @Named("application_preferences") SharedPreferences applicationPrefs;
5151
@Inject @Named("prefs") SharedPreferences otherPrefs;
52-
52+
5353
public static final String DEFAULT_EDIT_SUMMARY = "Uploaded using Android Commons app";
54-
54+
5555
public static final String FEEDBACK_EMAIL = "commons-app-android@googlegroups.com";
56-
56+
5757
public static final String LOGS_PRIVATE_EMAIL = "commons-app-android-private@googlegroups.com";
58-
58+
5959
public static final String FEEDBACK_EMAIL_SUBJECT = "Commons Android App (%s) Feedback";
60-
60+
6161
private CommonsApplicationComponent component;
6262
private RefWatcher refWatcher;
6363

@@ -95,7 +95,7 @@ protected RefWatcher setupLeakCanary() {
9595
}
9696
return LeakCanary.install(this);
9797
}
98-
98+
9999
/**
100100
* Provides a way to get member refWatcher
101101
*
@@ -106,7 +106,7 @@ public static RefWatcher getRefWatcher(Context context) {
106106
CommonsApplication application = (CommonsApplication) context.getApplicationContext();
107107
return application.refWatcher;
108108
}
109-
109+
110110
/**
111111
* Helps in injecting dependency library Dagger
112112
* @return Dagger injector
@@ -169,7 +169,7 @@ private void updateAllDatabases() {
169169
SQLiteDatabase db = dbOpenHelper.getWritableDatabase();
170170

171171
ModifierSequence.Table.onDelete(db);
172-
Category.Table.onDelete(db);
172+
CategoryDao.Table.onDelete(db);
173173
ContributionDao.Table.onDelete(db);
174174
}
175175

app/src/main/java/fr/free/nrw/commons/category/CategorizationFragment.java

+11-17
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,7 @@
3737
import dagger.android.support.DaggerFragment;
3838
import fr.free.nrw.commons.R;
3939
import fr.free.nrw.commons.data.Category;
40+
import fr.free.nrw.commons.data.CategoryDao;
4041
import fr.free.nrw.commons.mwapi.MediaWikiApi;
4142
import fr.free.nrw.commons.upload.MwVolleyApi;
4243
import fr.free.nrw.commons.utils.StringSortingUtils;
@@ -79,7 +80,7 @@ public class CategorizationFragment extends DaggerFragment {
7980
private final CategoriesAdapterFactory adapterFactory = new CategoriesAdapterFactory(item -> {
8081
if (item.isSelected()) {
8182
selectedCategories.add(item);
82-
updateCategoryCount(item, databaseClient);
83+
updateCategoryCount(item);
8384
} else {
8485
selectedCategories.remove(item);
8586
}
@@ -261,7 +262,7 @@ private Observable<CategoryItem> titleCategories() {
261262
}
262263

263264
private Observable<CategoryItem> recentCategories() {
264-
return Observable.fromIterable(Category.recentCategories(databaseClient, SEARCH_CATS_LIMIT))
265+
return Observable.fromIterable(new CategoryDao(databaseClient).recentCategories(SEARCH_CATS_LIMIT))
265266
.map(s -> new CategoryItem(s, false));
266267
}
267268

@@ -311,24 +312,17 @@ private boolean containsYear(String item) {
311312
|| item.matches("(.*)needing(.*)") || item.matches("(.*)taken on(.*)"));
312313
}
313314

314-
private void updateCategoryCount(CategoryItem item, ContentProviderClient client) {
315-
Category cat = lookupCategory(item.getName());
316-
cat.incTimesUsed();
317-
cat.save(client);
318-
}
319-
320-
private Category lookupCategory(String name) {
321-
Category cat = Category.find(databaseClient, name);
315+
private void updateCategoryCount(CategoryItem item) {
316+
CategoryDao categoryDao = new CategoryDao(databaseClient);
317+
Category category = categoryDao.find(item.getName());
322318

323-
if (cat == null) {
324-
// Newly used category...
325-
cat = new Category();
326-
cat.setName(name);
327-
cat.setLastUsed(new Date());
328-
cat.setTimesUsed(0);
319+
// Newly used category...
320+
if (category == null) {
321+
category = new Category(null, item.getName(), new Date(), 0);
329322
}
330323

331-
return cat;
324+
category.incTimesUsed();
325+
categoryDao.save(category);
332326
}
333327

334328
public int getCurrentSelectedCount() {

app/src/main/java/fr/free/nrw/commons/category/CategoryContentProvider.java

+3-3
Original file line numberDiff line numberDiff line change
@@ -17,9 +17,9 @@
1717
import timber.log.Timber;
1818

1919
import static android.content.UriMatcher.NO_MATCH;
20-
import static fr.free.nrw.commons.data.Category.Table.ALL_FIELDS;
21-
import static fr.free.nrw.commons.data.Category.Table.COLUMN_ID;
22-
import static fr.free.nrw.commons.data.Category.Table.TABLE_NAME;
20+
import static fr.free.nrw.commons.data.CategoryDao.Table.ALL_FIELDS;
21+
import static fr.free.nrw.commons.data.CategoryDao.Table.COLUMN_ID;
22+
import static fr.free.nrw.commons.data.CategoryDao.Table.TABLE_NAME;
2323

2424
public class CategoryContentProvider extends ContentProvider {
2525

0 commit comments

Comments
 (0)