Niedzielski has uploaded a new change for review.
https://gerrit.wikimedia.org/r/275885
Change subject: Fix database upgrade path
......................................................................
Fix database upgrade path
Fix database upgrade path from post-namespace and pre-normalized titles
to post-lang. This issue is reproducible when upgrading from v2.0.110
(2015-08-31) to 2.1.142 (2016-03-07).
Bug: T129232
Change-Id: I9c980feef5d5a0ea2494d5f3b4ba0dd1b0c110c4
---
M app/src/main/java/org/wikipedia/savedpages/SavedPageDatabaseTable.java
1 file changed, 19 insertions(+), 3 deletions(-)
git pull ssh://gerrit.wikimedia.org:29418/apps/android/wikipedia
refs/changes/85/275885/1
diff --git
a/app/src/main/java/org/wikipedia/savedpages/SavedPageDatabaseTable.java
b/app/src/main/java/org/wikipedia/savedpages/SavedPageDatabaseTable.java
index 4cb6b01..4606efd 100644
--- a/app/src/main/java/org/wikipedia/savedpages/SavedPageDatabaseTable.java
+++ b/app/src/main/java/org/wikipedia/savedpages/SavedPageDatabaseTable.java
@@ -113,7 +113,16 @@
db.updateWithOnConflict(getTableName(), values,
Col.ID.getName() + " = ?",
new String[]{id}, SQLiteDatabase.CONFLICT_REPLACE);
- SavedPage obj = hasNamespace(db) ? fromCursor(cursor) :
fromPreNamespaceCursor(cursor);
+ SavedPage obj;
+ if (hasNamespace(db)) {
+ if (hasLang(db)) {
+ obj = fromCursor(cursor);
+ } else {
+ obj = fromPreLangCursor(cursor);
+ }
+ } else {
+ obj = fromPreNamespaceCursor(cursor);
+ }
File newDir = new File(SavedPage.getSavedPagesDir() + "/" +
obj.getTitle().getIdentifier());
new File(SavedPage.getSavedPagesDir() + "/" +
getSavedPageDir(obj, title)).renameTo(newDir);
}
@@ -125,11 +134,19 @@
return db.getVersion() >= DB_VER_NAMESPACE_ADDED;
}
+ private boolean hasLang(@NonNull SQLiteDatabase db) {
+ return db.getVersion() >= DB_VER_LANG_ADDED;
+ }
+
private SavedPage fromPreNamespaceCursor(@NonNull Cursor cursor) {
return fromPreNamespaceCursor(cursor, null, null);
}
- private SavedPage fromPreNamespaceCursor(@NonNull Cursor cursor, @Nullable
String namespace,
+ private SavedPage fromPreLangCursor(@NonNull Cursor cursor) {
+ return fromPreNamespaceCursor(cursor, Col.NAMESPACE.val(cursor), null);
+ }
+
+ private SavedPage fromPreNamespaceCursor(@NonNull Cursor cursor,
@Nullable String namespace,
@Nullable String lang) {
String authority = Col.SITE.val(cursor);
Site site = lang == null ? new Site(authority) : new Site(authority,
lang);
@@ -161,7 +178,6 @@
return new Column<?>[] {Col.NAMESPACE};
case DB_VER_LANG_ADDED:
return new Column<?>[] {Col.LANG};
-
default:
return super.getColumnsAdded(version);
}
--
To view, visit https://gerrit.wikimedia.org/r/275885
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings
Gerrit-MessageType: newchange
Gerrit-Change-Id: I9c980feef5d5a0ea2494d5f3b4ba0dd1b0c110c4
Gerrit-PatchSet: 1
Gerrit-Project: apps/android/wikipedia
Gerrit-Branch: master
Gerrit-Owner: Niedzielski <[email protected]>
_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits