package org.transgalactica.management.data.rest.mapper.impl;
import java.time.LocalDate;
import java.time.ZoneId;
import javax.xml.datatype.DatatypeConfigurationException;
import javax.xml.datatype.DatatypeFactory;
import javax.xml.datatype.XMLGregorianCalendar;
import org.dozer.DozerConverter;
public class XMLGregorianCalendarToLocalDateConverter extends DozerConverter<XMLGregorianCalendar, LocalDate> {
public XMLGregorianCalendarToLocalDateConverter() {
super(XMLGregorianCalendar.class, LocalDate.class);
}
@Override
public XMLGregorianCalendar convertFrom(LocalDate source, XMLGregorianCalendar destination) {
if (source == null) {
return null;
}
try {
return DatatypeFactory.newInstance().newXMLGregorianCalendar(source.toString());
}
catch (DatatypeConfigurationException e) {
throw new RuntimeException(e);
}
}
@Override
public LocalDate convertTo(XMLGregorianCalendar source, LocalDate destination) {
if (source == null) {
return null;
}
return source.toGregorianCalendar().getTime().toInstant().atZone(ZoneId.systemDefault()).toLocalDate();
}
}