From 62aad7349929523e1d04f1a58319fd62f2c2dfe4 Mon Sep 17 00:00:00 2001
From: "Stefan E. Funk" <funk@sub.uni-goettingen.de>
Date: Fri, 23 Sep 2022 17:48:13 +0200
Subject: [PATCH] fix: refactor beans.xml and a little more in IDIOM
 ListRecords

---
 .../IdentifierListDelivererIDIOM.java         | 10 ++-----
 .../middleware/RecordDelivererIDIOM.java      | 11 ++++---
 .../middleware/RecordListDelivererIDIOM.java  | 30 ++++++++++++-------
 .../test/online/OAIPMHUtilitiesOnline.java    |  5 +++-
 .../online/tg/TestClassicMayanOnline.java     |  2 +-
 .../test/online/tg/TestTGBasicsOnline.java    | 12 ++------
 .../test/online/tg/TestTGGetRecordOnline.java | 14 ++-------
 .../tg/TestTGListIdentifiersOnline.java       | 23 +++-----------
 .../online/tg/TestTGListRecordsOnline.java    | 19 +++---------
 ...oaipmh.test.dev-textgridlab-org.properties |  4 +--
 .../oaipmh.test.textgridlab-org.properties    |  4 +--
 .../src/main/webapp/WEB-INF/beans.xml         |  2 +-
 12 files changed, 48 insertions(+), 88 deletions(-)

diff --git a/oaipmh-core/src/main/java/info/textgrid/middleware/IdentifierListDelivererIDIOM.java b/oaipmh-core/src/main/java/info/textgrid/middleware/IdentifierListDelivererIDIOM.java
index d68d8849..3f272741 100644
--- a/oaipmh-core/src/main/java/info/textgrid/middleware/IdentifierListDelivererIDIOM.java
+++ b/oaipmh-core/src/main/java/info/textgrid/middleware/IdentifierListDelivererIDIOM.java
@@ -22,7 +22,7 @@ import info.textgrid.middleware.oaipmh.ResumptionTokenType;
 /**
  * @author Max Brodhun, SUB Göttingen
  * @author Stefan E. Funk, SUB Göttingen
- * @version 2022-09-21
+ * @version 2022-09-23
  */
 public class IdentifierListDelivererIDIOM extends IdentifierListDelivererAbstract {
 
@@ -124,19 +124,15 @@ public class IdentifierListDelivererIDIOM extends IdentifierListDelivererAbstrac
         String textgridURI =
             OAIPMHUtilities.fieldLoader(new JSONObject(hit.getSourceAsMap()), "textgridUri");
 
-        // IF we really do need the RecordDelivererIDIOM object here, we have to set the
-        // elasticsearch client!
-        this.idiomRecord.setOaiEsClient(this.oaiEsClient);
         // FIXME BTW: We only need ID and DATESTAMP for ListIdentifiers, WHY do we get every
         // complete RECORD??
-        identifierList.getHeader().add(this.idiomRecord
-            .getRecordById(textgridURI.replace(".0", "")).getRecord().getHeader());
+        identifierList.getHeader().add(
+            this.idiomRecord.getRecordById(textgridURI.replace(".0", "")).getRecord().getHeader());
       }
 
       // Check the need for a resumption token!
       ResumptionTokenType responseToken = OAIPMHUtilities.getResumptionToken(completeListSize,
           resumptionToken, cursorCollector, scrollID, this.idiomResponseSize, i);
-
       if (responseToken != null) {
         identifierList.setResumptionToken(responseToken);
       }
diff --git a/oaipmh-core/src/main/java/info/textgrid/middleware/RecordDelivererIDIOM.java b/oaipmh-core/src/main/java/info/textgrid/middleware/RecordDelivererIDIOM.java
index bbf05513..f83b1e72 100644
--- a/oaipmh-core/src/main/java/info/textgrid/middleware/RecordDelivererIDIOM.java
+++ b/oaipmh-core/src/main/java/info/textgrid/middleware/RecordDelivererIDIOM.java
@@ -24,7 +24,7 @@ import info.textgrid.middleware.oaipmh.RecordType;
 /**
  * @author Maximilian Brodhun, SUB Göttingen
  * @author Stefan E. Funk, SUB Göttingen
- * @version 2022-09-21
+ * @version 2022-09-23
  * @since 2019-03-12
  */
 @Component
