From cf456a04bf10df071efb9825493460c15b139f08 Mon Sep 17 00:00:00 2001
From: Jens Steidl <Jens.Steidl@slub-dresden.de>
Date: Mon, 5 Sep 2022 11:15:46 +0200
Subject: [PATCH] - handle all Rosetta DNX properties requiring a number value
 if not set by mediainfo

---
 ...icalMetadataExtractorMediaConchPlugin.java | 30 +++++++++++++------
 1 file changed, 21 insertions(+), 9 deletions(-)

diff --git a/java/org/slub/rosetta/dps/repository/plugin/SLUBTechnicalMetadataExtractorMediaConchPlugin.java b/java/org/slub/rosetta/dps/repository/plugin/SLUBTechnicalMetadataExtractorMediaConchPlugin.java
index e1c2d30..f183564 100644
--- a/java/org/slub/rosetta/dps/repository/plugin/SLUBTechnicalMetadataExtractorMediaConchPlugin.java
+++ b/java/org/slub/rosetta/dps/repository/plugin/SLUBTechnicalMetadataExtractorMediaConchPlugin.java
@@ -68,6 +68,23 @@ public class SLUBTechnicalMetadataExtractorMediaConchPlugin implements MDExtract
     private boolean isDifferentProfile = true;
     private final Map<String,String> attributes = new HashMap<>();
     //static final ExLogger log = ExLogger.getExLogger(SLUBTechnicalMetadataExtractorMediaConchPlugin.class, ExLogger.VALIDATIONSTACK);
+    private final static ArrayList<String> dnxPropertiesTypeNumber = new ArrayList<String>() {{
+        // HINT: based on FL 7.1100 mappings for mediainfo (https://github.com/rosetta-format-library/RosettaFormatLibrary/releases/tag/7.1100)
+        add("audio.duration");
+        add("audio.sampling_rate");
+        add("audio.stream_size");
+        add("general.audio_count");
+        add("general.menu_count");
+        add("general.other_count");
+        add("general.stream_size");
+        add("general.text_count");
+        add("general.video_count");
+        add("video.bit_rate");
+        add("video.display_aspect_ratio");
+        add("video.duration");
+        add("video.extra.max_slices_count");
+        add("video.frame_count");
+    }};
 
     /** constructor */
     public SLUBTechnicalMetadataExtractorMediaConchPlugin() {
@@ -357,16 +374,11 @@ public class SLUBTechnicalMetadataExtractorMediaConchPlugin implements MDExtract
       if (attributes.containsKey(attribute)) {
           return attributes.get(attribute);
       }
-      /* workaround for no-match, because
-         Rosetta expects NUMBER value if key ends with "Count", example:
-         mediainfo.track.General.MenuCount
-         mediainfo.track.General.OtherCount
-         mediainfo.track.General.TextCount
-       */
-      if (attribute.endsWith("Count")) {
-          return "0";
+      // HINT: Rosetta expects a number of specific DNX properties instead of text
+      if (dnxPropertiesTypeNumber.contains( attribute.toString() )) {
+          return "0"; // type NUMBER
       }
-      return "not found";
+      return "not found";  // type TEXT & STRING
     }
 
     @Override
-- 
GitLab