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