diff --git a/CHANGELOG.md b/CHANGELOG.md index ef69eef63bbfd7ada1c2627472cb15397019e8d4..f710d2bbb7c09f1db09d2de17952f9764645469a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -19,6 +19,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Fixed +* #183 No reasonable error when using bad datetime format. + (https://gitlab.indiscale.com/caosdb/src/caosdb-server/-/issues/183) * #127 "nan" as value (list item) in properties with data type "LIST<DOUBLE>" return with "Cannot parse value to double" error. * #170 Updating an abstract list-type property with a default value fails with diff --git a/src/main/java/org/caosdb/server/datatype/DateTimeDatatype.java b/src/main/java/org/caosdb/server/datatype/DateTimeDatatype.java index 574e40cb96097544a19cf46c4ad700e9ce442208..9c66f425ef0b867a3932b5b6fa85e5d88bf8f4a7 100644 --- a/src/main/java/org/caosdb/server/datatype/DateTimeDatatype.java +++ b/src/main/java/org/caosdb/server/datatype/DateTimeDatatype.java @@ -37,12 +37,19 @@ public class DateTimeDatatype extends AbstractDatatype { try { if (value instanceof UTCDateTime || value instanceof Date) { return (DateTimeInterface) value; - } else if (value instanceof GenericValue) { - return DateTimeFactory2.valueOf(((GenericValue) value).toDatabaseString()); + } + + DateTimeInterface result; + if (value instanceof GenericValue) { + result = DateTimeFactory2.valueOf(((GenericValue) value).toDatabaseString()); } else { - return DateTimeFactory2.valueOf(value.toString()); + result = DateTimeFactory2.valueOf(value.toString()); } - } catch (final IllegalArgumentException e) { + + // Test if this is storable + result.toDatabaseString(); + return result; + } catch (final UnsupportedOperationException | IllegalArgumentException e) { throw ServerMessages.CANNOT_PARSE_DATETIME_VALUE; } }