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

Reply via email to