@@ -34,7 +34,7 @@ public class RecordDelivererIDIOM extends RecordDelivererAbstract {
 
   private IDIOMImages idiomImages;
 
-  RecordType record = new RecordType();
+  private RecordType record = new RecordType();
   private String dateOfLastObjectModification;
   private String objectType;
 
@@ -189,11 +189,10 @@ public class RecordDelivererIDIOM extends RecordDelivererAbstract {
     log.fine("changedId: " + changedId);
 
     JSONObject json = new JSONObject();
-    String[] fields = {TGConstants.CREATED, TGConstants.MODIFIED_FIELD, "notes"};
+    String[] searchFields = {TGConstants.CREATED, TGConstants.MODIFIED_FIELD, "notes"};
 
-    json = new JSONObject(OAIPMHUtilities
-        .getRcordByIDFromElasticSearch(this.oaiEsClient, changedId, fields, Strings.EMPTY_ARRAY)
-        .getSource());
+    json = new JSONObject(OAIPMHUtilities.getRcordByIDFromElasticSearch(this.oaiEsClient, changedId,
+        searchFields, Strings.EMPTY_ARRAY).getSource());
 
     this.dateOfObjectCreation =
         OAIPMHUtilities.datestampAsString(OAIPMHUtilities.fieldLoader(json, TGConstants.CREATED));
diff --git a/oaipmh-core/src/main/java/info/textgrid/middleware/RecordListDelivererIDIOM.java b/oaipmh-core/src/main/java/info/textgrid/middleware/RecordListDelivererIDIOM.java
index 05bc6633..e2f34d8c 100644
--- a/oaipmh-core/src/main/java/info/textgrid/middleware/RecordListDelivererIDIOM.java
+++ b/oaipmh-core/src/main/java/info/textgrid/middleware/RecordListDelivererIDIOM.java
@@ -18,6 +18,7 @@ import org.elasticsearch.search.builder.SearchSourceBuilder;
 import org.json.JSONObject;
 import info.textgrid.middleware.oaipmh.GetRecordType;
 import info.textgrid.middleware.oaipmh.ListRecordsType;
+import info.textgrid.middleware.oaipmh.RecordType;
 import info.textgrid.middleware.oaipmh.ResumptionTokenType;
 
 /**
@@ -115,9 +116,10 @@ public class RecordListDelivererIDIOM extends RecordListDelivererAbstract {
 
     long completeListSize = scrollResp.getHits().totalHits;
 
+    log.fine("total hits: " + completeListSize);
+
     if (completeListSize > 0) {
       setFoundItems(true);
-
       int i = 0;
 
       for (SearchHit hit : scrollResp.getHits().getHits()) {
@@ -125,28 +127,34 @@ public class RecordListDelivererIDIOM extends RecordListDelivererAbstract {
 
         log.fine("hit no." + i + ": id=" + hit.getId());
 
-        String recordType =
-            OAIPMHUtilities.fieldLoader(new JSONObject(hit.getSourceAsMap()), "notes");
         String textgridURI =
             OAIPMHUtilities.fieldLoader(new JSONObject(hit.getSourceAsMap()), "textgridUri");
 
-        log.fine("record type: " + recordType);
         log.fine("textgridURI: " + textgridURI);
 
-        GetRecordType idi = this.idiomRecord.getRecordById(textgridURI.replace(".0", ""));
+        // Create new record here! We must not set only references here!
+        RecordType record = new RecordType();
+        RecordType sourceRecord =
+            this.idiomRecord.getRecordById(textgridURI.replace(".0", "")).getRecord();
+        record.setHeader(sourceRecord.getHeader());
+        record.setMetadata(sourceRecord.getMetadata());
 
-        log.fine("idi.header: " + (idi == null ? "null" : idi.getRecord().getHeader()));
+        recordList.getRecord().add(record);
 
-        recordList.getRecord().add(idi.getRecord());
+        int size = recordList.getRecord().size();
 
-        log.fine("record added: " + idi.getRecord().getHeader().getIdentifier());
+        log.finest("RECORD LIST CONTENT (" + size + "):");
+        for (int j = 0; j < size; j++) {
+          log.finest(
+              "\t[" + j + "] --> " + recordList.getRecord().get(j).getHeader().getIdentifier());
+        }
       }
 
       // Check the need for a resumption token!
-      ResumptionTokenType resTokenForResponse = OAIPMHUtilities.getResumptionToken(completeListSize,
+      ResumptionTokenType responseToken = OAIPMHUtilities.getResumptionToken(completeListSize,
           resumptionToken, cursorCollector, scrollID, this.idiomResponseSize, i);
-      if (resTokenForResponse != null) {
-        recordList.setResumptionToken(resTokenForResponse);
+      if (responseToken != null) {
+        recordList.setResumptionToken(responseToken);
       }
     } else {
       setFoundItems(false);
diff --git a/oaipmh-core/src/test/java/info/textgrid/middleware/test/online/OAIPMHUtilitiesOnline.java b/oaipmh-core/src/test/java/info/textgrid/middleware/test/online/OAIPMHUtilitiesOnline.java
index 8fe72c04..abe96093 100644
--- a/oaipmh-core/src/test/java/info/textgrid/middleware/test/online/OAIPMHUtilitiesOnline.java
+++ b/oaipmh-core/src/test/java/info/textgrid/middleware/test/online/OAIPMHUtilitiesOnline.java
@@ -35,6 +35,9 @@ public class OAIPMHUtilitiesOnline {
   // FINALS
   // **
 
+  // private static final String PROPERTIES_FILE = "oaipmh.test.textgridlab-org.properties";
+  public static final String PROPERTIES_FILE = "oaipmh.test.dev-textgridlab-org.properties";
+
   public static final String OAI_DC_PREFIX = "oai_dc";
   public static final String OAI_DATACITE_PREFIX = "oai_datacite";
   public static final String OAI_IDIOMMETS_PREFIX = "oai_idiom_mets";
@@ -531,7 +534,7 @@ public class OAIPMHUtilitiesOnline {
    * <p>
    * Creates a hash set containing all the ID values from a certain tag. Used to count elements such
    * as <identifier> in OAI-PMH header list responses. We want to know here, if we have ID
-   * duplicates in one request.
+   * duplicates in a response.
    * </p>
    * 
    * @param theResponseString
diff --git a/oaipmh-core/src/test/java/info/textgrid/middleware/test/online/tg/TestClassicMayanOnline.java b/oaipmh-core/src/test/java/info/textgrid/middleware/test/online/tg/TestClassicMayanOnline.java
index f574034f..69183aff 100644
--- a/oaipmh-core/src/test/java/info/textgrid/middleware/test/online/tg/TestClassicMayanOnline.java
+++ b/oaipmh-core/src/test/java/info/textgrid/middleware/test/online/tg/TestClassicMayanOnline.java
@@ -18,7 +18,7 @@ import info.textgrid.middleware.IDIOMImages;
 /**
  *
  */
-// @Ignore
+@Ignore
 public class TestClassicMayanOnline {
 
   // FIXME Check ignored tests!! Do they make any sense??
diff --git a/oaipmh-core/src/test/java/info/textgrid/middleware/test/online/tg/TestTGBasicsOnline.java b/oaipmh-core/src/test/java/info/textgrid/middleware/test/online/tg/TestTGBasicsOnline.java
index a59f218b..e5c6aa4a 100644
--- a/oaipmh-core/src/test/java/info/textgrid/middleware/test/online/tg/TestTGBasicsOnline.java
+++ b/oaipmh-core/src/test/java/info/textgrid/middleware/test/online/tg/TestTGBasicsOnline.java
@@ -26,15 +26,6 @@ import info.textgrid.middleware.test.online.OAIPMHUtilitiesOnline;
 @Ignore
 public class TestTGBasicsOnline {
 
-  // **
-  // FINALS
-  // **
-
-  // private static final String PROPERTIES_FILE = "oaipmh.test.textgridlab-org.properties";
-  // TODO There is NO IDIOM test data for testing on dev.textgridlab.org! So eventually all
-  // IDIOM tests will fail!
-  private static final String PROPERTIES_FILE = "oaipmh.test.dev-textgridlab-org.properties";
-
   // **
   // STATICS
   // **
@@ -57,7 +48,8 @@ public class TestTGBasicsOnline {
   public static void setUpBeforeClass() throws Exception {
 
     // Get properties.
-    Properties p = OAIPMHUtilitiesOnline.getPropertiesFromFile(PROPERTIES_FILE);
+    Properties p =
+        OAIPMHUtilitiesOnline.getPropertiesFromFile(OAIPMHUtilitiesOnline.PROPERTIES_FILE);
 
     // Set properties.
     oaipmhEndpoint = p.getProperty("oaipmhEndpoint");
diff --git a/oaipmh-core/src/test/java/info/textgrid/middleware/test/online/tg/TestTGGetRecordOnline.java b/oaipmh-core/src/test/java/info/textgrid/middleware/test/online/tg/TestTGGetRecordOnline.java
index 0c10181b..6a17b7d1 100644
--- a/oaipmh-core/src/test/java/info/textgrid/middleware/test/online/tg/TestTGGetRecordOnline.java
+++ b/oaipmh-core/src/test/java/info/textgrid/middleware/test/online/tg/TestTGGetRecordOnline.java
@@ -29,21 +29,12 @@ import info.textgrid.middleware.test.online.OAIPMHUtilitiesOnline;
  * </p>
  * 
  * @author Stefan E. Funk, SUB Göttingen
- * @version 2022-09-21
+ * @version 2022-09-23
  * @since 2022-09-08
  */
 @Ignore
 public class TestTGGetRecordOnline {
 
-  // **
-  // FINALS
-  // **
-
-  // private static final String PROPERTIES_FILE = "oaipmh.test.textgridlab-org.properties";
-  // TODO There is NO IDIOM test data for testing on dev.textgridlab.org! So eventually all
-  // IDIOM tests will fail!
-  protected static final String PROPERTIES_FILE = "oaipmh.test.dev-textgridlab-org.properties";
-
   // **
   // STATICS
   // **
@@ -78,7 +69,8 @@ public class TestTGGetRecordOnline {
   public static void setUpBeforeClass() throws Exception {
 
     // Get properties.
-    Properties p = OAIPMHUtilitiesOnline.getPropertiesFromFile(PROPERTIES_FILE);
+    Properties p =
+        OAIPMHUtilitiesOnline.getPropertiesFromFile(OAIPMHUtilitiesOnline.PROPERTIES_FILE);
 
     // Set properties.
     oaipmhEndpoint = p.getProperty("oaipmhEndpoint");
diff --git a/oaipmh-core/src/test/java/info/textgrid/middleware/test/online/tg/TestTGListIdentifiersOnline.java b/oaipmh-core/src/test/java/info/textgrid/middleware/test/online/tg/TestTGListIdentifiersOnline.java
index b057cd8a..66c38205 100644
--- a/oaipmh-core/src/test/java/info/textgrid/middleware/test/online/tg/TestTGListIdentifiersOnline.java
+++ b/oaipmh-core/src/test/java/info/textgrid/middleware/test/online/tg/TestTGListIdentifiersOnline.java
@@ -21,21 +21,12 @@ import info.textgrid.middleware.test.online.OAIPMHUtilitiesOnline;
  * </p>
  * 
  * @author Stefan E. Funk, SUB Göttingen
- * @version 2022-09-21
+ * @version 2022-09-23
  * @since 2022-09-12
  */
 @Ignore
 public class TestTGListIdentifiersOnline {
 
-  // **
-  // FINALS
-  // **
-
-  // private static final String PROPERTIES_FILE = "oaipmh.test.textgridlab-org.properties";
-  // TODO There is NO IDIOM test data for testing on dev.textgridlab.org! So eventually all
-  // IDIOM tests will fail!
-  protected static final String PROPERTIES_FILE = "oaipmh.test.dev-textgridlab-org.properties";
-
   // **
   // STATICS
   // **
@@ -47,8 +38,6 @@ public class TestTGListIdentifiersOnline {
   // Properties
 
   private static String checkListIdentifiersSet;
-  private static int checkListIdentifiersPagesToTestIDIOM;
-  private static int checkListIdentifiersRecordsPerPageIDIOM;
 
   // **
   // PREPARATIONS
@@ -61,16 +50,13 @@ public class TestTGListIdentifiersOnline {
   public static void setUpBeforeClass() throws Exception {
 
     // Get properties.
-    Properties p = OAIPMHUtilitiesOnline.getPropertiesFromFile(PROPERTIES_FILE);
+    Properties p =
+        OAIPMHUtilitiesOnline.getPropertiesFromFile(OAIPMHUtilitiesOnline.PROPERTIES_FILE);
 
     // Set properties.
     oaipmhEndpoint = p.getProperty("oaipmhEndpoint");
 
     checkListIdentifiersSet = p.getProperty("checkListIdentifiersSet");
-    checkListIdentifiersPagesToTestIDIOM =
-        Integer.parseInt(p.getProperty("checkListIdentifiersPagesToTestIDIOM"));
-    checkListIdentifiersRecordsPerPageIDIOM =
-        Integer.parseInt(p.getProperty("checkListIdentifiersRecordsPerPageIDIOM"));
 
     // Get web client from endpoint.
     oaipmhWebClient = OAIPMHUtilitiesOnline.getOAIPMHWEebClient(oaipmhEndpoint);
@@ -438,8 +424,7 @@ public class TestTGListIdentifiersOnline {
             OAIPMHUtilitiesOnline.VERB_LIST_IDENTIFIERS,
             OAIPMHUtilitiesOnline.NO_SET,
             OAIPMHUtilitiesOnline.OAI_IDIOMMETS_PREFIX,
-            checkListIdentifiersPagesToTestIDIOM,
-            checkListIdentifiersRecordsPerPageIDIOM,
+            10, 3,
             "IDIOM"));
 
     executor.shutdown();
diff --git a/oaipmh-core/src/test/java/info/textgrid/middleware/test/online/tg/TestTGListRecordsOnline.java b/oaipmh-core/src/test/java/info/textgrid/middleware/test/online/tg/TestTGListRecordsOnline.java
index 4705ef22..bcf2f7ff 100644
--- a/oaipmh-core/src/test/java/info/textgrid/middleware/test/online/tg/TestTGListRecordsOnline.java
+++ b/oaipmh-core/src/test/java/info/textgrid/middleware/test/online/tg/TestTGListRecordsOnline.java
@@ -21,21 +21,12 @@ import info.textgrid.middleware.test.online.OAIPMHUtilitiesOnline;
  * </p>
  * 
  * @author Stefan E. Funk, SUB Göttingen
- * @version 2022-09-21
+ * @version 2022-09-23
  * @since 2022-09-12
  */
 @Ignore
 public class TestTGListRecordsOnline {
 
-  // **
-  // FINALS
-  // **
-
-  // private static final String PROPERTIES_FILE = "oaipmh.test.textgridlab-org.properties";
-  // TODO There is NO IDIOM test data for testing on dev.textgridlab.org! So eventually all
-  // IDIOM tests will fail!
-  protected static final String PROPERTIES_FILE = "oaipmh.test.dev-textgridlab-org.properties";
-
   // **
   // STATICS
   // **
@@ -52,8 +43,6 @@ public class TestTGListRecordsOnline {
   private static String checkListRecordsDATACITEUntil;
   private static String checkListRecordsIDIOMFrom;
   private static String checkListRecordsIDIOMUntil;
-  private static int checkListIdentifiersPagesToTestIDIOM;
-  private static int checkListIdentifiersRecordsPerPageIDIOM;
 
   // **
   // PREPARATIONS
@@ -66,7 +55,8 @@ public class TestTGListRecordsOnline {
   public static void setUpBeforeClass() throws Exception {
 
     // Get properties.
-    Properties p = OAIPMHUtilitiesOnline.getPropertiesFromFile(PROPERTIES_FILE);
+    Properties p =
+        OAIPMHUtilitiesOnline.getPropertiesFromFile(OAIPMHUtilitiesOnline.PROPERTIES_FILE);
 
     // Set properties.
     oaipmhEndpoint = p.getProperty("oaipmhEndpoint");
@@ -483,8 +473,7 @@ public class TestTGListRecordsOnline {
             OAIPMHUtilitiesOnline.VERB_LIST_RECORDS,
             OAIPMHUtilitiesOnline.NO_SET,
             OAIPMHUtilitiesOnline.OAI_IDIOMMETS_PREFIX,
-            checkListIdentifiersPagesToTestIDIOM,
-            checkListIdentifiersRecordsPerPageIDIOM,
+            5, 30,
             "IDIOM"));
 
     executor.shutdown();
diff --git a/oaipmh-core/src/test/resources/oaipmh.test.dev-textgridlab-org.properties b/oaipmh-core/src/test/resources/oaipmh.test.dev-textgridlab-org.properties
index 4d07edba..7691e583 100644
--- a/oaipmh-core/src/test/resources/oaipmh.test.dev-textgridlab-org.properties
+++ b/oaipmh-core/src/test/resources/oaipmh.test.dev-textgridlab-org.properties
@@ -24,15 +24,13 @@ checkListRecordsDCFrom = 2012-01-04T01:00:00
 checkListRecordsDCUntil = 2012-01-04T12:00:00
 
 checkListRecordsIDIOMFrom = 2012-01-04T01:00:00
-checkListRecordsIDIOMUntil = 2012-01-04T12:00:00
+checkListRecordsIDIOMUntil = 2022-01-04T12:00:00
 
 checkListRecordsDATACITEFrom = 2012-01-04T01:00:00
 checkListRecordsDATACITEUntil = 2012-01-04T12:00:00
 
 # ListIdentifiers
 checkListIdentifiersSet = project:TGPR-59722e29-efcb-330f-b9b4-5ef2fb08edab
-checkListIdentifiersPagesToTestIDIOM = 10
-checkListIdentifiersRecordsPerPageIDIOM = 30
 
 # ListSets
 expectedListSets = project:TGPR-372fe6dc-57f2-6cd4-01b5-2c4bbefcfd3c
diff --git a/oaipmh-core/src/test/resources/oaipmh.test.textgridlab-org.properties b/oaipmh-core/src/test/resources/oaipmh.test.textgridlab-org.properties
index b123de23..e1bd63f1 100644
--- a/oaipmh-core/src/test/resources/oaipmh.test.textgridlab-org.properties
+++ b/oaipmh-core/src/test/resources/oaipmh.test.textgridlab-org.properties
@@ -28,6 +28,4 @@ checkListRecordsDATACITEUntil = 2012-01-04T12:00:00
 
 # ListIdentifiers
 checkListIdentifiersSet = project:TGPR-372fe6dc-57f2-6cd4-01b5-2c4bbefcfd3c
-checkListIdentifiersPagesToTestIDIOM = 10
-checkListIdentifiersRecordsPerPageIDIOM = 30
- 
\ No newline at end of file
+c
\ No newline at end of file
diff --git a/oaipmh-webapp/src/main/webapp/WEB-INF/beans.xml b/oaipmh-webapp/src/main/webapp/WEB-INF/beans.xml
index 9fd17263..ce8467a4 100644
--- a/oaipmh-webapp/src/main/webapp/WEB-INF/beans.xml
+++ b/oaipmh-webapp/src/main/webapp/WEB-INF/beans.xml
@@ -192,7 +192,6 @@
 
 		<property name="oaiEsClient"
 			ref="NonpublicElasticSearchClient" />
-
 		<property name="idiomImages" ref="IDIOMImages" />
 	</bean>
 
@@ -361,6 +360,7 @@
 		<property name="specField" value="${specField}" />
 
 		<property name="oaiEsClient" ref="ElasticSearchClient" />
+		<property name="dataciteRecord" ref="RecordDATACITE" />
 	</bean>
 
 	<!-- Beans for verb=ListIdentifiers -->
-- 
GitLab