From ab29402b99dbab92a0361b4474dccd9f458ae876 Mon Sep 17 00:00:00 2001 From: "Stefan E. Funk" <funk@sub.uni-goettingen.de> Date: Tue, 14 Feb 2023 14:38:10 +0100 Subject: [PATCH] fix: add localtime with server default time zone --- .../textgrid/middleware/OaipmhUtilities.java | 16 ++++++---------- .../middleware/test/TestOaipmhUtilities.java | 17 ++++++++++++++++- .../test/online/dh/TestDHOaipmhOnline.java | 2 +- 3 files changed, 23 insertions(+), 12 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 6c096490..fe613333 100644 --- a/oaipmh-core/src/main/java/info/textgrid/middleware/OaipmhUtilities.java +++ b/oaipmh-core/src/main/java/info/textgrid/middleware/OaipmhUtilities.java @@ -7,6 +7,7 @@ import java.math.BigInteger; import java.text.ParseException; import java.text.SimpleDateFormat; import java.time.Instant; +import java.time.LocalDateTime; import java.time.OffsetDateTime; import java.time.ZoneId; import java.time.format.DateTimeFormatter; @@ -154,23 +155,18 @@ public class OaipmhUtilities { log.fine("original DateTimeString: " + originalDateTimeString); - OffsetDateTime odt; try { - odt = OffsetDateTime.parse(originalDateTimeString); + OffsetDateTime odt = OffsetDateTime.parse(originalDateTimeString); + result = UTC_FORMATTER.format(Instant.from(odt)); } // TODO We are missing to set time zones on dcterms date fields!! Workaround for all DARIAH-DE - // Repository dates so far is adding the correct time zone parameters! + // Repository dates so far is using LocalDateTime here! catch (DateTimeParseException e) { - - log.warning("can not parse time format for date: " + originalDateTimeString - + ", assuming timezone +01:00!"); - - odt = OffsetDateTime.parse(originalDateTimeString + "+01:00"); + LocalDateTime ldt = LocalDateTime.parse(originalDateTimeString); + result = UTC_FORMATTER.format(ldt.atZone(ZoneId.systemDefault()).toInstant()); } - result = UTC_FORMATTER.format(Instant.from(odt)); - log.fine("parsed to UTC: " + result); return result; diff --git a/oaipmh-core/src/test/java/info/textgrid/middleware/test/TestOaipmhUtilities.java b/oaipmh-core/src/test/java/info/textgrid/middleware/test/TestOaipmhUtilities.java index f1168648..0f4d219a 100644 --- a/oaipmh-core/src/test/java/info/textgrid/middleware/test/TestOaipmhUtilities.java +++ b/oaipmh-core/src/test/java/info/textgrid/middleware/test/TestOaipmhUtilities.java @@ -187,7 +187,7 @@ public class TestOaipmhUtilities { * @throws DatatypeConfigurationException */ @Test - public void testGetUTCDateAsString() throws DatatypeConfigurationException { + public void testGetUTCDateAsStringTG() throws DatatypeConfigurationException { String tgDateStamp = "2012-02-10T23:45:00.507+01:00"; String expectedUTCDate = "2012-02-10T22:45:00Z"; @@ -198,6 +198,21 @@ public class TestOaipmhUtilities { } } + /** + * @throws DatatypeConfigurationException + */ + @Test + public void testGetUTCDateAsStringDH() throws DatatypeConfigurationException { + + String tgDateStamp = "2012-02-10T23:45:00.507"; + String expectedUTCDate = "2012-02-10T22:45:00Z"; + String utcDate = OaipmhUtilities.getUTCDateAsString(tgDateStamp); + + if (!utcDate.equals(expectedUTCDate)) { + assertTrue(utcDate + " != " + expectedUTCDate, false); + } + } + /** * @throws ParseException * @throws DatatypeConfigurationException diff --git a/oaipmh-core/src/test/java/info/textgrid/middleware/test/online/dh/TestDHOaipmhOnline.java b/oaipmh-core/src/test/java/info/textgrid/middleware/test/online/dh/TestDHOaipmhOnline.java index 89621394..8de55438 100644 --- a/oaipmh-core/src/test/java/info/textgrid/middleware/test/online/dh/TestDHOaipmhOnline.java +++ b/oaipmh-core/src/test/java/info/textgrid/middleware/test/online/dh/TestDHOaipmhOnline.java @@ -26,7 +26,7 @@ import info.textgrid.middleware.test.online.OaipmhUtilitiesOnline; * Please set PROPERTIES_FILE and TEST_ALL_PAGES <b>HERE</b>! * </p> * - * @author Stefan E. Funk, SUB Göttingen + * @author Stefan E. Funk, SUB Göttingen // */ @Ignore public class TestDHOaipmhOnline { -- GitLab