ref #10440: fix meta data problems
authorKatja <k.luther@bgbm.org>
Fri, 8 Dec 2023 13:08:38 +0000 (14:08 +0100)
committerKatja <k.luther@bgbm.org>
Fri, 8 Dec 2023 13:08:38 +0000 (14:08 +0100)
cdmlib-remote/src/main/java/eu/etaxonomy/cdm/remote/controller/iiif/ManifestComposer.java
cdmlib-services/src/main/java/eu/etaxonomy/cdm/api/service/MediaServiceImpl.java

index 48b5699a8d8798aaef11c6cc99515f3f407bef59..b6296848dccaa90b3bffc3ad459dfd085ad9dca2 100644 (file)
@@ -248,7 +248,12 @@ public class ManifestComposer {
                      .entrySet()
                      .stream()
                      .map(e -> new MetadataEntry(e.getKey(), e.getValue())).collect(Collectors.toList());
-            mediaMetadata.addAll(representationMetadata);
+            if (representationMetadata == null || representationMetadata.isEmpty()) {
+                //do nothing keep the meta data from the media object
+            }else {
+                mediaMetadata = representationMetadata;
+            }
+            //mediaMetadata.addAll(representationMetadata);
         } catch (IOException e) {
             logger.error("Error reading media metadata", e);
         } catch (HttpException e) {
index f12717ad3ce1785d323b791d67429d62909ca5b8..1451c12a5adebaaed3679170f609991caabfa1cb 100644 (file)
@@ -18,6 +18,7 @@ import java.util.Set;
 import java.util.UUID;
 import java.util.stream.Collectors;
 
+import org.apache.commons.lang3.StringUtils;
 import org.apache.http.HttpException;
 import org.apache.logging.log4j.LogManager;
 import org.apache.logging.log4j.Logger;
@@ -339,7 +340,24 @@ public class MediaServiceImpl extends IdentifiableServiceBase<Media,IMediaDao> i
     }
 
     private boolean containsCaseInsensitive(String s, List<String> l){
-        return l.stream().anyMatch(x -> x.equalsIgnoreCase(s));
+        boolean result = l.stream().anyMatch(x -> equalsIgnoreBlank(x, s));
+        return result;
+    }
+
+    private boolean equalsIgnoreBlank(String a, String b){
+        if (a.contains(" ")) {
+           a = StringUtils.replace(a," ", "");
+           if (a.equalsIgnoreCase(b)) {
+               return true;
+           }
+        }
+        if (b.contains(" ")) {
+            b = StringUtils.replace(b," ", "");
+            if (a.equalsIgnoreCase(b)) {
+                return true;
+            }
+        }
+        return a.equalsIgnoreCase(b);
     }
 
     protected List<String> mediaMetadataKeyExludes(){
@@ -358,7 +376,7 @@ public class MediaServiceImpl extends IdentifiableServiceBase<Media,IMediaDao> i
             }
             return Arrays.asList(PreferencePredicate.MediaMetadataKeynameIncludes.getDefaultValue().toString().split(","));
         }
-       // return pref.splitStringListValue();
+
         return Arrays.asList(pref.getValue().split(","));
     }
 }