Deskana has uploaded a new change for review.
https://gerrit.wikimedia.org/r/229070
Change subject: Migrate persistence helpers to use column name rather than
column index
......................................................................
Migrate persistence helpers to use column name rather than column index
Persistence helpers rely directly on column indices. This has caused some
nasty bugs, and represents poor abstraction. This patch migrates all remaining
persistence helpers to using column names rather than column indices, which
should reduce the future potential for bugs.
Bug: T107783
Change-Id: I55583e3ccdb88ed03442e2b36f6eb4b9b95e5ac3
---
M
wikipedia/src/main/java/org/wikipedia/editing/summaries/EditSummaryPersistenceHelper.java
M
wikipedia/src/main/java/org/wikipedia/pageimages/PageImagePersistenceHelper.java
M
wikipedia/src/main/java/org/wikipedia/savedpages/SavedPagePersistenceHelper.java
M
wikipedia/src/main/java/org/wikipedia/search/RecentSearchPersistenceHelper.java
4 files changed, 55 insertions(+), 52 deletions(-)
git pull ssh://gerrit.wikimedia.org:29418/apps/android/wikipedia
refs/changes/70/229070/1
diff --git
a/wikipedia/src/main/java/org/wikipedia/editing/summaries/EditSummaryPersistenceHelper.java
b/wikipedia/src/main/java/org/wikipedia/editing/summaries/EditSummaryPersistenceHelper.java
index 9a22f4b..b2aee90 100644
---
a/wikipedia/src/main/java/org/wikipedia/editing/summaries/EditSummaryPersistenceHelper.java
+++
b/wikipedia/src/main/java/org/wikipedia/editing/summaries/EditSummaryPersistenceHelper.java
@@ -7,19 +7,24 @@
import java.util.Date;
public class EditSummaryPersistenceHelper extends
PersistenceHelper<EditSummary> {
+
+ private static final int DB_VER_INTRODUCED = 2;
+
+ private static final String COL_SUMMARY = "summary";
+ private static final String COL_LAST_USED = "lastUsed";
+
@Override
public EditSummary fromCursor(Cursor c) {
- // Carefully, get them back by using position only
- String summary = c.getString(1);
- Date lastUsed = new Date(c.getLong(2));
+ String summary = c.getString(c.getColumnIndex(COL_SUMMARY));
+ Date lastUsed = new Date(c.getLong(c.getColumnIndex(COL_LAST_USED)));
return new EditSummary(summary, lastUsed);
}
@Override
protected ContentValues toContentValues(EditSummary obj) {
ContentValues contentValues = new ContentValues();
- contentValues.put("summary", obj.getSummary());
- contentValues.put("lastUsed", obj.getLastUsed().getTime());
+ contentValues.put(COL_SUMMARY, obj.getSummary());
+ contentValues.put(COL_LAST_USED, obj.getLastUsed().getTime());
return contentValues;
}
@@ -30,17 +35,17 @@
@Override
protected int getDBVersionIntroducedAt() {
- return 2;
+ return DB_VER_INTRODUCED;
}
@Override
public Column[] getColumnsAdded(int version) {
switch (version) {
- case 2:
+ case DB_VER_INTRODUCED:
return new Column[] {
new Column("_id", "integer primary key"),
- new Column("summary", "string"),
- new Column("lastUsed", "integer")
+ new Column(COL_SUMMARY, "string"),
+ new Column(COL_LAST_USED, "integer")
};
default:
return new Column[0];
@@ -49,7 +54,7 @@
@Override
protected String getPrimaryKeySelection() {
- return "summary = ?";
+ return COL_LAST_USED + " = ?";
}
@Override
diff --git
a/wikipedia/src/main/java/org/wikipedia/pageimages/PageImagePersistenceHelper.java
b/wikipedia/src/main/java/org/wikipedia/pageimages/PageImagePersistenceHelper.java
index 196123f..56990b2 100644
---
a/wikipedia/src/main/java/org/wikipedia/pageimages/PageImagePersistenceHelper.java
+++
b/wikipedia/src/main/java/org/wikipedia/pageimages/PageImagePersistenceHelper.java
@@ -11,26 +11,25 @@
public class PageImagePersistenceHelper extends PersistenceHelper<PageImage> {
- private static final int COL_INDEX_SITE = 1;
- private static final int COL_INDEX_TITLE = 2;
- private static final int COL_INDEX_IMAGE_NAME = 3;
+ private static final String COL_SITE = "site";
+ private static final String COL_TITLE = "title";
+ private static final String COL_IMAGE_NAME = "imageName";
@Override
public PageImage fromCursor(Cursor c) {
- // Carefully, get them back by using position only
- Site site = new Site(c.getString(COL_INDEX_SITE));
+ Site site = new Site(c.getString(c.getColumnIndex(COL_TITLE)));
// FIXME: Does not handle non mainspace pages
- PageTitle title = new PageTitle(null, c.getString(COL_INDEX_TITLE),
site);
- String imageName = c.getString(COL_INDEX_IMAGE_NAME);
+ PageTitle title = new PageTitle(null,
c.getString(c.getColumnIndex(COL_TITLE)), site);
+ String imageName = c.getString(c.getColumnIndex(COL_IMAGE_NAME));
return new PageImage(title, imageName);
}
@Override
protected ContentValues toContentValues(PageImage obj) {
ContentValues contentValues = new ContentValues();
- contentValues.put("site", obj.getTitle().getSite().getDomain());
- contentValues.put("title", obj.getTitle().getPrefixedText());
- contentValues.put("imageName", obj.getImageName());
+ contentValues.put(COL_SITE, obj.getTitle().getSite().getDomain());
+ contentValues.put(COL_TITLE, obj.getTitle().getPrefixedText());
+ contentValues.put(COL_IMAGE_NAME, obj.getImageName());
return contentValues;
}
@@ -40,7 +39,7 @@
String thumbnail = null;
try {
String searchStr = title.getPrefixedText().replace("'", "''");
- String selection = getTableName() + ".title='" + searchStr + "'";
+ String selection = getTableName() + "." + COL_TITLE + "='" +
searchStr + "'";
c = app.getPersister(PageImage.class).select(
selection, new String[] {}, "");
if (c.getCount() > 0) {
@@ -68,9 +67,9 @@
case 1:
return new Column[] {
new Column("_id", "integer primary key"),
- new Column("site", "string"),
- new Column("title", "string"),
- new Column("imageName", "string"),
+ new Column(COL_SITE, "string"),
+ new Column(COL_TITLE, "string"),
+ new Column(COL_IMAGE_NAME, "string"),
};
default:
return new Column[0];
@@ -79,7 +78,7 @@
@Override
protected String getPrimaryKeySelection() {
- return "site = ? AND title = ?";
+ return COL_SITE + " = ? AND " + COL_TITLE + " = ?";
}
@Override
diff --git
a/wikipedia/src/main/java/org/wikipedia/savedpages/SavedPagePersistenceHelper.java
b/wikipedia/src/main/java/org/wikipedia/savedpages/SavedPagePersistenceHelper.java
index 204f7cf..d3d5d96 100644
---
a/wikipedia/src/main/java/org/wikipedia/savedpages/SavedPagePersistenceHelper.java
+++
b/wikipedia/src/main/java/org/wikipedia/savedpages/SavedPagePersistenceHelper.java
@@ -13,27 +13,27 @@
private static final int DB_VER_INTRODUCED = 4;
private static final int DB_VER_NAMESPACE_ADDED = 6;
- private static final int COL_INDEX_SITE = 1;
- private static final int COL_INDEX_TITLE = 2;
- private static final int COL_INDEX_NAMESPACE = 3;
- private static final int COL_INDEX_TIME = 4;
+ private static final String COL_SITE = "site";
+ private static final String COL_TITLE = "title";
+ private static final String COL_NAMESPACE = "namespace";
+ private static final String COL_TIMESTAMP = "timestamp";
@Override
public SavedPage fromCursor(Cursor c) {
- // Carefully, get them back by using position only
- Site site = new Site(c.getString(COL_INDEX_SITE));
- PageTitle title = new PageTitle(c.getString(COL_INDEX_NAMESPACE),
c.getString(COL_INDEX_TITLE), site);
- Date timestamp = new Date(c.getLong(COL_INDEX_TIME));
+ Site site = new Site(c.getString(c.getColumnIndex(COL_SITE)));
+ PageTitle title = new
PageTitle(c.getString(c.getColumnIndex(COL_NAMESPACE)),
+ c.getString(c.getColumnIndex(COL_TITLE)), site);
+ Date timestamp = new Date(c.getLong(c.getColumnIndex(COL_TIMESTAMP)));
return new SavedPage(title, timestamp);
}
@Override
protected ContentValues toContentValues(SavedPage obj) {
ContentValues contentValues = new ContentValues();
- contentValues.put("title", obj.getTitle().getText());
- contentValues.put("namespace", obj.getTitle().getNamespace());
- contentValues.put("timestamp", obj.getTimestamp().getTime());
- contentValues.put("site", obj.getTitle().getSite().getDomain());
+ contentValues.put(COL_SITE, obj.getTitle().getSite().getDomain());
+ contentValues.put(COL_TITLE, obj.getTitle().getText());
+ contentValues.put(COL_NAMESPACE, obj.getTitle().getNamespace());
+ contentValues.put(COL_TIMESTAMP, obj.getTimestamp().getTime());
return contentValues;
}
@@ -53,13 +53,13 @@
case 1:
return new Column[] {
new Column("_id", "integer primary key"),
- new Column("site", "string"),
- new Column("title", "string"),
- new Column("timestamp", "integer")
+ new Column(COL_SITE, "string"),
+ new Column(COL_TITLE, "string"),
+ new Column(COL_TIMESTAMP, "integer")
};
case DB_VER_NAMESPACE_ADDED:
return new Column[] {
- new Column("namespace", "string")
+ new Column(COL_NAMESPACE, "string")
};
default:
return new Column[0];
@@ -68,7 +68,7 @@
@Override
protected String getPrimaryKeySelection() {
- return "site = ? AND title = ?";
+ return COL_SITE + " = ? AND " + COL_TITLE + " = ?";
}
@Override
diff --git
a/wikipedia/src/main/java/org/wikipedia/search/RecentSearchPersistenceHelper.java
b/wikipedia/src/main/java/org/wikipedia/search/RecentSearchPersistenceHelper.java
index 22580fa..7ad5f8e 100644
---
a/wikipedia/src/main/java/org/wikipedia/search/RecentSearchPersistenceHelper.java
+++
b/wikipedia/src/main/java/org/wikipedia/search/RecentSearchPersistenceHelper.java
@@ -10,22 +10,21 @@
private static final int DB_VER_INTRODUCED = 5;
- private static final int COL_INDEX_TEXT = 1;
- private static final int COL_INDEX_TIMESTAMP = 2;
+ private static final String COL_TEXT = "text";
+ private static final String COL_TIMESTAMP = "timestamp";
@Override
public RecentSearch fromCursor(Cursor c) {
- // Carefully, get them back by using position only
- String title = c.getString(COL_INDEX_TEXT);
- Date timestamp = new Date(c.getLong(COL_INDEX_TIMESTAMP));
+ String title = c.getString(c.getColumnIndex(COL_TEXT));
+ Date timestamp = new Date(c.getLong(c.getColumnIndex(COL_TIMESTAMP)));
return new RecentSearch(title, timestamp);
}
@Override
protected ContentValues toContentValues(RecentSearch obj) {
ContentValues contentValues = new ContentValues();
- contentValues.put("text", obj.getText());
- contentValues.put("timestamp", obj.getTimestamp().getTime());
+ contentValues.put(COL_TEXT, obj.getText());
+ contentValues.put(COL_TIMESTAMP, obj.getTimestamp().getTime());
return contentValues;
}
@@ -45,8 +44,8 @@
case DB_VER_INTRODUCED:
return new Column[] {
new Column("_id", "integer primary key"),
- new Column("text", "string"),
- new Column("timestamp", "integer"),
+ new Column(COL_TEXT, "string"),
+ new Column(COL_TIMESTAMP, "integer"),
};
default:
return new Column[0];
@@ -55,7 +54,7 @@
@Override
protected String getPrimaryKeySelection() {
- return "text = ?";
+ return COL_TEXT + " = ?";
}
@Override
--
To view, visit https://gerrit.wikimedia.org/r/229070
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings
Gerrit-MessageType: newchange
Gerrit-Change-Id: I55583e3ccdb88ed03442e2b36f6eb4b9b95e5ac3
Gerrit-PatchSet: 1
Gerrit-Project: apps/android/wikipedia
Gerrit-Branch: master
Gerrit-Owner: Deskana <[email protected]>
_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits