package edu.vserver.exercises.math.essentials.level; import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import java.io.IOException; import javax.xml.parsers.DocumentBuilder; import javax.xml.parsers.DocumentBuilderFactory; import javax.xml.parsers.ParserConfigurationException; import javax.xml.transform.Result; import javax.xml.transform.Source; import javax.xml.transform.Transformer; import javax.xml.transform.TransformerConfigurationException; import javax.xml.transform.TransformerException; import javax.xml.transform.TransformerFactory; import javax.xml.transform.dom.DOMSource; import javax.xml.transform.stream.StreamResult; import org.w3c.dom.Document; import org.xml.sax.SAXException; public class LevelXMLHelper { protected Document document; private DocumentBuilder builder; private final ByteArrayOutputStream data = new ByteArrayOutputStream(); public LevelXMLHelper() { DocumentBuilderFactory builderFactory = DocumentBuilderFactory .newInstance(); builder = null; try { builder = builderFactory.newDocumentBuilder(); document = builder.newDocument(); } catch (ParserConfigurationException e) { e.printStackTrace(); } } public DocumentBuilder getDocumentBuilder() { return builder; } public LevelXMLHelper(byte[] readFrom) { Document doc = null; DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); try { DocumentBuilder builder = factory.newDocumentBuilder(); doc = builder.parse(new ByteArrayInputStream(readFrom)); } catch (SAXException sxe) { // Error generated during parsing Exception x = sxe; if (sxe.getException() != null) { x = sxe.getException(); } x.printStackTrace(); } catch (ParserConfigurationException pce) { // Parser with specified options can't be built pce.printStackTrace(); } catch (IOException ioe) { // I/O error ioe.printStackTrace(); } document = doc; } public byte[] writeXMLtoStream() { try { Source src = new DOMSource(document); Result result = new StreamResult(data); Transformer xformer = TransformerFactory.newInstance() .newTransformer(); xformer.transform(src, result); return data.toByteArray(); } catch (TransformerConfigurationException e) { e.printStackTrace(); } catch (TransformerException e) { e.printStackTrace(); } return null; } public Document getDocument() { return document; } public void createLevels() { document.appendChild(document.createElement("GameSettings")); document.getFirstChild().appendChild(document.createElement("Easy")); document.getFirstChild().appendChild(document.createElement("Normal")); document.getFirstChild().appendChild(document.createElement("Hard")); } }