From 50e034ff95a5fd42b13eb400745dac51a3c77adf Mon Sep 17 00:00:00 2001
From: Maximilian Brodhun <brodhun@sub.uni-goettingen.de>
Date: Tue, 3 Dec 2019 09:56:42 +0100
Subject: [PATCH] added "project:" prefix for setSpec for getRecord

---
 .../textgrid/middleware/OAIPMHUtilities.java    | 17 +++++++++++++++++
 .../textgrid/middleware/RecordDelivererDC.java  |  4 ++--
 .../middleware/RecordListDelivererAbstract.java |  7 +++----
 .../middleware/RecordListDelivererDC.java       |  8 ++++++++
 .../info/textgrid/middleware/OaiPmhTest.java    |  4 ++--
 5 files changed, 32 insertions(+), 8 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 47efb732..5ef2c3bf 100644
--- a/oaipmh-core/src/main/java/info/textgrid/middleware/OAIPMHUtilities.java
+++ b/oaipmh-core/src/main/java/info/textgrid/middleware/OAIPMHUtilities.java
@@ -259,6 +259,7 @@ public class OAIPMHUtilities {
         resTokenForResponse.setCursor(BigInteger.valueOf(searchResponseSize));
         cursorCollector.put(scrollID, searchResponseSize);
         cursor = 0;
+        System.out.println("CURSOR: " + cursor);
       }
 
       // Set resumption token string if cursor is less then complete list size: More objects can be
@@ -285,6 +286,7 @@ public class OAIPMHUtilities {
 	public static boolean isThisDateValid(String dateToValidate){
 		
 	    SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.S");
+	    
 	    dateFormat.setLenient(false);
 	    try {
 	      dateFormat.parse(dateToValidate.trim());
@@ -294,6 +296,21 @@ public class OAIPMHUtilities {
 	    return true;
 	}
   
+	public static boolean isThisDateValidToOtherTimeStamp(String dateToValidate){
+		
+	    SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss'Z'");
+	    
+	    dateFormat.setLenient(false);
+	    dateFormat.setLenient(false);
+	    try {
+	      dateFormat.parse(dateToValidate.trim());
+	    } catch (ParseException pe) {
+	      return false;
+	    }
+	    return true;
+	}
+	
+	
     private static final String[] formats = { 
             "yyyy-MM-dd'T'HH:mm:ss'Z'",   "yyyy-MM-dd'T'HH:mm:ssZ",
             "yyyy-MM-dd'T'HH:mm:ss",      "yyyy-MM-dd'T'HH:mm:ss.SSS'Z'",
diff --git a/oaipmh-core/src/main/java/info/textgrid/middleware/RecordDelivererDC.java b/oaipmh-core/src/main/java/info/textgrid/middleware/RecordDelivererDC.java
index 23231ee1..a7e00f26 100644
--- a/oaipmh-core/src/main/java/info/textgrid/middleware/RecordDelivererDC.java
+++ b/oaipmh-core/src/main/java/info/textgrid/middleware/RecordDelivererDC.java
@@ -126,7 +126,7 @@ public class RecordDelivererDC extends RecordDelivererAbstract {
           }
           record.setMetadata(dublinCoreBuilder.getDC());
         }
-        String setSpec = "project:" + DublinCoreFieldLoader.fillList(esResultObject, DARIAHConstants.IDENTIFIER_LIST).get(0);
+        String setSpec = DublinCoreFieldLoader.fillList(esResultObject, DARIAHConstants.IDENTIFIER_LIST).get(0);
         setRecordHeader(OAIPMHUtilities
                 .convertDateFormat(dateOfCreation).toString(), identifier, record, dublinCoreBuilder, setSpec);
       }
@@ -143,7 +143,7 @@ public class RecordDelivererDC extends RecordDelivererAbstract {
         String dateOfCreation =
             esResultObject.getSourceAsMap().get(this.dateOfObjectCreation).toString();
         
-        String setSpec = DublinCoreFieldLoader.fillList(esResultObject, TGConstants.RELATIONS_LIST).get(0);
+        String setSpec = "project:" + DublinCoreFieldLoader.fillList(esResultObject, TGConstants.RELATIONS_LIST).get(0);
         
         setRecordHeader(OAIPMHUtilities.convertDateFormat(dateOfCreation).toString(), identifier, record, dublinCoreBuilder, setSpec);
         
diff --git a/oaipmh-core/src/main/java/info/textgrid/middleware/RecordListDelivererAbstract.java b/oaipmh-core/src/main/java/info/textgrid/middleware/RecordListDelivererAbstract.java
index e13c630c..df528fb1 100644
--- a/oaipmh-core/src/main/java/info/textgrid/middleware/RecordListDelivererAbstract.java
+++ b/oaipmh-core/src/main/java/info/textgrid/middleware/RecordListDelivererAbstract.java
@@ -53,7 +53,6 @@ public abstract class RecordListDelivererAbstract implements RecordListDeliverer
               + request.getResumptionToken() + " argument is invalid or expired.");
         }
       }
