42 lines
1.2 KiB
Java
42 lines
1.2 KiB
Java
package org.gcube.data.publishing.ckan2zenodo.commons;
|
|
|
|
import java.io.IOException;
|
|
import java.text.ParseException;
|
|
import java.text.SimpleDateFormat;
|
|
import java.util.Date;
|
|
|
|
import org.gcube.data.publishing.ckan2zenodo.model.zenodo.Commons;
|
|
|
|
import com.fasterxml.jackson.core.JsonParseException;
|
|
import com.fasterxml.jackson.core.JsonParser;
|
|
import com.fasterxml.jackson.core.JsonProcessingException;
|
|
import com.fasterxml.jackson.databind.DeserializationContext;
|
|
import com.fasterxml.jackson.databind.JsonDeserializer;
|
|
import com.fasterxml.jackson.databind.JsonNode;
|
|
|
|
public class DateParser extends JsonDeserializer<Date>{
|
|
|
|
private static final String[] DATE_FORMATS=new String[] {
|
|
Commons.ISO_DATE_PATTERN,
|
|
"yyyy-MM-dd"
|
|
};
|
|
|
|
|
|
@Override
|
|
public Date deserialize(JsonParser p, DeserializationContext ctxt) throws IOException, JsonProcessingException {
|
|
JsonNode node = p.getCodec().readTree(p);
|
|
final String date = node.textValue();
|
|
|
|
for (String DATE_FORMAT : DATE_FORMATS) {
|
|
try {
|
|
return new SimpleDateFormat(DATE_FORMAT).parse(date);
|
|
} catch (ParseException e) {
|
|
}
|
|
}
|
|
throw new JsonParseException("Unable to parse date "+date,null);
|
|
}
|
|
|
|
|
|
|
|
}
|