From 24ac3dda1a63ded0cefa0cade0e3e78e79d21960 Mon Sep 17 00:00:00 2001
From: "Stefan E. Funk" <funk@sub.uni-goettingen.de>
Date: Fri, 18 Jun 2021 10:27:04 +0200
Subject: [PATCH] Use utils for dividing values

---
 .../middleware/DublinCoreBuilder.java         |   4 +-
 .../middleware/IdentifierListDelivererDC.java | 120 ++++++++++--------
 .../textgrid/middleware/OaiPmhTestDH.java     |   2 +-
 3 files changed, 68 insertions(+), 58 deletions(-)

diff --git a/oaipmh-core/src/main/java/info/textgrid/middleware/DublinCoreBuilder.java b/oaipmh-core/src/main/java/info/textgrid/middleware/DublinCoreBuilder.java
index 60733723..17386deb 100644
--- a/oaipmh-core/src/main/java/info/textgrid/middleware/DublinCoreBuilder.java
+++ b/oaipmh-core/src/main/java/info/textgrid/middleware/DublinCoreBuilder.java
@@ -165,7 +165,9 @@ public final class DublinCoreBuilder {
   public void setIdentifier(List<String> identifiers) {
 	
     for (String dcidentifier : identifiers) {
-    	System.out.println("hooray");
+
+      // System.out.println("hooray");
+      
       ElementType identifierElement = new ElementType();
       identifierElement.setValue(dcidentifier);
       JAXBElement<ElementType> dcCoreIdentifier = oaiDcObj.createIdentifier(identifierElement);
diff --git a/oaipmh-core/src/main/java/info/textgrid/middleware/IdentifierListDelivererDC.java b/oaipmh-core/src/main/java/info/textgrid/middleware/IdentifierListDelivererDC.java
index ffc7b063..defda4a5 100644
--- a/oaipmh-core/src/main/java/info/textgrid/middleware/IdentifierListDelivererDC.java
+++ b/oaipmh-core/src/main/java/info/textgrid/middleware/IdentifierListDelivererDC.java
@@ -18,12 +18,11 @@ import org.elasticsearch.index.query.QueryBuilder;
 import org.elasticsearch.index.query.QueryBuilders;
 import org.elasticsearch.search.SearchHit;
 import org.elasticsearch.search.builder.SearchSourceBuilder;
-import org.elasticsearch.search.fetch.subphase.FetchSourceContext;
+import org.json.JSONObject;
+import info.textgrid.middleware.common.TextGridMimetypes;
 import info.textgrid.middleware.oaipmh.HeaderType;
 import info.textgrid.middleware.oaipmh.ListIdentifiersType;
 import info.textgrid.middleware.oaipmh.ResumptionTokenType;
-import info.textgrid.middleware.common.TextGridMimetypes;
-
 
 /**
  * <p>
@@ -31,7 +30,8 @@ import info.textgrid.middleware.common.TextGridMimetypes;
  * </p>
  * 
  * @author Maximilian Brodhun, SUB Göttingen
- * @version 2019-10-28
+ * @author Stefan E. Funk, SUB Göttingen
+ * @version 2021-06-18
  * @since 2014-02-20
  */
 
@@ -124,7 +124,7 @@ public class IdentifierListDelivererDC extends IdentifierListDelivererAbstract {
     String[] includes = this.identifierListFields;
     String[] excludes = Strings.EMPTY_ARRAY;
     // TODO: necessary?
-    FetchSourceContext fetchSourceContext = new FetchSourceContext(true, includes, excludes);
+    // FetchSourceContext fetchSourceContext = new FetchSourceContext(true, includes, excludes);
 
     SearchRequest searchRequest =
         new SearchRequest(OAI_ESClient.getEsIndex()).searchType(SearchType.QUERY_THEN_FETCH);
@@ -165,12 +165,12 @@ public class IdentifierListDelivererDC extends IdentifierListDelivererAbstract {
     long size = listFurtherValues.getHits().totalHits;
     setResultSize(size);
 
-    System.out.println("  ##  hits  -->  " + size);
+    // System.out.println(" ## hits --> " + size);
 
     for (SearchHit hit : listFurtherValues.getHits().getHits()) {
       i++;
 
-      System.out.println("  ##  hit  -->  " + hit.getId());
+      // System.out.println(" ## hit --> " + hit.getId());
 
       // Handle TextGrid.
       if (this.textgrid) {
@@ -190,44 +190,49 @@ public class IdentifierListDelivererDC extends IdentifierListDelivererAbstract {
       // Handle DARIAH.
       else if (this.dariah) {
 
-        System.out.println("  ##  dateOfObjectCreation  -->  " + this.dateOfObjectCreation);
+        // System.out.println(" ## dateOfObjectCreation --> " + this.dateOfObjectCreation);
+
+        JSONObject json = new JSONObject(hit.getSourceAsMap());
 
         // Get modifiedDate field.
         if (this.dateOfObjectCreation.contains(DH_ES_DIVIDER_CHAR)) {
-          // Divide object.
-          String dateOfObjectCreationEntries[] =
-              this.dateOfObjectCreation.split(DH_ES_DIVIDER_REGEXP);
-
-          System.out.println("  ##  divider  -->  " + DH_ES_DIVIDER_CHAR);
-          System.out.println("  ##  length of dOOCD  -->  " + dateOfObjectCreationEntries.length);
-          System.out.println("  ##  dOOCD  -->  " + dateOfObjectCreationEntries);
-
-          if (dateOfObjectCreationEntries.length != 2) {
-            // FIXME Go to ERROR state!
-          } else {
-            String prefix = dateOfObjectCreationEntries[0];
-            String suffix = dateOfObjectCreationEntries[1];
-
-            if (hit.getSourceAsMap().containsKey(prefix)) {
 
-              HashMap<String, Object> prefixMap =
-                  (HashMap<String, Object>) hit.getSourceAsMap().get(prefix);
-
-              System.out.println("  ##  prefix value (" + prefix + ")  -->  " + prefixMap);
-
-              this.datestamp = prefixMap.get(suffix).toString();
-            }
-          }
+          this.datestamp = OAIPMHUtilities.fieldLoader(json, this.dateOfObjectCreation);
+
+//          // Divide object.
+//          String dateOfObjectCreationEntries[] =
+//              this.dateOfObjectCreation.split(DH_ES_DIVIDER_REGEXP);
+//
+//          // System.out.println(" ## divider --> " + DH_ES_DIVIDER_CHAR);
+//          // System.out.println(" ## length of dOOCD --> " + dateOfObjectCreationEntries.length);
+//          // System.out.println(" ## dOOCD --> " + dateOfObjectCreationEntries);
+//
+//          if (dateOfObjectCreationEntries.length != 2) {
+//            // FIXME Go to ERROR state!
+//          } else {
+//            String prefix = dateOfObjectCreationEntries[0];
+//            String suffix = dateOfObjectCreationEntries[1];
+//
+//            if (hit.getSourceAsMap().containsKey(prefix)) {
+//
+//              HashMap<String, Object> prefixMap =
+//                  (HashMap<String, Object>) hit.getSourceAsMap().get(prefix);
+//
+//              // System.out.println(" ## prefix value (" + prefix + ") --> " + prefixMap);
+//
+//              this.datestamp = prefixMap.get(suffix).toString();
+//            }
+//          }
         } else {
           this.datestamp = hit.getSourceAsMap().get(this.dateOfObjectCreation).toString();
         }
         // Convert datestamp.
         try {
-          System.out.println("  ##  datestamp  -->  " + this.datestamp);
+          // System.out.println(" ## datestamp --> " + this.datestamp);
 
           this.datestamp = OAIPMHUtilities.convertDateFormat(this.datestamp).toXMLFormat();
 
-          System.out.println("  ##  datestamp converted  -->  " + this.datestamp);
+          // System.out.println(" ## datestamp converted --> " + this.datestamp);
 
         } catch (ParseException e) {
           log.debug(e);
@@ -240,34 +245,37 @@ public class IdentifierListDelivererDC extends IdentifierListDelivererAbstract {
         // Get identifier field.
         String identifier = "";
         if (this.identifierField.contains(DH_ES_DIVIDER_CHAR)) {
-          // Divide object.
-          String identifierEntries[] = this.identifierField.split(DH_ES_DIVIDER_REGEXP);
-
-          System.out.println("  ##  divider  -->  " + DH_ES_DIVIDER_CHAR);
-          System.out.println("  ##  length of iE  -->  " + identifierEntries.length);
-          System.out.println("  ##  iE  -->  " + identifierEntries);
-
-          if (identifierEntries.length != 2) {
-            // FIXME Go to ERROR state!
-          } else {
-            String prefix = identifierEntries[0];
-            String suffix = identifierEntries[1];
-
-            if (hit.getSourceAsMap().containsKey(prefix)) {
-
-              HashMap<String, Object> prefixMap =
-                  (HashMap<String, Object>) hit.getSourceAsMap().get(prefix);
-
-              System.out.println("  ##  prefix value (" + prefix + ")  -->  " + prefixMap);
 
-              identifier = prefixMap.get(suffix).toString();
-            }
-          }
+          identifier = OAIPMHUtilities.fieldLoader(json, this.identifierField);
+          
+//          // Divide object.
+//          String identifierEntries[] = this.identifierField.split(DH_ES_DIVIDER_REGEXP);
+//
+//          // System.out.println(" ## divider --> " + DH_ES_DIVIDER_CHAR);
+//          // System.out.println(" ## length of iE --> " + identifierEntries.length);
+//          // System.out.println(" ## iE --> " + identifierEntries);
+//
+//          if (identifierEntries.length != 2) {
+//            // FIXME Go to ERROR state!
+//          } else {
+//            String prefix = identifierEntries[0];
+//            String suffix = identifierEntries[1];
+//
+//            if (hit.getSourceAsMap().containsKey(prefix)) {
+//
+//              HashMap<String, Object> prefixMap =
+//                  (HashMap<String, Object>) hit.getSourceAsMap().get(prefix);
+//
+//              // System.out.println(" ## prefix value (" + prefix + ") --> " + prefixMap);
+//
+//              identifier = prefixMap.get(suffix).toString();
+//            }
+//          }
         } else {
           identifier = hit.getSourceAsMap().get(this.identifierField).toString();
         }
 
-        System.out.println("  ##  identifier  -->  " + identifier);
+        // System.out.println(" ## identifier --> " + identifier);
 
         lit = setListIdentifierHeader(this.datestamp, identifier, lit, set);
       }
diff --git a/oaipmh-core/src/test/java/info/textgrid/middleware/OaiPmhTestDH.java b/oaipmh-core/src/test/java/info/textgrid/middleware/OaiPmhTestDH.java
index 03b1db95..0cb8240e 100644
--- a/oaipmh-core/src/test/java/info/textgrid/middleware/OaiPmhTestDH.java
+++ b/oaipmh-core/src/test/java/info/textgrid/middleware/OaiPmhTestDH.java
@@ -9,7 +9,7 @@ import info.textgrid.middleware.oaipmh.GranularityType;
 import info.textgrid.middleware.common.TextGridMimetypes;
 
 /**
- *
+ * FIXME: Add documentation how to use this class, use SSH tunneling?
  */
 @Ignore
 public class OaiPmhTestDH {
-- 
GitLab