aboutsummaryrefslogtreecommitdiffstats
path: root/src/main/java/de/pixart/messenger/persistance/DatabaseBackend.java
diff options
context:
space:
mode:
authorChristian Schneppe <christian@pix-art.de>2019-01-27 12:43:19 +0100
committerChristian Schneppe <christian@pix-art.de>2019-01-27 12:43:19 +0100
commit30e6ac6324fa87d19b8e67252ceb5b2dddc2fd02 (patch)
tree5225b5ce8b6c991b7cf7dfb9dcc77baedc557f66 /src/main/java/de/pixart/messenger/persistance/DatabaseBackend.java
parent9fa86472deb7df5b03c72a5bd2a7a3f87bf03c36 (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.java36
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(),