From 68e1878365f304b76d717b1e3fa3b329f46a0e3c Mon Sep 17 00:00:00 2001
From: "Stefan E. Funk" <funk@sub.uni-goettingen.de>
Date: Fri, 18 Jun 2021 16:34:42 +0200
Subject: [PATCH] mc

---
 .../textgrid/middleware/DublinCoreFieldLoader.java   | 12 ++++++++----
 .../textgrid/middleware/RecordListDelivererDC.java   |  1 +
 2 files changed, 9 insertions(+), 4 deletions(-)

diff --git a/oaipmh-core/src/main/java/info/textgrid/middleware/DublinCoreFieldLoader.java b/oaipmh-core/src/main/java/info/textgrid/middleware/DublinCoreFieldLoader.java
index 727d3898..79020ea9 100644
--- a/oaipmh-core/src/main/java/info/textgrid/middleware/DublinCoreFieldLoader.java
+++ b/oaipmh-core/src/main/java/info/textgrid/middleware/DublinCoreFieldLoader.java
@@ -93,7 +93,7 @@ public class DublinCoreFieldLoader {
 
     List<String> dates = new ArrayList<String>();
 
-    // FIXME TADAA?
+    // FIXME TADAA? TADAAAAA???????
     System.out.println("TADA");
 
     for (String field : fields) {
@@ -124,7 +124,7 @@ public class DublinCoreFieldLoader {
       if (fields != null) {
         for (String field : fields) {
           if (responseWorkValues.getSourceAsMap().get(field) == null) {
-            String[] requestedField = field.split("\\.");
+            String[] requestedField = field.split(OAIPMHUtilities.ES_DIVIDER_REGEXP);
             Map<String, Object> nestedMap = responseWorkValues.getSourceAsMap();
             String valueOfRequestedField = null;
             Map<String, Object> nestedMap2 = null;
@@ -176,7 +176,7 @@ public class DublinCoreFieldLoader {
     if (fields != null) {
       for (String field : fields) {
         if (hit.getSourceAsMap().get(field) == null) {
-          String[] requestedField = field.split("\\.");
+          String[] requestedField = field.split(OAIPMHUtilities.ES_DIVIDER_REGEXP);
           Map<String, Object> nestedMap = hit.getSourceAsMap();
           String valueOfRequestedField = null;
           Map<String, Object> nestedMap2 = null;
@@ -193,7 +193,11 @@ public class DublinCoreFieldLoader {
                 nestedMap2 != null && nestedMap2.get(requestedField[i]) != null) {
               valueOfRequestedField = nestedMap2.get(requestedField[i]).toString();
               if (valueOfRequestedField.length() > 0) {
-                list.add(valueOfRequestedField);
+                // Only add list entry if prefix is empty or beginning with prefix otherwise!
+                if (prefix.isEmpty()
+                    || hit.getSourceAsMap().get(field).toString().startsWith(prefix)) {
+                  list.add(valueOfRequestedField);
+                }
               }
             }
             nestedMap = nestedMap2;
diff --git a/oaipmh-core/src/main/java/info/textgrid/middleware/RecordListDelivererDC.java b/oaipmh-core/src/main/java/info/textgrid/middleware/RecordListDelivererDC.java
index 94dc1212..0ecfb024 100644
--- a/oaipmh-core/src/main/java/info/textgrid/middleware/RecordListDelivererDC.java
+++ b/oaipmh-core/src/main/java/info/textgrid/middleware/RecordListDelivererDC.java
@@ -29,6 +29,7 @@ import info.textgrid.middleware.oaipmh.ListRecordsType;
 import info.textgrid.middleware.oaipmh.MetadataType;
 import info.textgrid.middleware.oaipmh.RecordType;
 import info.textgrid.middleware.oaipmh.ResumptionTokenType;
+import javafx.collections.transformation.SortedList;
 
 /**
  *
-- 
GitLab