@ -1,8 +1,23 @@
package seng302.Data ;
package seng302.Data ;
import org.w3c.dom.Attr ;
import org.w3c.dom.Document ;
import org.w3c.dom.Element ;
import seng302.GPSCoordinate ;
import seng302.Model.Boat ;
import seng302.Model.Boat ;
import seng302.Model.BoatInRace ;
import seng302.Model.Leg ;
import seng302.Model.Marker ;
import seng302.Model.Marker ;
import seng302.RaceDataSource ;
import javax.xml.parsers.DocumentBuilder ;
import javax.xml.parsers.DocumentBuilderFactory ;
import javax.xml.parsers.ParserConfigurationException ;
import javax.xml.transform.Transformer ;
import javax.xml.transform.TransformerException ;
import javax.xml.transform.TransformerFactory ;
import javax.xml.transform.dom.DOMSource ;
import javax.xml.transform.stream.StreamResult ;
import java.time.OffsetDateTime ;
import java.time.OffsetDateTime ;
import java.util.List ;
import java.util.List ;
@ -11,13 +26,81 @@ import java.util.List;
* /
* /
public class RaceData {
public class RaceData {
private RaceDataSource dataSource ;
private String raceID ;
private String raceID ;
private String raceType ;
private String raceType ;
private OffsetDateTime creationTimeDate ;
private OffsetDateTime creationTimeDate ;
private OffsetDateTime raceStartTime ;
private OffsetDateTime raceStartTime ;
private List < Boat > participants ;
private List < BoatInRace > participants ;
// private List<Marker>
private List < Leg > course ;
private List < GPSCoordinate > courseLimit ;
public RaceData ( RaceDataSource dataSource ) {
this . dataSource = dataSource ;
this . raceID = dataSource . getRaceId ( ) ;
this . raceType = "Fleet" ;
creationTimeDate = OffsetDateTime . now ( ) ;
raceStartTime = OffsetDateTime . now ( ) . plusMinutes ( 3 ) ;
participants = dataSource . getBoats ( ) ;
course = dataSource . getLegs ( ) ;
courseLimit = dataSource . getBoundary ( ) ;
}
public void createXML ( ) {
try {
DocumentBuilderFactory docFactory = DocumentBuilderFactory . newInstance ( ) ;
DocumentBuilder docBuilder = docFactory . newDocumentBuilder ( ) ;
// root elements
Document doc = docBuilder . newDocument ( ) ;
Element rootElement = doc . createElement ( "Race" ) ;
doc . appendChild ( rootElement ) ;
// shorten way
// staff.setAttribute("id", "1");
Element raceIdElement = doc . createElement ( "RaceID" ) ;
raceIdElement . appendChild ( doc . createTextNode ( raceID ) ) ;
rootElement . appendChild ( raceIdElement ) ;
Element raceTypeElement = doc . createElement ( "RaceType" ) ;
raceTypeElement . appendChild ( doc . createTextNode ( raceType ) ) ;
rootElement . appendChild ( raceTypeElement ) ;
Element creationTimeElement = doc . createElement ( "CreationTimeDate" ) ;
creationTimeElement . appendChild ( doc . createTextNode ( creationTimeDate . toString ( ) ) ) ;
rootElement . appendChild ( creationTimeElement ) ;
Element startTimeElement = doc . createElement ( "RaceStartTime" ) ;
startTimeElement . setAttribute ( "Time" , raceStartTime . toString ( ) ) ;
startTimeElement . setAttribute ( "Postpone" , "false" ) ;
rootElement . appendChild ( startTimeElement ) ;
// write the content into xml file
TransformerFactory transformerFactory = TransformerFactory . newInstance ( ) ;
Transformer transformer = transformerFactory . newTransformer ( ) ;
DOMSource source = new DOMSource ( doc ) ;
StreamResult result = new StreamResult ( System . out ) ;
// Output to console for testing
// StreamResult result = new StreamResult(System.out);
transformer . transform ( source , result ) ;
System . out . println ( "File saved!" ) ;
} catch ( ParserConfigurationException pce ) {
pce . printStackTrace ( ) ;
} catch ( TransformerException tfe ) {
tfe . printStackTrace ( ) ;
}
}
}
}