fix year date parsing
This commit is contained in:
parent
fbe8af26fa
commit
a7a1a466b8
|
@ -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) {
|
||||||
|
|
|
@ -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");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue