diff --git a/pom.xml b/pom.xml index 644230c..93bef2b 100644 --- a/pom.xml +++ b/pom.xml @@ -262,6 +262,12 @@ ${dhp.commons.lang.version} + + com.github.sisyphsu + dateparser + 1.0.7 + + com.google.guava guava @@ -330,6 +336,11 @@ commons-lang3 + + com.github.sisyphsu + dateparser + + com.fasterxml.jackson.core jackson-databind diff --git a/src/main/java/eu/dnetlib/dhp/schema/common/ModelSupport.java b/src/main/java/eu/dnetlib/dhp/schema/common/ModelSupport.java index ac2df6d..a6d164c 100644 --- a/src/main/java/eu/dnetlib/dhp/schema/common/ModelSupport.java +++ b/src/main/java/eu/dnetlib/dhp/schema/common/ModelSupport.java @@ -15,6 +15,7 @@ import org.apache.commons.codec.binary.Hex; import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.time.DateUtils; +import com.github.sisyphsu.dateparser.DateParserUtils; import com.google.common.collect.Maps; import eu.dnetlib.dhp.schema.oaf.*; @@ -305,13 +306,7 @@ public class ModelSupport { private static final String schemeTemplate = "dnet:%s_%s_relations"; - public static final String[] DATE_TIME_FORMATS = { - "yyyy-MM-dd'T'hh:mm:ss.SSS'Z'", - "yyyy-MM-dd'T'hh:mm:ss'Z'", - "yyyy-MM-dd hh:mm:ss'Z'", - "yyyy-MM-dd hh:mm:ss", - "yyyy-MM-dd" - }; + public static final String DATE_FORMAT = "yyyy-MM-dd"; private ModelSupport() { } @@ -506,8 +501,8 @@ public class ModelSupport { } if (StringUtils.isNotBlank(dateA) && StringUtils.isNotBlank(dateB)) { - final Date a = tryParse(dateA); - final Date b = tryParse(dateB); + final Date a = DateParserUtils.parseDate(dateA); + final Date b = DateParserUtils.parseDate(dateB); if (Objects.nonNull(a) && Objects.nonNull(b)) { return a.before(b) ? dateA : dateB; @@ -519,14 +514,4 @@ public class ModelSupport { } } - private static Date tryParse(String date) throws DateTimeParseException { - try { - return DateUtils.parseDate(date, DATE_TIME_FORMATS); - } catch (ParseException e) { - // ignore it, try another format - } - final String formats = String.join("\n", Arrays.asList(DATE_TIME_FORMATS)); - throw new DateTimeParseException(String.format("cannot parse %s, supported formats: \n%s", date, formats), date, 0); - } - } diff --git a/src/test/java/eu/dnetlib/dhp/schema/oaf/MergeTest.java b/src/test/java/eu/dnetlib/dhp/schema/oaf/MergeTest.java index ac3e76e..92bd92e 100644 --- a/src/test/java/eu/dnetlib/dhp/schema/oaf/MergeTest.java +++ b/src/test/java/eu/dnetlib/dhp/schema/oaf/MergeTest.java @@ -108,8 +108,8 @@ public class MergeTest { @Test public void mergeRelationTestParseException() { assertThrows(DateTimeParseException.class, () -> { - Relation a = createRel(true, "2016 April 05"); - Relation b = createRel(true, "2016-04-05"); + Relation a = createRel(true, "Once upon a time ..."); + Relation b = createRel(true, "... in a far away land"); a.mergeFrom(b); }); }