package design.persistence.importexport; import java.io.File; import java.io.IOException; import java.time.LocalDateTime; import com.fasterxml.jackson.databind.module.SimpleModule; import com.fasterxml.jackson.dataformat.xml.XmlMapper; import design.persistence.Serializers; public class XMLHandler implements DataHandler { private final DataSource dataSource; private final XmlMapper xmlMapper = new XmlMapper(); public XMLHandler(DataSource dataSource) { this.dataSource = dataSource; Serializers.configureMapper(xmlMapper); SimpleModule module = dataSource.getJacksonModule(); module.addSerializer(LocalDateTime.class, new Serializers.DateTimeStringSerializer()); xmlMapper.registerModule(module); } @Override public void importData(File file) throws IOException { Object data = xmlMapper.readValue(file, dataSource.getTargetClass()); dataSource.importData(data); } @Override public void exportData(File file) throws IOException { Object data = dataSource.exportData(); xmlMapper.writerWithDefaultPrettyPrinter() .writeValue(file, data); } }