package seng302.Model; import org.w3c.dom.Attr; import org.w3c.dom.Document; import org.w3c.dom.Element; import seng302.Data.RaceData; import seng302.Mock.Regatta; import seng302.Mock.RegattaDataSource; import seng302.Model.Race; import seng302.RaceDataSource; import javax.xml.parsers.DocumentBuilder; import javax.xml.parsers.DocumentBuilderFactory; import javax.xml.transform.Transformer; import javax.xml.transform.TransformerFactory; import javax.xml.transform.dom.DOMSource; import javax.xml.transform.stream.StreamResult; import java.util.List; /** * Created by esa46 on 21/04/17. */ public class Event { RaceDataSource raceDataSource; RegattaDataSource regattaDataSource; public Event(RaceDataSource raceData, RegattaDataSource regattaData) { this.raceDataSource = raceData; this.regattaDataSource = regattaData; } public void start() { sendRegattaData(); sendRaceData(); sendBoatData(); Race newRace = new Race(raceDataSource, 15); new Thread((newRace)).start(); } public void sendRegattaData() { try { Regatta regatta = regattaDataSource.getRegatta(); DocumentBuilderFactory docFactory = DocumentBuilderFactory.newInstance(); DocumentBuilder docBuilder = docFactory.newDocumentBuilder(); //root element Document doc = docBuilder.newDocument(); Element rootElement = doc.createElement("RegattaConfig"); doc.appendChild(rootElement); //regattaID element Element regattaID = doc.createElement("RegattaID"); regattaID.appendChild(doc.createTextNode(Integer.toString(regatta.getRegattaID()))); rootElement.appendChild(regattaID); //regattaName element Element regattaName = doc.createElement("RegattaName"); regattaName.appendChild(doc.createTextNode(regatta.getRegattaName())); rootElement.appendChild(regattaName); //courseName element Element courseName = doc.createElement("CourseName"); courseName.appendChild(doc.createTextNode(regatta.getCourseName())); rootElement.appendChild(courseName); //centralLatitude element Element centralLat = doc.createElement("CentralLatitude"); centralLat.appendChild(doc.createTextNode(Double.toString(regatta.getCentralLatitude()))); rootElement.appendChild(centralLat); //centralLongitude element Element centralLong = doc.createElement("CentralLongitude"); centralLong.appendChild(doc.createTextNode(Double.toString(regatta.getCentralLongitude()))); rootElement.appendChild(centralLong); //centralAltitude element Element centralAlt = doc.createElement("CentralAltitude"); centralAlt.appendChild(doc.createTextNode(Double.toString(regatta.getCentralAltitude()))); rootElement.appendChild(centralAlt); //utcOffset element Element utcOffset = doc.createElement("UtcOffset"); utcOffset.appendChild(doc.createTextNode(Double.toString(regatta.getUtcOffset()))); rootElement.appendChild(utcOffset); //magneticVariation element Element magneticVariation = doc.createElement("MagneticVariation"); magneticVariation.appendChild(doc.createTextNode(Double.toString(regatta.getMagneticVariation()))); rootElement.appendChild(magneticVariation); TransformerFactory trasformerFactory = TransformerFactory.newInstance(); Transformer transformer = trasformerFactory.newTransformer(); DOMSource source = new DOMSource(doc); //print XML object to check for correctness StreamResult result = new StreamResult(System.out); transformer.transform(source,result); } catch (Exception e){ e.printStackTrace(); } } public void sendRaceData() { RaceData raceData = new RaceData(raceDataSource); raceData.createXML(); } public void sendBoatData() { List boatData = raceDataSource.getBoats(); try { DocumentBuilderFactory docFactory = DocumentBuilderFactory.newInstance(); DocumentBuilder docBuilder = docFactory.newDocumentBuilder(); //root element Document doc = docBuilder.newDocument(); Element rootElement = doc.createElement("BoatConfig"); doc.appendChild(rootElement); //Boats element Element boats = doc.createElement("Boats"); rootElement.appendChild(boats); for (int i=0; i < boatData.size(); i++) { //Boat element Element boat = doc.createElement("Boat"); //Type attribute Attr attrType = doc.createAttribute("Type"); attrType.setValue("Mark"); boat.setAttributeNode(attrType); //SourceID attribute Attr attrSourceID = doc.createAttribute("SourceID"); attrSourceID.setValue(Integer.toString(boatData.get(i).getSourceID())); boat.setAttributeNode(attrSourceID); //ShapeID attribute Attr attrShapeID = doc.createAttribute("ShapeID"); attrShapeID.setValue("0"); boat.setAttributeNode(attrShapeID); //HullNum attribute Attr attrHullNum = doc.createAttribute("HullNum"); attrHullNum.setValue("RG01"); boat.setAttributeNode(attrHullNum); //StoweName attribute Attr attrStoweName = doc.createAttribute("StoweName"); attrStoweName.setValue(boatData.get(i).getAbbrev()); boat.setAttributeNode(attrStoweName); //ShortName attribute Attr attrShortName = doc.createAttribute("ShortName"); attrShortName.setValue(boatData.get(i).getAbbrev()); boat.setAttributeNode(attrShortName); //BoatName attribute Attr attrBoatName = doc.createAttribute("BoatName"); attrBoatName.setValue(boatData.get(i).toString()); boat.setAttributeNode(attrBoatName); //GPSCoord for element Element GPSCoord = doc.createElement("GPSposition"); //Z axis attribute Attr attrZCoord = doc.createAttribute("Z"); attrZCoord.setValue("0"); GPSCoord.setAttributeNode(attrZCoord); //Y axis attribute Attr attrYCoord = doc.createAttribute("Y"); attrYCoord.setValue(Double.toString(boatData.get(i).getCurrentPosition().getLatitude())); GPSCoord.setAttributeNode(attrYCoord); //X axis attribute Attr attrXCoord = doc.createAttribute("X"); attrXCoord.setValue(Double.toString(boatData.get(i).getCurrentPosition().getLongitude())); GPSCoord.setAttributeNode(attrXCoord); //Write GPSCoord to boat boat.appendChild(GPSCoord); //Write boat to boats boats.appendChild(boat); } TransformerFactory trasformerFactory = TransformerFactory.newInstance(); Transformer transformer = trasformerFactory.newTransformer(); DOMSource source = new DOMSource(doc); //print XML object to check for correctness StreamResult result = new StreamResult(System.out); transformer.transform(source,result); } catch (Exception e) { e.printStackTrace(); } } }