[MediaWiki-commits] [Gerrit] Fix optional table joins and unmarshalling - change (apps...wikipedia)

2016-04-21 Thread jenkins-bot (Code Review)
jenkins-bot has submitted this change and it was merged.

Change subject: Fix optional table joins and unmarshalling
..


Fix optional table joins and unmarshalling

Several of the new table joins expect the rows of the right hand table
to be optional. This requires a _left_ join, not just a join.
Additionally, Cursors returned from join queries always have these
columns but they may be empty. Instead of checking for the presence of a
column name to determine whether the joined part exists or not, check
that a field with a nonnull constraint is nonnull.

Change-Id: I3da94a9953f880e03cac4b3ab40f9c8c73b21110
---
M app/src/main/java/org/wikipedia/database/contract/ReadingListPageContract.java
M app/src/main/java/org/wikipedia/database/contract/UserOptionContract.java
M app/src/main/java/org/wikipedia/page/PageTitle.java
M 
app/src/main/java/org/wikipedia/readinglist/page/database/ReadingListPageHttpRow.java
M 
app/src/main/java/org/wikipedia/readinglist/page/database/disk/ReadingListPageDiskRow.java
M app/src/main/java/org/wikipedia/useroption/database/UserOptionRow.java
6 files changed, 10 insertions(+), 9 deletions(-)

Approvals:
  Dbrant: Looks good to me, approved
  jenkins-bot: Verified



diff --git 
a/app/src/main/java/org/wikipedia/database/contract/ReadingListPageContract.java
 
b/app/src/main/java/org/wikipedia/database/contract/ReadingListPageContract.java
index fece015..b3bc3e5 100644
--- 
a/app/src/main/java/org/wikipedia/database/contract/ReadingListPageContract.java
+++ 
b/app/src/main/java/org/wikipedia/database/contract/ReadingListPageContract.java
@@ -140,7 +140,7 @@
 }
 
 public static final class HttpWithPage implements Page {
-public static final String TABLES = ":httpTbl join :tbl on 
(:tbl.keyCol = :httpTbl.keyCol)"
+public static final String TABLES = ":httpTbl left join :tbl on 
(:tbl.keyCol = :httpTbl.keyCol)"
 .replaceAll(":tbl.keyCol", KEY.qualifiedName())
 .replaceAll(":httpTbl.keyCol", HttpCol.KEY.qualifiedName())
 .replaceAll(":httpTbl", TABLE_HTTP)
@@ -165,7 +165,7 @@
 }
 
 public static final class DiskWithPage implements Page {
-public static final String TABLES = ":diskTbl join :tbl on 
(:tbl.keyCol = :diskTbl.keyCol)"
+public static final String TABLES = ":diskTbl left join :tbl on 
(:tbl.keyCol = :diskTbl.keyCol)"
 .replaceAll(":tbl.keyCol", KEY.qualifiedName())
 .replaceAll(":diskTbl.keyCol", DiskCol.KEY.qualifiedName())
 .replaceAll(":diskTbl", TABLE_DISK)
diff --git 
a/app/src/main/java/org/wikipedia/database/contract/UserOptionContract.java 
b/app/src/main/java/org/wikipedia/database/contract/UserOptionContract.java
index 6c275e6..97b5100 100644
--- a/app/src/main/java/org/wikipedia/database/contract/UserOptionContract.java
+++ b/app/src/main/java/org/wikipedia/database/contract/UserOptionContract.java
@@ -73,7 +73,7 @@
 }
 
 interface HttpWithOption extends Option {
-String TABLES = ":httpTbl join :tbl on (:tbl.keyCol = :httpTbl.keyCol)"
+String TABLES = ":httpTbl left join :tbl on (:tbl.keyCol = 
:httpTbl.keyCol)"
 .replaceAll(":tbl.keyCol", KEY.qualifiedName())
 .replaceAll(":httpTbl.keyCol", HttpCol.KEY.qualifiedName())
 .replaceAll(":httpTbl", TABLE_HTTP)
