package seng302.Mock; import org.w3c.dom.Element; import org.w3c.dom.NodeList; import org.xml.sax.InputSource; import org.xml.sax.SAXException; import seng302.XMLReader; import javax.xml.parsers.ParserConfigurationException; import java.io.IOException; import java.io.InputStream; /** * Created by jjg64 on 19/04/17. */ public class RegattaXMLReader extends XMLReader { private Regatta regatta; /** * Constructor for Regatta XML * * @param filePath path of the file * @throws IOException error * @throws SAXException error * @throws ParserConfigurationException error */ public RegattaXMLReader(String filePath) throws IOException, SAXException, ParserConfigurationException { this(filePath, true); } /** * Constructor for Regatta XML * * @param filePath file path to read * @param read whether or not to read and store the files straight away. * @throws IOException error * @throws SAXException error * @throws ParserConfigurationException error */ public RegattaXMLReader(String filePath, boolean read) throws IOException, SAXException, ParserConfigurationException { super(filePath); if (read) { read(); } } public RegattaXMLReader(InputStream xmlString) throws IOException, SAXException, ParserConfigurationException { super(xmlString); read(); } /** * Read the XML */ private void read() { NodeList attributeConfig = doc.getElementsByTagName("RegattaConfig"); Element attributes = (Element) attributeConfig.item(0); makeRegatta(attributes); } private void makeRegatta(Element attributes) { int regattaID = Integer.parseInt(getTextValueOfNode(attributes, "RegattaID")); String regattaName = getTextValueOfNode(attributes, "RegattaName"); String courseName = getTextValueOfNode(attributes, "CourseName"); double centralLatitude = Double.parseDouble(getTextValueOfNode(attributes, "CentralLatitude")); double centralLongitude = Double.parseDouble(getTextValueOfNode(attributes, "CentralLongitude")); System.out.println(String.format("central lat %s long %s", centralLatitude, centralLongitude)); double centralAltitude = Double.parseDouble(getTextValueOfNode(attributes, "CentralAltitude")); float utcOffset = Float.parseFloat(getTextValueOfNode(attributes, "UtcOffset")); float magneticVariation = Float.parseFloat(getTextValueOfNode(attributes, "MagneticVariation")); regatta = new Regatta(regattaID, regattaName, courseName, centralLatitude, centralLongitude, centralAltitude, utcOffset, magneticVariation); } public Regatta getRegatta() { return regatta; } }