diff options
author | Christian Schneppe <christian@pix-art.de> | 2019-01-27 12:43:19 +0100 |
---|---|---|
committer | Christian Schneppe <christian@pix-art.de> | 2019-01-27 12:43:19 +0100 |
commit | 30e6ac6324fa87d19b8e67252ceb5b2dddc2fd02 (patch) | |
tree | 5225b5ce8b6c991b7cf7dfb9dcc77baedc557f66 /src/main/java/de/pixart/messenger/persistance/DatabaseBackend.java | |
parent | 9fa86472deb7df5b03c72a5bd2a7a3f87bf03c36 (diff) |
scan all files in case some files were previously marked as deleted by accident
Diffstat (limited to 'src/main/java/de/pixart/messenger/persistance/DatabaseBackend.java')
-rw-r--r-- | src/main/java/de/pixart/messenger/persistance/DatabaseBackend.java | 36 |
1 files changed, 32 insertions, 4 deletions
diff --git a/src/main/java/de/pixart/messenger/persistance/DatabaseBackend.java b/src/main/java/de/pixart/messenger/persistance/DatabaseBackend.java index 02539c036..8336a4ed9 100644 --- a/src/main/java/de/pixart/messenger/persistance/DatabaseBackend.java +++ b/src/main/java/de/pixart/messenger/persistance/DatabaseBackend.java @@ -877,12 +877,25 @@ public class DatabaseBackend extends SQLiteOpenHelper { db.endTransaction(); } - public List<FilePath> getAllNonDeletedFilePath() { + public void markFilesAsChanged(List<FilePathInfo> files) { + SQLiteDatabase db = this.getReadableDatabase(); + final String where = Message.UUID + "=?"; + db.beginTransaction(); + for (FilePathInfo info : files) { + final ContentValues contentValues = new ContentValues(); + contentValues.put(Message.FILE_DELETED, info.FileDeleted ? 1 : 0); + db.update(Message.TABLENAME, contentValues, where, new String[]{info.uuid.toString()}); + } + db.setTransactionSuccessful(); + db.endTransaction(); + } + + public List<FilePathInfo> getFilePathInfo() { final SQLiteDatabase db = this.getReadableDatabase(); - final Cursor cursor = db.query(Message.TABLENAME, new String[]{Message.UUID, Message.RELATIVE_FILE_PATH}, "type in (1,2) and file_deleted=0 and " + Message.RELATIVE_FILE_PATH + " is not null", null, null, null, null); - final List<FilePath> list = new ArrayList<>(); + final Cursor cursor = db.query(Message.TABLENAME, new String[]{Message.UUID, Message.RELATIVE_FILE_PATH, Message.FILE_DELETED}, "type in (1,2) 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 FilePath(cursor.getString(0), cursor.getString(1))); + list.add(new FilePathInfo(cursor.getString(0), cursor.getString(1), cursor.getInt(2) > 0)); } if (cursor != null) { cursor.close(); @@ -913,6 +926,21 @@ public class DatabaseBackend extends SQLiteOpenHelper { } } + public static class FilePathInfo extends FilePath { + public boolean FileDeleted; + + private FilePathInfo(String uuid, String path, boolean deleted) { + super(uuid, path); + this.FileDeleted = deleted; + } + + public boolean setFileDeleted(boolean deleted) { + final boolean changed = deleted != this.FileDeleted; + this.FileDeleted = deleted; + return changed; + } + } + public Conversation findConversation(final Account account, final Jid contactJid) { SQLiteDatabase db = this.getReadableDatabase(); String[] selectionArgs = {account.getUuid(), |