fix year date parsing

This commit is contained in:
Enrico Ottonello 2021-01-26 16:39:47 +01:00
parent fbe8af26fa
commit a7a1a466b8
2 changed files with 36 additions and 13 deletions

View File

@ -1,6 +1,7 @@
package eu.dnetlib.ariadneplus.reader.utils; package eu.dnetlib.ariadneplus.reader.utils;
import java.time.LocalDate; import java.time.LocalDate;
import java.time.Year;
import java.time.ZoneId; import java.time.ZoneId;
import java.time.ZonedDateTime; import java.time.ZonedDateTime;
import java.time.format.DateTimeFormatter; import java.time.format.DateTimeFormatter;
@ -20,16 +21,17 @@ public class ESUtils {
.appendPattern(" yyyy") .appendPattern(" yyyy")
.toFormatter(Locale.ROOT); .toFormatter(Locale.ROOT);
private static DateTimeFormatter yearOnlyDateFormatter = new DateTimeFormatterBuilder() private static DateTimeFormatter yearOnlyDateFormatter = new DateTimeFormatterBuilder()
.appendPattern("yyyy") .appendPattern("yyyy").toFormatter();
.parseDefaulting(ChronoField.MONTH_OF_YEAR, 1)
.parseDefaulting(ChronoField.DAY_OF_MONTH, 1)
.toFormatter();
public static String getESFormatDate(String originalDate) { public static String getESFormatDate(String originalDate) {
try{ try{
LocalDate parsedDate = LocalDate.parse(originalDate, elasticSearchDateFormatter); LocalDate parsedDate = LocalDate.parse(originalDate, elasticSearchDateFormatter);
return parsedDate.format(elasticSearchDateFormatter); return parsedDate.format(elasticSearchDateFormatter);
} catch(Exception e){ } catch(Exception e){
try {
Year year = Year.parse(originalDate);
return year.format(yearOnlyDateFormatter);
} catch (Exception e0) {
try { try {
LocalDate parsedDate = LocalDate.parse(originalDate, originalRecordDateFormatter); LocalDate parsedDate = LocalDate.parse(originalDate, originalRecordDateFormatter);
return parsedDate.format(elasticSearchDateFormatter); return parsedDate.format(elasticSearchDateFormatter);
@ -46,7 +48,7 @@ public class ESUtils {
} }
} }
} }
}
} }
private static String parseBST(String BSTDate) { private static String parseBST(String BSTDate) {

View File

@ -20,4 +20,25 @@ public class ESUtilsTest {
String parsed = ESUtils.getESFormatDate(date); String parsed = ESUtils.getESFormatDate(date);
Assert.assertEquals(parsed, "2020-05-15"); Assert.assertEquals(parsed, "2020-05-15");
} }
@Test
public void testYearDate(){
String date = "2012";
String parsed = ESUtils.getESFormatDate(date);
Assert.assertEquals(parsed, "2012");
}
@Test
public void testEmtyDate(){
String date = "";
String parsed = ESUtils.getESFormatDate(date);
Assert.assertEquals(parsed, "0000");
}
@Test
public void testErrorDate(){
String date = "????";
String parsed = ESUtils.getESFormatDate(date);
Assert.assertEquals(parsed, "0000");
}
} }