-
     
     
     // Check if query to ElastisSearch responses with more then zero results
@@ -71,13 +70,13 @@ public abstract class RecordListDelivererAbstract implements RecordListDeliverer
     if (request.getIdentifier() != null) {
       errorValues.add("identifier");
     }
-    if(request.getFrom()!= null && !OAIPMHUtilities.isThisDateValid(request.getFrom())) {
+    if(request.getFrom()!= null && (!OAIPMHUtilities.isThisDateValid(request.getFrom()) && !OAIPMHUtilities.isThisDateValidToOtherTimeStamp(request.getFrom())))   {
     	errorValues.add("from");
     }
-    if(request.getUntil() != null && !OAIPMHUtilities.isThisDateValid(request.getUntil())) {
+    if(request.getUntil() != null && (!OAIPMHUtilities.isThisDateValid(request.getUntil()) && !OAIPMHUtilities.isThisDateValidToOtherTimeStamp(request.getUntil()))) {
     	errorValues.add("until");
     }
-    if(request.getFrom()!= null && request.getUntil()!=null && OAIPMHUtilities.getFormatOfDate(request.getFrom()).equals(OAIPMHUtilities.getFormatOfDate(request.getFrom()))) {
+    if(request.getFrom()!= null && request.getUntil()!=null && !OAIPMHUtilities.getFormatOfDate(request.getFrom()).equals(OAIPMHUtilities.getFormatOfDate(request.getFrom()))) {
     	errorValues.add("until, from");
     }
     if (errorValues.size() > 0) {
diff --git a/oaipmh-core/src/main/java/info/textgrid/middleware/RecordListDelivererDC.java b/oaipmh-core/src/main/java/info/textgrid/middleware/RecordListDelivererDC.java
index 229340bd..5c47dadb 100644
--- a/oaipmh-core/src/main/java/info/textgrid/middleware/RecordListDelivererDC.java
+++ b/oaipmh-core/src/main/java/info/textgrid/middleware/RecordListDelivererDC.java
@@ -270,6 +270,14 @@ public class RecordListDelivererDC extends RecordListDelivererAbstract {
       // Check the need for a resumption token!
       ResumptionTokenType resTokenForResponse = OAIPMHUtilities.getResumptionToken(
           completeListSize, resumptionToken, cursorCollector, scrollID, this.searchResponseSize, i);
+      System.out.println(completeListSize);
+      System.out.println(resumptionToken);
+      System.out.println(cursorCollector);
+      System.out.println(scrollID);
+      System.out.println(this.searchResponseSize);
+      System.out.println(i);
+      System.out.println("CURSOR HERE: " + resTokenForResponse.getCursor());
+      
       if (resTokenForResponse != null) {
         recordList.setResumptionToken(resTokenForResponse);
       }
diff --git a/oaipmh-core/src/test/java/info/textgrid/middleware/OaiPmhTest.java b/oaipmh-core/src/test/java/info/textgrid/middleware/OaiPmhTest.java
index 10a2cb0a..1ff8c048 100644
--- a/oaipmh-core/src/test/java/info/textgrid/middleware/OaiPmhTest.java
+++ b/oaipmh-core/src/test/java/info/textgrid/middleware/OaiPmhTest.java
@@ -347,8 +347,8 @@ public class OaiPmhTest {
 
     System.out.println("Test for the verb \"ListRecords\" with sets with succesfull response");
     //String p = this.request.getRequest("ListRecords", "", "oai_dc", "project:TGPR-f89ad029-4eb2-ae5c-6028-5db876513128", "", "", "");
-    String p = this.request.getRequest("ListRecords", "", "oai_dc", "", "2012-05-09T00:33:55.364+02:00", "2012-05-09", "");
-    System.out.println(p);
+    String p = this.request.getRequest("ListRecords", "", "oai_dc", "", "", "", "");
+   // System.out.println(p);
     String resToken = "";
     /*for (Map.Entry<String, Integer> entry : RecordListDelivererDC.cursorCollector.entrySet()) {
       resToken = entry.getKey();
-- 
GitLab