From 2f732c099b1e647c04c835e468200faf62b9b3f0 Mon Sep 17 00:00:00 2001 From: k3b <1374583+k3b@users.noreply.github.com> Date: Tue, 22 Dec 2020 14:16:32 +0100 Subject: [PATCH] #169: Update exif-file-info also updates mediadb without changing mediadb-id: Imagedetail: EditExif,rename,move,copy,delete --- .../android/io/AndroidFileCommandsDbImpl.java | 25 +++++++++++++------ .../PhotoPropertiesMediaFilesScanner.java | 6 ++++- 2 files changed, 23 insertions(+), 8 deletions(-) diff --git a/app/src/main/java/de/k3b/android/io/AndroidFileCommandsDbImpl.java b/app/src/main/java/de/k3b/android/io/AndroidFileCommandsDbImpl.java index 79b35132..e81024fc 100644 --- a/app/src/main/java/de/k3b/android/io/AndroidFileCommandsDbImpl.java +++ b/app/src/main/java/de/k3b/android/io/AndroidFileCommandsDbImpl.java @@ -73,12 +73,13 @@ protected boolean osFileMove(IFile targetFullPath, IFile sourceFullPath) { // Database update must be done before super.osFileMove to avoid deleting/recreating old file entry if (PhotoPropertiesUtil.isImage(srcPath, PhotoPropertiesUtil.IMG_TYPE_ALL)) { toPath = targetFullPath.getAbsolutePath(); - dbSuccess = renameInDatabase("osFileMove", srcPath, toPath); + //!!! TODO PhotoPropertiesMediaFilesScanner.isNoMedia(targetFullPath)) + dbSuccess = renameInDatabase("osFileMove", targetFullPath, sourceFullPath); } final boolean osSuccess = super.osFileMove(targetFullPath, sourceFullPath); if (!osSuccess && dbSuccess) { // os falled. Rollback - renameInDatabase("osFileMove-rollback", toPath, srcPath); + renameInDatabase("osFileMove-rollback", sourceFullPath, targetFullPath); } return osSuccess; } @@ -88,11 +89,21 @@ protected boolean osDeleteFile(IFile file) { return super.osDeleteFile(file); } - private boolean renameInDatabase(String dbgContext, String fromPath, String toPath) { - ContentValues values = new ContentValues(); - values.put(FotoSql.SQL_COL_PATH, toPath); - final int execResultCount = FotoSql.getMediaDBApi(). - execUpdate(this.getClass().getSimpleName() + dbgContext, fromPath, values, null); + private boolean renameInDatabase(String dbgContext, IFile targetFullPath, IFile sourceFullPath) { + final String srcPath = sourceFullPath.getAbsolutePath(); + String toPath = null; + boolean dbSuccess = false; + + // TODO !!! check nomedia !!! + // Database update must be done before super.osFileMove to avoid deleting/recreating old file entry + if (PhotoPropertiesUtil.isImage(srcPath, PhotoPropertiesUtil.IMG_TYPE_ALL)) { + toPath = targetFullPath.getAbsolutePath(); + + ContentValues values = new ContentValues(); + values.put(FotoSql.SQL_COL_PATH, toPath); + final int execResultCount = FotoSql.getMediaDBApi(). + execUpdate(this.getClass().getSimpleName() + dbgContext, fromPath, values, null); + } return 1 == execResultCount; } diff --git a/app/src/main/java/de/k3b/android/util/PhotoPropertiesMediaFilesScanner.java b/app/src/main/java/de/k3b/android/util/PhotoPropertiesMediaFilesScanner.java index 3a59dc7a..4fa26e57 100644 --- a/app/src/main/java/de/k3b/android/util/PhotoPropertiesMediaFilesScanner.java +++ b/app/src/main/java/de/k3b/android/util/PhotoPropertiesMediaFilesScanner.java @@ -116,7 +116,7 @@ public static void notifyChanges(Context context, String why) { public static boolean isNoMedia(int maxLevel, IFile[] pathNames) { if (pathNames != null) { - for(IFile path : pathNames) { + for (IFile path : pathNames) { if (isNoMedia(path, maxLevel)) { return true; } @@ -126,6 +126,10 @@ public static boolean isNoMedia(int maxLevel, IFile[] pathNames) { return false; } + public static boolean isNoMedia(IFile path) { + return isNoMedia(path, PhotoPropertiesMediaFilesScanner.DEFAULT_SCAN_DEPTH); + } + public static boolean isNoMedia(IFile path, int maxLevel) { return isNoMedia(path, maxLevel, null); }