From 9adc51f8d74577b5c4ae9c1f88341252f2c22939 Mon Sep 17 00:00:00 2001 From: sowgro Date: Thu, 13 Nov 2025 20:05:25 -0500 Subject: export almost working --- .../persistence/importexport/XMLHandler.java | 34 ++++++++++++++++++++++ 1 file changed, 34 insertions(+) create mode 100644 src/main/java/design/persistence/importexport/XMLHandler.java (limited to 'src/main/java/design/persistence/importexport/XMLHandler.java') diff --git a/src/main/java/design/persistence/importexport/XMLHandler.java b/src/main/java/design/persistence/importexport/XMLHandler.java new file mode 100644 index 0000000..1a16b90 --- /dev/null +++ b/src/main/java/design/persistence/importexport/XMLHandler.java @@ -0,0 +1,34 @@ +package design.persistence.importexport; +import java.io.File; +import java.io.IOException; + +import com.fasterxml.jackson.databind.JsonNode; +import com.fasterxml.jackson.databind.node.ObjectNode; +import com.fasterxml.jackson.dataformat.xml.XmlMapper; + +public class XMLHandler implements DataHandler { + + private final DataSource dataSource; + private final XmlMapper xmlMapper = new XmlMapper(); + + public XMLHandler(DataSource dataSource) { + this.dataSource = dataSource; + } + + @Override + public void importData(File file) throws IOException { + JsonNode tree = xmlMapper.readTree(file); + JsonNode unwrapped = tree.get("items"); + dataSource.importData(unwrapped); + } + + @Override + public void exportData(File file) throws IOException { + JsonNode tree = dataSource.exportData(); + ObjectNode wrapper = xmlMapper.createObjectNode(); + wrapper.set("items", tree); + xmlMapper.writerWithDefaultPrettyPrinter().withRootName("export").writeValue(file, wrapper); + } +} + + -- cgit v1.2.3 From cf59d52cba70742f1d4098c38b4c7a798b3d89fa Mon Sep 17 00:00:00 2001 From: sowgro Date: Sun, 16 Nov 2025 01:56:27 -0500 Subject: IMPORT-EXPORT WORKING!!!!!!!!!!!!!!!!!!!!!!!!!! --- .../persistence/importexport/XMLHandler.java | 22 +++++++++++++--------- 1 file changed, 13 insertions(+), 9 deletions(-) (limited to 'src/main/java/design/persistence/importexport/XMLHandler.java') diff --git a/src/main/java/design/persistence/importexport/XMLHandler.java b/src/main/java/design/persistence/importexport/XMLHandler.java index 1a16b90..0a07d6e 100644 --- a/src/main/java/design/persistence/importexport/XMLHandler.java +++ b/src/main/java/design/persistence/importexport/XMLHandler.java @@ -1,10 +1,11 @@ package design.persistence.importexport; import java.io.File; import java.io.IOException; +import java.time.LocalDateTime; -import com.fasterxml.jackson.databind.JsonNode; -import com.fasterxml.jackson.databind.node.ObjectNode; +import com.fasterxml.jackson.databind.module.SimpleModule; import com.fasterxml.jackson.dataformat.xml.XmlMapper; +import design.persistence.Serializers; public class XMLHandler implements DataHandler { @@ -13,21 +14,24 @@ public class XMLHandler implements DataHandler { 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 { - JsonNode tree = xmlMapper.readTree(file); - JsonNode unwrapped = tree.get("items"); - dataSource.importData(unwrapped); + Object data = xmlMapper.readValue(file, dataSource.getTargetClass()); + dataSource.importData(data); } @Override public void exportData(File file) throws IOException { - JsonNode tree = dataSource.exportData(); - ObjectNode wrapper = xmlMapper.createObjectNode(); - wrapper.set("items", tree); - xmlMapper.writerWithDefaultPrettyPrinter().withRootName("export").writeValue(file, wrapper); + Object data = dataSource.exportData(); + xmlMapper.writerWithDefaultPrettyPrinter() + .writeValue(file, data); } } -- cgit v1.2.3