From 4fdcae3909c00fb6a011b3c379232d44e8ec1d60 Mon Sep 17 00:00:00 2001 From: Thibault Deckers Date: Thu, 27 Aug 2020 23:43:07 +0900 Subject: [PATCH] fixed metadata reading across multiple directories of same type (all metadata merge) --- .../thibault/aves/channel/calls/MetadataHandler.java | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/android/app/src/main/java/deckers/thibault/aves/channel/calls/MetadataHandler.java b/android/app/src/main/java/deckers/thibault/aves/channel/calls/MetadataHandler.java index 01adb34a6..522661dc4 100644 --- a/android/app/src/main/java/deckers/thibault/aves/channel/calls/MetadataHandler.java +++ b/android/app/src/main/java/deckers/thibault/aves/channel/calls/MetadataHandler.java @@ -34,6 +34,7 @@ import com.drew.metadata.xmp.XmpDirectory; import java.io.InputStream; import java.util.HashMap; import java.util.Map; +import java.util.Objects; import java.util.TimeZone; import java.util.regex.Matcher; import java.util.regex.Pattern; @@ -147,9 +148,11 @@ public class MetadataHandler implements MethodChannel.MethodCallHandler { Metadata metadata = ImageMetadataReader.readMetadata(is); for (Directory dir : metadata.getDirectories()) { if (dir.getTagCount() > 0) { - Map dirMap = new HashMap<>(); // directory name - metadataMap.put(dir.getName(), dirMap); + String dirName = dir.getName(); + Map dirMap = Objects.requireNonNull(metadataMap.getOrDefault(dirName, new HashMap<>())); + metadataMap.put(dirName, dirMap); + // tags for (Tag tag : dir.getTags()) { dirMap.put(tag.getTagName(), tag.getDescription());