@@ -90,4 +90,4 @@
 String[] PROJECTION = DbUtil.qualifiedNames(ID, KEY, VAL, HTTP_KEY, 
HTTP_STATUS,
 HTTP_TIMESTAMP, HTTP_TRANSACTION_ID);
 }
-}
\ No newline at end of file
+}
diff --git a/app/src/main/java/org/wikipedia/page/PageTitle.java 
b/app/src/main/java/org/wikipedia/page/PageTitle.java
index 74f8fc1..9b7e871 100644
--- a/app/src/main/java/org/wikipedia/page/PageTitle.java
+++ b/app/src/main/java/org/wikipedia/page/PageTitle.java
@@ -47,6 +47,7 @@
  * * [[Utilisateur:Deskana]] on frwiki will have a namespace of 
"Utilisateur", even if you got
  *   to the page by going to [[User:Deskana]] and having MediaWiki 
automatically redirect you.
  */
+// TODO: use Namespace. Clients shouldn't have to bear this knowledge to 
access a String.
 @Nullable private final String namespace;
 private final String text;
 private final String fragment;
diff --git 
a/app/src/main/java/org/wikipedia/readinglist/page/database/ReadingListPageHttpRow.java
 
b/app/src/main/java/org/wikipedia/readinglist/page/database/ReadingListPageHttpRow.java
index 8cf5479..fd438a3 100644
--- 
a/app/src/main/java/org/wikipedia/readinglist/page/database/ReadingListPageHttpRow.java
+++ 
b/app/src/main/java/org/wikipedia/readinglist/page/database/ReadingListPageHttpRow.java
@@ -12,7 +12,7 @@
 public class ReadingListPageHttpRow extends HttpRow {
 public static ReadingListPageHttpRow fromCursor(@NonNull Cursor cursor) {
 HttpRow httpRow = 
ReadingListPage.HTTP_DATABASE_TABLE.fromCursor(cursor);
-  

[MediaWiki-commits] [Gerrit] Fix optional table joins and unmarshalling - change (apps...wikipedia)

2016-04-20 Thread Niedzielski (Code Review)
Niedzielski has uploaded a new change for review.

  https://gerrit.wikimedia.org/r/284610

Change subject: Fix optional table joins and unmarshalling
..

Fix optional table joins and unmarshalling

Several of the new table joins expect the rows of the right hand table
to be optional. This requires a _left_ join, not just a join.
Additionally, Cursors returned from join queries always have these
columns but they may be empty. Instead of checking for the presence of a
column name to determine whether the joined part exists or not, check
that a field with a nonnull constraint is nonnull.

Change-Id: I3da94a9953f880e03cac4b3ab40f9c8c73b21110
---
M app/src/main/java/org/wikipedia/database/contract/ReadingListPageContract.java
M app/src/main/java/org/wikipedia/database/contract/UserOptionContract.java
M app/src/main/java/org/wikipedia/page/PageTitle.java
M 
app/src/main/java/org/wikipedia/readinglist/page/database/ReadingListPageHttpRow.java
M 
app/src/main/java/org/wikipedia/readinglist/page/database/disk/ReadingListPageDiskRow.java
M app/src/main/java/org/wikipedia/useroption/database/UserOptionRow.java
6 files changed, 10 insertions(+), 9 deletions(-)


  git pull ssh://gerrit.wikimedia.org:29418/apps/android/wikipedia 
refs/changes/10/284610/1

diff --git 
a/app/src/main/java/org/wikipedia/database/contract/ReadingListPageContract.java
 
b/app/src/main/java/org/wikipedia/database/contract/ReadingListPageContract.java
index fece015..b3bc3e5 100644
--- 
a/app/src/main/java/org/wikipedia/database/contract/ReadingListPageContract.java
+++ 
b/app/src/main/java/org/wikipedia/database/contract/ReadingListPageContract.java
@@ -140,7 +140,7 @@
 }
 
 public static final class HttpWithPage implements Page {
-public static final String TABLES = ":httpTbl join :tbl on 
(:tbl.keyCol = :httpTbl.keyCol)"
+public static final String TABLES = ":httpTbl left join :tbl on 
(:tbl.keyCol = :httpTbl.keyCol)"
 .replaceAll(":tbl.keyCol", KEY.qualifiedName())
 .replaceAll(":httpTbl.keyCol", HttpCol.KEY.qualifiedName())
 .replaceAll(":httpTbl", TABLE_HTTP)
@@ -165,7 +165,7 @@
 }
 
 public static final class DiskWithPage implements Page {
-public static final String TABLES = ":diskTbl join :tbl on 
(:tbl.keyCol = :diskTbl.keyCol)"
+public static final String TABLES = ":diskTbl left join :tbl on 
(:tbl.keyCol = :diskTbl.keyCol)"
 .replaceAll(":tbl.keyCol", KEY.qualifiedName())
 .replaceAll(":diskTbl.keyCol", DiskCol.KEY.qualifiedName())
 .replaceAll(":diskTbl", TABLE_DISK)
diff --git 
a/app/src/main/java/org/wikipedia/database/contract/UserOptionContract.java 
b/app/src/main/java/org/wikipedia/database/contract/UserOptionContract.java
index 6c275e6..97b5100 100644
--- a/app/src/main/java/org/wikipedia/database/contract/UserOptionContract.java
+++ b/app/src/main/java/org/wikipedia/database/contract/UserOptionContract.java
@@ -73,7 +73,7 @@
 }
 
 interface HttpWithOption extends Option {
-String TABLES = ":httpTbl join :tbl on (:tbl.keyCol = :httpTbl.keyCol)"
+String TABLES = ":httpTbl left join :tbl on (:tbl.keyCol = 
:httpTbl.keyCol)"
 .replaceAll(":tbl.keyCol", KEY.qualifiedName())
 .replaceAll(":httpTbl.keyCol", HttpCol.KEY.qualifiedName())
 .replaceAll(":httpTbl", TABLE_HTTP)
@@ -90,4 +90,4 @@
 String[] PROJECTION = DbUtil.qualifiedNames(ID, KEY, VAL, HTTP_KEY, 
HTTP_STATUS,
 HTTP_TIMESTAMP, HTTP_TRANSACTION_ID);
 }
