diff --git a/src/main/java/de/ozgcloud/eingang/intelliform/DepositDataMapper.java b/src/main/java/de/ozgcloud/eingang/intelliform/DepositDataMapper.java index 34e09920fcc5620a2f1edc3dd4dd459f24687e33..93b4e696a4c40b0f72b3a7fbea700fffb164161e 100644 --- a/src/main/java/de/ozgcloud/eingang/intelliform/DepositDataMapper.java +++ b/src/main/java/de/ozgcloud/eingang/intelliform/DepositDataMapper.java @@ -26,7 +26,9 @@ package de.ozgcloud.eingang.intelliform; import static java.util.stream.Collectors.*; import java.io.IOException; +import java.time.ZonedDateTime; import java.util.Collection; +import java.util.GregorianCalendar; import java.util.LinkedHashMap; import java.util.List; import java.util.Map; @@ -37,6 +39,7 @@ import java.util.stream.Collectors; import java.util.stream.IntStream; import java.util.stream.Stream; +import javax.xml.datatype.XMLGregorianCalendar; import javax.xml.parsers.DocumentBuilder; import javax.xml.parsers.DocumentBuilderFactory; import javax.xml.parsers.ParserConfigurationException; @@ -190,7 +193,8 @@ class DepositDataMapper { } IntelliFormMetaData buildMetaData(DepositData depositData) { - var builder = IntelliFormMetaData.builder().origin(depositData.getTimestamp().toGregorianCalendar().toZonedDateTime()); + var builder = IntelliFormMetaData.builder(); + getOrigin(depositData).ifPresent(builder::origin); depositData.getCustomParameters() .forEach(entry -> builder.customParameter(IntelliFormMetaData.CUSTOM_PARAM_PREFIX + entry.key.toUpperCase(), entry.value)); @@ -198,4 +202,8 @@ class DepositDataMapper { return builder.build(); } + Optional<ZonedDateTime> getOrigin(DepositData depositData) { + return Optional.ofNullable(depositData.getTimestamp()).map(XMLGregorianCalendar::toGregorianCalendar).map(GregorianCalendar::toZonedDateTime); + } + } diff --git a/src/test/java/de/ozgcloud/eingang/intelliform/DepositDataMapperTest.java b/src/test/java/de/ozgcloud/eingang/intelliform/DepositDataMapperTest.java index d79547b271ed4fca0afd96bc71549dbac2f3b608..608c69ca8c1b4e5b6e8fd8c3c7d2a73ed23b2bb1 100644 --- a/src/test/java/de/ozgcloud/eingang/intelliform/DepositDataMapperTest.java +++ b/src/test/java/de/ozgcloud/eingang/intelliform/DepositDataMapperTest.java @@ -453,7 +453,7 @@ class DepositDataMapperTest { } @Nested - class TestCreateMetaData { + class TestBuildMetaData { @Test void shouldHaveOrigin() { @@ -475,6 +475,16 @@ class DepositDataMapperTest { assertThat(metaData.getEntry("CUSTOMPARAMETER_PARAM_KEY")).isEqualTo(DepositDataTestFactory.CUTOMPARA_VALUE); } + + @Test + void shouldHandleNullTimestamp() { + var depositData = DepositDataTestFactory.create(); + depositData.setTimestamp(null); + + var metaData = mapper.buildMetaData(depositData); + + assertThat(metaData.getOrigin()).isNull(); + } } }