package design.persistence; import java.io.File; import java.io.IOException; import design.model.DataHandler; import com.fasterxml.jackson.databind.JsonNode; import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.databind.node.ObjectNode; import design.model.Golfer; import com.fasterxml.jackson.dataformat.xml.XmlMapper; public class XMLHandler implements DataHandler { private final ObjectMapper jsonMapper = new ObjectMapper(); private final XmlMapper xmlMapper = new XmlMapper(); public void exportPersonalData(File file) throws IOException { // get our json data File jsonData = JSONPersonalDatabase.instance().exportData(file); // read the top tree node (the array) JsonNode golfersNode = jsonMapper.readTree(jsonData); // map it to an object node ObjectNode root = xmlMapper.createObjectNode(); root.set("golfer", golfersNode); xmlMapper.writerWithDefaultPrettyPrinter().writeValue(file, root); } public void importPersonalData(File file) throws IOException { JsonNode root = xmlMapper.readTree(file); JsonNode golfersNode = root.get("golfer"); if (golfersNode == null) { throw new IOException("Expected 'golfer' element in XML root, but none found"); } if (!golfersNode.isArray()) { golfersNode = xmlMapper.createArrayNode().add(golfersNode); } Golfer[] golfers = xmlMapper.treeToValue(golfersNode, Golfer[].class); File tempJson = File.createTempFile("imported", ".json"); jsonMapper.writerWithDefaultPrettyPrinter().writeValue(tempJson, golfers); JSONPersonalDatabase.instance().importData(tempJson); tempJson.delete(); } public void exportLeagueData(File file) throws IOException { // TO DO: exporting league data } public void importLeagueData(File file) throws IOException { // TO DO: importing league data } }