aboutsummaryrefslogtreecommitdiffstats
path: root/src/main/java/de/pixart/messenger/persistance/DatabaseBackend.java
diff options
context:
space:
mode:
authorChristian Schneppe <christian@pix-art.de>2019-05-04 16:05:01 +0200
committerChristian Schneppe <christian@pix-art.de>2019-05-04 16:05:01 +0200
commitad6330cca8c860db7ab4bd084e9d3d040100e444 (patch)
tree0a5b9a690b0bc96275240ae8ac3bdd5f3af2621a /src/main/java/de/pixart/messenger/persistance/DatabaseBackend.java
parentba03ee41a83d33ed8550633f9e48eb5808cc8bf8 (diff)
go forward through cursor in message restore
We have seen some weird CursorIndexNotFoundException that we were unable to reproduce. We assume that going forward (moveToNext()) through the cursor instead of (moveToPrevious() fixes that issue
Diffstat (limited to 'src/main/java/de/pixart/messenger/persistance/DatabaseBackend.java')
-rw-r--r--src/main/java/de/pixart/messenger/persistance/DatabaseBackend.java15
1 files changed, 8 insertions, 7 deletions
diff --git a/src/main/java/de/pixart/messenger/persistance/DatabaseBackend.java b/src/main/java/de/pixart/messenger/persistance/DatabaseBackend.java
index 37f577079..6fc6d7569 100644
--- a/src/main/java/de/pixart/messenger/persistance/DatabaseBackend.java
+++ b/src/main/java/de/pixart/messenger/persistance/DatabaseBackend.java
@@ -780,14 +780,15 @@ public class DatabaseBackend extends SQLiteOpenHelper {
null, null, Message.TIME_SENT + " DESC",
String.valueOf(limit));
}
- if (cursor.getCount() > 0) {
- cursor.moveToLast();
- do {
- Message message = Message.fromCursor(cursor, conversation);
+ while (cursor.moveToNext()) {
+ try {
+ final Message message = Message.fromCursor(cursor, conversation);
if (message != null && !message.isMessageDeleted()) {
- list.add(message);
+ list.add(0, message);
}
- } while (cursor.moveToPrevious());
+ } catch (Exception e) {
+ Log.e(Config.LOGTAG, "unable to restore message");
+ }
}
cursor.close();
return list;
@@ -891,7 +892,7 @@ public class DatabaseBackend extends SQLiteOpenHelper {
public List<FilePathInfo> getFilePathInfo() {
final SQLiteDatabase db = this.getReadableDatabase();
- final Cursor cursor = db.query(Message.TABLENAME, new String[]{Message.UUID, Message.RELATIVE_FILE_PATH, Message.DELETED}, "type in (1,2,5) and "+Message.RELATIVE_FILE_PATH+" is not null", null, null, null, null);
+ final Cursor cursor = db.query(Message.TABLENAME, new String[]{Message.UUID, Message.RELATIVE_FILE_PATH, Message.DELETED}, "type in (1,2,5) and " + Message.RELATIVE_FILE_PATH + " is not null", null, null, null, null);
final List<FilePathInfo> list = new ArrayList<>();
while (cursor != null && cursor.moveToNext()) {
list.add(new FilePathInfo(cursor.getString(0), cursor.getString(1), cursor.getInt(2) > 0));