-}
\ No newline at end of file
+}
diff --git a/app/src/main/java/org/wikipedia/page/PageTitle.java 
b/app/src/main/java/org/wikipedia/page/PageTitle.java
index 74f8fc1..9b7e871 100644
--- a/app/src/main/java/org/wikipedia/page/PageTitle.java
+++ b/app/src/main/java/org/wikipedia/page/PageTitle.java
@@ -47,6 +47,7 @@
  * * [[Utilisateur:Deskana]] on frwiki will have a namespace of 
"Utilisateur", even if you got
  *   to the page by going to [[User:Deskana]] and having MediaWiki 
automatically redirect you.
  */
+// TODO: use Namespace. Clients shouldn't have to bear this knowledge to 
access a String.
 @Nullable private final String namespace;
 private final String text;
 private final String fragment;
diff --git 
a/app/src/main/java/org/wikipedia/readinglist/page/database/ReadingListPageHttpRow.java
 
b/app/src/main/java/org/wikipedia/readinglist/page/database/ReadingListPageHttpRow.java
index 8cf5479..fd438a3 100644
--- 
a/app/src/main/java/org/wikipedia/readinglist/page/database/ReadingListPageHttpRow.java
+++ 
b/app/src/main/java/org/wikipedia/readinglist/page/database/ReadingListPageHttpRow.java
@@ -12,7 +12,7 @@
 public class ReadingListPageHttpRow extends HttpRow {
 public static ReadingListPageHttpRow fromCursor(@NonNull Cursor cursor) {
 HttpRow httpRow =