From 69b2ab97c6acb34b832779ab1357c6b775a73d76 Mon Sep 17 00:00:00 2001
From: "Stefan E. Funk" <funk@sub.uni-goettingen.de>
Date: Tue, 19 Apr 2022 16:47:22 +0200
Subject: [PATCH] Fix #61

---
 .../textgrid/middleware/OAIPMHUtilities.java  | 23 +++++-------
 .../middleware/RecordDelivererIDIOM.java      | 24 +++++++-----
 .../middleware/RecordListDelivererIDIOM.java  | 37 ++++++++-----------
 .../middleware/OaiPmhTextgridOnlineTests.java |  6 +--
 4 files changed, 42 insertions(+), 48 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 2419b382..210f1507 100644
--- a/oaipmh-core/src/main/java/info/textgrid/middleware/OAIPMHUtilities.java
+++ b/oaipmh-core/src/main/java/info/textgrid/middleware/OAIPMHUtilities.java
@@ -596,9 +596,14 @@ public class OAIPMHUtilities {
   }
 
   /**
-   * @param dateOfCreation
-   * @param identifier
-   * @param setSpec
+   * <p>
+   * Create header type of OAI-PMH response.
+   * </p>
+   * 
+   * @param dateOfCreation The date of the resource's creation.
+   * @param identifier The identifier to set in the header. Please see to it, that it is correct
+   *        here, and have not to be changed in any way.
+   * @param setSpec The ID of the set spec.
    * @return
    */
   public static HeaderType computeTheF______Header(final String dateOfCreation,
@@ -606,17 +611,7 @@ public class OAIPMHUtilities {
 
     HeaderType result = new HeaderType();
 
-    log.info("Header identifier: " + identifier);
-
-    // identifier.substring(0, identifier.indexOf("."));
-    if (identifier.contains(".")) {
-      result.setIdentifier(identifier.substring(0, identifier.indexOf(".")));
-    } else {
-      result.setIdentifier(identifier);
-    }
-
-    log.info("Header identifier: " + identifier);
-
+    result.setIdentifier(identifier);
     result.setDatestamp(dateOfCreation);
 
     log.info(
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 3a42e423..dd6a77a4 100644
--- a/oaipmh-core/src/main/java/info/textgrid/middleware/RecordDelivererIDIOM.java
+++ b/oaipmh-core/src/main/java/info/textgrid/middleware/RecordDelivererIDIOM.java
@@ -23,8 +23,8 @@ import info.textgrid.middleware.oaipmh.RecordType;
 /**
  * @author Maximilian Brodhun, SUB Göttingen
  * @author Stefan E. Funk, SUB Göttingen
- * @since 2021-09-09
- * @version 2019-03-12
+ * @version 2022-04-19
+ * @since 2019-03-12
  */
 @Component
 public class RecordDelivererIDIOM extends RecordDelivererAbstract {
@@ -121,18 +121,17 @@ public class RecordDelivererIDIOM extends RecordDelivererAbstract {
     } else {
       textgridBaseURI_FromID = id;
     }
-    if(this.getObjectType().equals("ARTEFACT")){
+    if (this.getObjectType().equals("ARTEFACT")) {
       this.metsmods = new ClassicMayanMetsMods(
-        textgridBaseURI_FromID,
-        this.dateOfObjectCreation,
-        this.dateOfLastOblectModification);
+          textgridBaseURI_FromID,
+          this.dateOfObjectCreation,
+          this.dateOfLastOblectModification);
       this.record.setMetadata(idiomMets());
-    }else if(this.getObjectType().startsWith("ConedaKorMediumData")){
+    } else if (this.getObjectType().startsWith("ConedaKorMediumData")) {
       this.record = new IDIOMImages().getRecordById(id).getRecord();
-      
     }
 
-
+    // See that IDs begin with "textgrid:"
     String identifierToSet = "";
     if (!id.startsWith("textgrid:")) {
       identifierToSet = "textgrid:" + id;
@@ -140,6 +139,11 @@ public class RecordDelivererIDIOM extends RecordDelivererAbstract {
       identifierToSet = id;
     }
 
+    // See, that IDs have NO revision number.
+    if (identifierToSet.contains(".")) {
+      identifierToSet = identifierToSet.substring(0, identifierToSet.indexOf("."));
+    }
+
     // No setSpec needed here!
     String setSpec = "";
     HeaderType header = OAIPMHUtilities.computeTheF______Header(this.dateOfObjectCreation,
@@ -176,7 +180,7 @@ public class RecordDelivererIDIOM extends RecordDelivererAbstract {
     } catch (Exception e) {
       e.printStackTrace();
     }
-    
+
     return metadataMets;
   }
 
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 1bdc15f1..04cb21ab 100644
--- a/oaipmh-core/src/main/java/info/textgrid/middleware/RecordListDelivererIDIOM.java
+++ b/oaipmh-core/src/main/java/info/textgrid/middleware/RecordListDelivererIDIOM.java
@@ -4,8 +4,6 @@ import java.io.IOException;
 import java.text.ParseException;
 import java.util.Hashtable;
 import java.util.Map;
-
-import org.classicmayan.tools.ImageMetsMods;
 import org.elasticsearch.action.search.SearchRequest;
 import org.elasticsearch.action.search.SearchResponse;
 import org.elasticsearch.action.search.SearchScrollRequest;
@@ -17,8 +15,6 @@ import org.elasticsearch.index.query.RangeQueryBuilder;
 import org.elasticsearch.search.SearchHit;
 import org.elasticsearch.search.builder.SearchSourceBuilder;
 import org.json.JSONObject;
-
-import info.textgrid.clients.tgcrud.CrudClientException;
 import info.textgrid.middleware.oaipmh.ListRecordsType;
 import info.textgrid.middleware.oaipmh.ResumptionTokenType;
 
@@ -62,15 +58,15 @@ public class RecordListDelivererIDIOM extends RecordListDelivererAbstract {
     BoolQueryBuilder both;
 
     RangeQueryBuilder rangeQuery = QueryBuilders.rangeQuery("lastModified").from(from).to(to);
-    
+
     BoolQueryBuilder test = QueryBuilders.boolQuery()
         .must(QueryBuilders.matchPhraseQuery("project.id",
-        "TGPR-0e926f53-1aba-d415-ecf6-539edcd8a318"));
+            "TGPR-0e926f53-1aba-d415-ecf6-539edcd8a318"));
 
     BoolQueryBuilder artefact = QueryBuilders.boolQuery()
         .must(QueryBuilders.matchPhraseQuery("format", "text/tg.inputform+rdf+xml"))
         .must(QueryBuilders.matchPhraseQuery("notes", "ARTEFACT"));
-        
+
     BoolQueryBuilder conedakor = QueryBuilders.boolQuery()
         .must(QueryBuilders.matchPhraseQuery("format", "application/json"))
         .must(QueryBuilders.matchPhraseQuery("notes", "ConedaKorMediumData"));
@@ -79,10 +75,10 @@ public class RecordListDelivererIDIOM extends RecordListDelivererAbstract {
     both = QueryBuilders.boolQuery().should(artefact).should(conedakor);
 
     BoolQueryBuilder bla = QueryBuilders.boolQuery().must(rangeQuery)
-    .must(test.filter(both));
+        .must(test.filter(both));
 
     recordFilterForClassicMayan = bla;
-    //QueryBuilders.boolQuery().must(rangeQuery).should(recordFilteroClassicMayanARTEFACT).should(recordFilterForClassicMayanCONEDAKOR);
+    // QueryBuilders.boolQuery().must(rangeQuery).should(recordFilteroClassicMayanARTEFACT).should(recordFilterForClassicMayanCONEDAKOR);
 
     SearchResponse scrollResp;
 
@@ -137,20 +133,19 @@ public class RecordListDelivererIDIOM extends RecordListDelivererAbstract {
             OAIPMHUtilities.fieldLoader(new JSONObject(hit.getSourceAsMap()), "lastModified");
 
         RecordDelivererIDIOM idiomRecord = new RecordDelivererIDIOM(true, false);
-        if(recordType.equals("ARTEFACT")){
+        if (recordType.equals("ARTEFACT")) {
           recordList.getRecord()
-          .add(idiomRecord.getRecordById(textgridURI.replace(".0", "")).getRecord());
-        }else if(recordType.startsWith("ConedaKorMediumData")){
-          /*try {
-            ImageMetsMods immByTGURI = new ImageMetsMods(textgridURI, creationDate, changedDate);
-          } catch (CrudClientException e) {
-            // TODO Auto-generated catch block
-            e.printStackTrace();
-          }*/
+              .add(idiomRecord.getRecordById(textgridURI.replace(".0", "")).getRecord());
+        } else if (recordType.startsWith("ConedaKorMediumData")) {
+          /*
+           * try { ImageMetsMods immByTGURI = new ImageMetsMods(textgridURI, creationDate,
+           * changedDate); } catch (CrudClientException e) { // TODO Auto-generated catch block
+           * e.printStackTrace(); }
+           */
           recordList.getRecord()
-          .add(new IDIOMImages().getRecordById(textgridURI).getRecord());
+              .add(new IDIOMImages().getRecordById(textgridURI).getRecord());
         }
-        
+
       }
 
       // Check the need for a resumption token!
@@ -167,7 +162,7 @@ public class RecordListDelivererIDIOM extends RecordListDelivererAbstract {
   }
 
   // **
-  // GETTERA & SETTERS
+  // GETTERS & SETTERS
   // **
 
   /**
diff --git a/oaipmh-core/src/test/java/info/textgrid/middleware/OaiPmhTextgridOnlineTests.java b/oaipmh-core/src/test/java/info/textgrid/middleware/OaiPmhTextgridOnlineTests.java
index fc797d08..5adee6ff 100644
--- a/oaipmh-core/src/test/java/info/textgrid/middleware/OaiPmhTextgridOnlineTests.java
+++ b/oaipmh-core/src/test/java/info/textgrid/middleware/OaiPmhTextgridOnlineTests.java
@@ -34,15 +34,15 @@ import org.junit.Test;
  * 
  * @author Stefan E. Funk, SUB Göttingen
  */
-@Ignore
+// @Ignore
 public class OaiPmhTextgridOnlineTests {
 
   // **
   // FINALS
   // **
 
-  private static final String PROPERTIES_FILE = "oaipmh.test.textgridlab-org.properties";
-  // private static final String PROPERTIES_FILE = "oaipmh.test.dev-textgridlab-org.properties";
+  // private static final String PROPERTIES_FILE = "oaipmh.test.textgridlab-org.properties";
+  private static final String PROPERTIES_FILE = "oaipmh.test.dev-textgridlab-org.properties";
 
   // **
   // STATICS
-- 
GitLab