From e39331e1d14e38099df9d41529de7109ed2c2b97 Mon Sep 17 00:00:00 2001
From: "Stefan E. Funk" <funk@sub.uni-goettingen.de>
Date: Wed, 21 Dec 2022 17:53:11 +0100
Subject: [PATCH] fix: add title again to fieldLoader

---
 .../textgrid/middleware/OaipmhUtilities.java  | 41 ++++++++++++++++---
 1 file changed, 36 insertions(+), 5 deletions(-)

diff --git a/oaipmh-core/src/main/java/info/textgrid/middleware/OaipmhUtilities.java b/oaipmh-core/src/main/java/info/textgrid/middleware/OaipmhUtilities.java
index d8fcc6f1..142f456e 100644
--- a/oaipmh-core/src/main/java/info/textgrid/middleware/OaipmhUtilities.java
+++ b/oaipmh-core/src/main/java/info/textgrid/middleware/OaipmhUtilities.java
@@ -395,7 +395,7 @@ public class OaipmhUtilities {
    * 
    * @param resultFromGetRequestInES
    * @param fields
-   * @return Returns MORE params as a list!
+   * @return Returns ONE or MORE params as a list!
    */
   public static List<String> fieldLoader(JSONObject resultFromGetRequestInES, String[] fields) {
 
@@ -404,30 +404,61 @@ public class OaipmhUtilities {
 
     List<String> fieldResults = new ArrayList<String>();
 
+    // Loop fields.
     int count = 0;
     for (String field : fields) {
+
+      // Check if field has got "." in it, such as
+      // "edition.source.bibliographicCitation.placeOfPublication".
       String[] fieldPathForESIndex = field.split(ES_DIVIDER_REGEXP);
 
       log.fine("field[" + count++ + "]: " + field);
 
       JSONObject singlePath = resultFromGetRequestInES;
       try {
+        // Loop the splitted field components, such as "edition", "source", etcpp.
         for (int i = 0; i < fieldPathForESIndex.length; i++) {
+          // Case 1: We have only one field component.
           if (i < fieldPathForESIndex.length - 1) {
+            String singleFieldComponent = fieldPathForESIndex[i];
+
+            log.fine("case 1: we have only one field component: " + singleFieldComponent);
+
             singlePath = singlePath.getJSONObject(fieldPathForESIndex[i]);
-          } else if (fieldPathForESIndex.length == 1) {
+            fieldResults.add(singlePath.toString());
+          }
+          // Case 2: We have only one field component??
+          else if (fieldPathForESIndex.length == 1) {
+            String singleFieldComponent = fieldPathForESIndex[i];
+
+            log.fine("case 2: we have only one field component: " + singleFieldComponent);
+
             JSONObject resultiDingsda =
-                resultFromGetRequestInES.getJSONObject(fieldPathForESIndex[i]);
+                resultFromGetRequestInES.getJSONObject(singleFieldComponent);
             fieldResults.add(resultiDingsda.toString());
-          } else {
+          }
+          // Case 3: We have got more field components.
+          else {
             String res = singlePath.get(fieldPathForESIndex[i]).toString();
+
+            log.fine("case 3: we have " + fieldPathForESIndex.length + " components in " + field);
+
+            // Examine JSONArray.
             if (res.startsWith("[")) {
+
+              log.fine("json array found: " + res);
+
               JSONArray array = new JSONArray(res);
               for (int j = 0; j < array.length(); j++) {
                 String find = array.getString(j).toString();
                 fieldResults.add(find);
               }
-            } else {
+            }
+            // Examine
+            else {
+
+              log.fine("no array found: " + res);
+
               fieldResults.add(singlePath.get(fieldPathForESIndex[i]).toString());
             }
           }
-- 
GitLab