|
|
|
@ -6,15 +6,24 @@ import org.w3c.dom.Element;
|
|
|
|
import seng302.Data.RaceData;
|
|
|
|
import seng302.Data.RaceData;
|
|
|
|
import seng302.Mock.Regatta;
|
|
|
|
import seng302.Mock.Regatta;
|
|
|
|
import seng302.Mock.RegattaDataSource;
|
|
|
|
import seng302.Mock.RegattaDataSource;
|
|
|
|
|
|
|
|
import seng302.Exceptions.InvalidBoatDataException;
|
|
|
|
|
|
|
|
import seng302.Exceptions.InvalidRaceDataException;
|
|
|
|
|
|
|
|
import seng302.Exceptions.InvalidRegattaDataException;
|
|
|
|
import seng302.Model.Race;
|
|
|
|
import seng302.Model.Race;
|
|
|
|
import seng302.RaceDataSource;
|
|
|
|
import seng302.RaceDataSource;
|
|
|
|
|
|
|
|
|
|
|
|
import javax.xml.parsers.DocumentBuilder;
|
|
|
|
import javax.xml.parsers.DocumentBuilder;
|
|
|
|
import javax.xml.parsers.DocumentBuilderFactory;
|
|
|
|
import javax.xml.parsers.DocumentBuilderFactory;
|
|
|
|
|
|
|
|
import javax.xml.parsers.ParserConfigurationException;
|
|
|
|
import javax.xml.transform.Transformer;
|
|
|
|
import javax.xml.transform.Transformer;
|
|
|
|
|
|
|
|
import javax.xml.transform.TransformerConfigurationException;
|
|
|
|
|
|
|
|
import javax.xml.transform.TransformerException;
|
|
|
|
import javax.xml.transform.TransformerFactory;
|
|
|
|
import javax.xml.transform.TransformerFactory;
|
|
|
|
import javax.xml.transform.dom.DOMSource;
|
|
|
|
import javax.xml.transform.dom.DOMSource;
|
|
|
|
import javax.xml.transform.stream.StreamResult;
|
|
|
|
import javax.xml.transform.stream.StreamResult;
|
|
|
|
|
|
|
|
import java.io.IOException;
|
|
|
|
|
|
|
|
import java.io.OutputStream;
|
|
|
|
|
|
|
|
import java.io.StringWriter;
|
|
|
|
import java.util.List;
|
|
|
|
import java.util.List;
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
/**
|
|
|
|
@ -24,29 +33,45 @@ public class Event {
|
|
|
|
|
|
|
|
|
|
|
|
RaceDataSource raceDataSource;
|
|
|
|
RaceDataSource raceDataSource;
|
|
|
|
RegattaDataSource regattaDataSource;
|
|
|
|
RegattaDataSource regattaDataSource;
|
|
|
|
|
|
|
|
///The stream to which we send all data.
|
|
|
|
|
|
|
|
private OutputStream outputStream;
|
|
|
|
|
|
|
|
|
|
|
|
public Event(RaceDataSource raceData, RegattaDataSource regattaData) {
|
|
|
|
public Event(RaceDataSource raceData, RegattaDataSource regattaData, OutputStream outputStream) {
|
|
|
|
this.raceDataSource = raceData;
|
|
|
|
this.raceDataSource = raceData;
|
|
|
|
this.regattaDataSource = regattaData;
|
|
|
|
this.regattaDataSource = regattaData;
|
|
|
|
|
|
|
|
this.outputStream = outputStream;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
public void start() {
|
|
|
|
public void start()
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
System.out.println("\nREGATTA DATA\n");//TEMP REMOVE debug
|
|
|
|
sendRegattaData();
|
|
|
|
sendRegattaData();
|
|
|
|
|
|
|
|
System.out.println("\nRACE DATA\n");//TEMP REMOVE debug
|
|
|
|
sendRaceData();
|
|
|
|
sendRaceData();
|
|
|
|
|
|
|
|
System.out.println("\nBOAT DATA\n");//TEMP REMOVE debug
|
|
|
|
sendBoatData();
|
|
|
|
sendBoatData();
|
|
|
|
|
|
|
|
|
|
|
|
Race newRace = new Race(raceDataSource, 15);
|
|
|
|
System.out.println("RACE STARTING!!\n\n");//TEMP REMOVE debug
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Race newRace = new Race(raceDataSource, 15, this.outputStream);
|
|
|
|
new Thread((newRace)).start();
|
|
|
|
new Thread((newRace)).start();
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
public void sendRegattaData() {
|
|
|
|
public void sendRegattaData() throws InvalidRegattaDataException {
|
|
|
|
try {
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Regatta regatta = regattaDataSource.getRegatta();
|
|
|
|
Regatta regatta = regattaDataSource.getRegatta();
|
|
|
|
|
|
|
|
|
|
|
|
DocumentBuilderFactory docFactory = DocumentBuilderFactory.newInstance();
|
|
|
|
DocumentBuilderFactory docFactory = DocumentBuilderFactory.newInstance();
|
|
|
|
DocumentBuilder docBuilder = docFactory.newDocumentBuilder();
|
|
|
|
DocumentBuilder docBuilder = null;
|
|
|
|
|
|
|
|
try
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
docBuilder = docFactory.newDocumentBuilder();
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
catch (ParserConfigurationException e)
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
throw new InvalidRegattaDataException();
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
//root element
|
|
|
|
//root element
|
|
|
|
Document doc = docBuilder.newDocument();
|
|
|
|
Document doc = docBuilder.newDocument();
|
|
|
|
@ -93,33 +118,85 @@ public class Event {
|
|
|
|
magneticVariation.appendChild(doc.createTextNode(Double.toString(regatta.getMagneticVariation())));
|
|
|
|
magneticVariation.appendChild(doc.createTextNode(Double.toString(regatta.getMagneticVariation())));
|
|
|
|
rootElement.appendChild(magneticVariation);
|
|
|
|
rootElement.appendChild(magneticVariation);
|
|
|
|
|
|
|
|
|
|
|
|
TransformerFactory trasformerFactory = TransformerFactory.newInstance();
|
|
|
|
TransformerFactory transformerFactory = TransformerFactory.newInstance();
|
|
|
|
Transformer transformer = trasformerFactory.newTransformer();
|
|
|
|
Transformer transformer = null;
|
|
|
|
|
|
|
|
try
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
transformer = transformerFactory.newTransformer();
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
catch (TransformerConfigurationException e)
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
throw new InvalidRegattaDataException();
|
|
|
|
|
|
|
|
}
|
|
|
|
DOMSource source = new DOMSource(doc);
|
|
|
|
DOMSource source = new DOMSource(doc);
|
|
|
|
|
|
|
|
|
|
|
|
//print XML object to check for correctness
|
|
|
|
|
|
|
|
StreamResult result = new StreamResult(System.out);
|
|
|
|
|
|
|
|
|
|
|
|
//Serialize document.
|
|
|
|
|
|
|
|
StringWriter stringWriter = new StringWriter();
|
|
|
|
|
|
|
|
StreamResult result = new StreamResult(stringWriter);
|
|
|
|
|
|
|
|
try
|
|
|
|
|
|
|
|
{
|
|
|
|
transformer.transform(source,result);
|
|
|
|
transformer.transform(source,result);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
catch (TransformerException e)
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
throw new InvalidRegattaDataException();
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
//TODO now we should place in XML message object.
|
|
|
|
|
|
|
|
//TODO now we should serialize xml message object.
|
|
|
|
|
|
|
|
//TODO now we should write serialized xml message over this.outputStream.
|
|
|
|
|
|
|
|
|
|
|
|
} catch (Exception e){
|
|
|
|
try
|
|
|
|
e.printStackTrace();
|
|
|
|
{
|
|
|
|
|
|
|
|
this.outputStream.write(stringWriter.toString().getBytes());//TEMP currently we output the XML doc, not the serialized message.
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
catch (IOException e)
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
throw new InvalidRegattaDataException();
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
public void sendRaceData() {
|
|
|
|
public void sendRaceData() throws InvalidRaceDataException
|
|
|
|
|
|
|
|
{
|
|
|
|
RaceData raceData = new RaceData(raceDataSource);
|
|
|
|
RaceData raceData = new RaceData(raceDataSource);
|
|
|
|
raceData.createXML();
|
|
|
|
//Serialize race data to an XML as a string.
|
|
|
|
|
|
|
|
String xmlString = raceData.createXML();
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
//TODO now we should place in XML message object.
|
|
|
|
|
|
|
|
//TODO now we should serialize xml message object.
|
|
|
|
|
|
|
|
//TODO now we should write serialized xml message over this.outputStream.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
try
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
this.outputStream.write(xmlString.getBytes());//TEMP currently we output the XML doc, not the serialized message.
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
catch (IOException e)
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
throw new InvalidRaceDataException();
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
public void sendBoatData() {
|
|
|
|
public void sendBoatData() throws InvalidBoatDataException
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
List<BoatInRace> boatData = raceDataSource.getBoats();
|
|
|
|
List<BoatInRace> boatData = raceDataSource.getBoats();
|
|
|
|
try {
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
DocumentBuilderFactory docFactory = DocumentBuilderFactory.newInstance();
|
|
|
|
DocumentBuilderFactory docFactory = DocumentBuilderFactory.newInstance();
|
|
|
|
DocumentBuilder docBuilder = docFactory.newDocumentBuilder();
|
|
|
|
DocumentBuilder docBuilder = null;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
try
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
docBuilder = docFactory.newDocumentBuilder();
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
catch (ParserConfigurationException e)
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
throw new InvalidBoatDataException();
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
//root element
|
|
|
|
//root element
|
|
|
|
Document doc = docBuilder.newDocument();
|
|
|
|
Document doc = docBuilder.newDocument();
|
|
|
|
@ -197,17 +274,43 @@ public class Event {
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
TransformerFactory trasformerFactory = TransformerFactory.newInstance();
|
|
|
|
TransformerFactory trasformerFactory = TransformerFactory.newInstance();
|
|
|
|
Transformer transformer = trasformerFactory.newTransformer();
|
|
|
|
Transformer transformer = null;
|
|
|
|
|
|
|
|
try
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
transformer = trasformerFactory.newTransformer();
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
catch (TransformerConfigurationException e)
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
throw new InvalidBoatDataException();
|
|
|
|
|
|
|
|
}
|
|
|
|
DOMSource source = new DOMSource(doc);
|
|
|
|
DOMSource source = new DOMSource(doc);
|
|
|
|
|
|
|
|
|
|
|
|
//print XML object to check for correctness
|
|
|
|
|
|
|
|
StreamResult result = new StreamResult(System.out);
|
|
|
|
//Serialize document.
|
|
|
|
|
|
|
|
StringWriter stringWriter = new StringWriter();
|
|
|
|
|
|
|
|
StreamResult result = new StreamResult(stringWriter);
|
|
|
|
|
|
|
|
try
|
|
|
|
|
|
|
|
{
|
|
|
|
transformer.transform(source,result);
|
|
|
|
transformer.transform(source,result);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
catch (TransformerException e)
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
throw new InvalidBoatDataException();
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
//TODO now we should place in XML message object.
|
|
|
|
|
|
|
|
//TODO now we should serialize xml message object.
|
|
|
|
|
|
|
|
//TODO now we should write serialized xml message over this.outputStream.
|
|
|
|
|
|
|
|
|
|
|
|
} catch (Exception e) {
|
|
|
|
try
|
|
|
|
e.printStackTrace();
|
|
|
|
{
|
|
|
|
|
|
|
|
this.outputStream.write(stringWriter.toString().getBytes());//TEMP currently we output the XML doc, not the serialized message.
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
catch (IOException e)
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
throw new InvalidBoatDataException();
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|