ckan2zenodo-library/src/main/java/org/gcube/data/publishing/ckan2zenodo/commons/DateParser.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);
}
}