diff --git a/mock/src/main/java/seng302/Data/BoatData.java b/mock/src/main/java/seng302/Data/BoatData.java
index 3f4d9b98..a9d0512a 100644
--- a/mock/src/main/java/seng302/Data/BoatData.java
+++ b/mock/src/main/java/seng302/Data/BoatData.java
@@ -180,7 +180,7 @@ public class BoatData {
private void appendBoatName(Element boat, int i) {
//BoatName attribute
Attr attrBoatName = doc.createAttribute("BoatName");
- attrBoatName.setValue(boatData.get(i).toString());
+ attrBoatName.setValue(boatData.get(i).getName());
boat.setAttributeNode(attrBoatName);
}
diff --git a/mock/src/main/java/seng302/MockOutput.java b/mock/src/main/java/seng302/MockOutput.java
index c72b811d..ead68b09 100644
--- a/mock/src/main/java/seng302/MockOutput.java
+++ b/mock/src/main/java/seng302/MockOutput.java
@@ -36,10 +36,15 @@ public class MockOutput implements Runnable
private int heartbeatSequenceNum = 1;
private int boatLocationSequenceNumber = 1;
private int raceStatusSequenceNumber = 1;
+ private String raceXml;
+ private String regattaXml;
+ private String boatsXml;
+
+
public MockOutput() throws IOException {
lastHeartbeatTime = System.currentTimeMillis();
- serverSocket = new ServerSocket(4942);
+ serverSocket = new ServerSocket(4945);
}
/**
* calculates the time since last heartbeat
@@ -131,48 +136,13 @@ public class MockOutput implements Runnable
/*******************************Test********************************/
- StringBuilder xmlString1;
+ while(boatsXml == null || regattaXml == null || raceXml == null) {
- BufferedReader br1 = new BufferedReader(new InputStreamReader(
- this.getClass().getResourceAsStream(("/raceXML/Boats.xml"))));
-
- String line1;
- xmlString1 = new StringBuilder();
- while((line1=br1.readLine())!= null){
- xmlString1.append(line1.trim());
}
- parseXMLString(xmlString1.toString(), XMLMessage.XMLTypeBoat);
-
-
-
- StringBuilder xmlString2;
-
- BufferedReader br2 = new BufferedReader(new InputStreamReader(
- this.getClass().getResourceAsStream(("/raceXML/Race.xml"))));
-
- String line2;
- xmlString2 = new StringBuilder();
- while((line2=br2.readLine())!= null){
- xmlString2.append(line2.trim());
- }
-
- parseXMLString(xmlString2.toString(), XMLMessage.XMLTypeRace);
-
-
-
- StringBuilder xmlString;
-
- BufferedReader br = new BufferedReader(new InputStreamReader(
- this.getClass().getResourceAsStream(("/raceXML/Regatta.xml"))));
-
- String line;
- xmlString = new StringBuilder();
- while((line=br.readLine())!= null){
- xmlString.append(line.trim());
- }
-
- parseXMLString(xmlString.toString(), XMLMessage.XMLTypeRegatta);
+ parseXMLString(raceXml, XMLMessage.XMLTypeRace);
+ parseXMLString(regattaXml, XMLMessage.XMLTypeRegatta);
+ parseXMLString(boatsXml, XMLMessage.XMLTypeBoat);
/*******************************Test********************************/
@@ -206,6 +176,20 @@ public class MockOutput implements Runnable
+ public void setRaceXml(String raceXml) {
+ this.raceXml = raceXml;
+ }
+
+
+ public void setRegattaXml(String regattaXml) {
+ this.regattaXml = regattaXml;
+ }
+
+
+ public void setBoatsXml(String boatsXml) {
+ this.boatsXml = boatsXml;
+ }
+
public static void main(String argv[]) throws Exception
{
MockOutput client = new MockOutput();
diff --git a/mock/src/main/java/seng302/Model/Event.java b/mock/src/main/java/seng302/Model/Event.java
index 3329e940..b0193fa7 100644
--- a/mock/src/main/java/seng302/Model/Event.java
+++ b/mock/src/main/java/seng302/Model/Event.java
@@ -53,6 +53,7 @@ public class Event {
System.setOut(System.out);
RegattaData regattaData = new RegattaData(regattaDataSource);
String xmlString = regattaData.createXML();
+ mockOutput.setRegattaXml(xmlString);
mockOutput.parseXMLString(xmlString, 26);
}
@@ -61,6 +62,8 @@ public class Event {
RaceData raceData = new RaceData(raceDataSource);
//Serialize race data to an XML as a string.
String xmlString = raceData.createXML();
+ System.out.println(xmlString);
+ mockOutput.setRaceXml(xmlString);
mockOutput.parseXMLString(xmlString, 26);
}
@@ -68,6 +71,8 @@ public class Event {
BoatData boatData = new BoatData(raceDataSource.getBoats());
//Serialize race data to an XML as a string.
String xmlString = boatData.createXML();
+ System.out.println(xmlString);
+ mockOutput.setBoatsXml(xmlString);
mockOutput.parseXMLString(xmlString, 26);
}
diff --git a/mock/src/main/resources/raceXML/bermuda_AC35.xml b/mock/src/main/resources/raceXML/bermuda_AC35.xml
index 27067d69..0520a500 100644
--- a/mock/src/main/resources/raceXML/bermuda_AC35.xml
+++ b/mock/src/main/resources/raceXML/bermuda_AC35.xml
@@ -2,7 +2,7 @@
5326
- ORACLE TEAM USA
+ Team 7
20
USA
121
diff --git a/visualiser/src/main/java/seng302/Controllers/StartController.java b/visualiser/src/main/java/seng302/Controllers/StartController.java
index 4d9c88de..257d83fc 100644
--- a/visualiser/src/main/java/seng302/Controllers/StartController.java
+++ b/visualiser/src/main/java/seng302/Controllers/StartController.java
@@ -193,8 +193,12 @@ public class StartController extends Controller implements Observer {
if(((StreamedCourse) o).getBoats() != null) {
initialiseTables();
}
- if(((StreamedCourse)o).getZonedDateTime() != null) {
- setRaceClock();
+ if (((StreamedCourse) o).getZonedDateTime() != null) {
+ Platform.runLater(() -> {
+ {
+ setRaceClock();
+ }
+ });
}
}
}
diff --git a/visualiser/src/main/java/seng302/Mock/StreamedCourseXMLReader.java b/visualiser/src/main/java/seng302/Mock/StreamedCourseXMLReader.java
index 3e88ad01..7effcbda 100644
--- a/visualiser/src/main/java/seng302/Mock/StreamedCourseXMLReader.java
+++ b/visualiser/src/main/java/seng302/Mock/StreamedCourseXMLReader.java
@@ -1,5 +1,6 @@
package seng302.Mock;
+import com.sun.org.apache.xpath.internal.operations.Bool;
import org.joda.time.DateTime;
import org.w3c.dom.Element;
import org.w3c.dom.NamedNodeMap;
@@ -71,25 +72,28 @@ public class StreamedCourseXMLReader extends XMLReader {
}
private void read() throws ParseException, StreamedCourseXMLException {
-// readRace();
+ readRace();
readParticipants();
readCourse();
}
private void readRace() throws ParseException {
- DateTimeFormatter dateFormat = DateTimeFormatter.ofPattern("yyyy-MM-dd'T'HH:mm:ssZ");
+ DateTimeFormatter dateFormat = DateTimeFormatter.ISO_OFFSET_DATE_TIME;
Element settings = (Element) doc.getElementsByTagName("Race").item(0);
+ System.out.println(getTextValueOfNode(settings, "CreationTimeDate"));
raceID = Integer.parseInt(getTextValueOfNode(settings, "RaceID"));
raceType = getTextValueOfNode(settings, "RaceType");
creationTimeDate = ZonedDateTime.parse(getTextValueOfNode(settings, "CreationTimeDate"), dateFormat);
NamedNodeMap raceTimeTag = doc.getElementsByTagName("RaceStartTime").item(0).getAttributes();
- raceStartTime = ZonedDateTime.parse(raceTimeTag.getNamedItem("Time").getTextContent(), dateFormat);
+ if (raceTimeTag.getNamedItem("Time") != null) raceStartTime = ZonedDateTime.parse(raceTimeTag.getNamedItem("Time").getTextContent(), dateFormat);
+ else raceStartTime = ZonedDateTime.parse(raceTimeTag.getNamedItem("Start").getTextContent(), dateFormat);
postpone = Boolean.parseBoolean(raceTimeTag.getNamedItem("Postpone").getTextContent());
}
private void readParticipants() {
Element nParticipants = (Element) doc.getElementsByTagName("Participants").item(0);
+ nParticipants.getChildNodes().getLength();
for (int i = 0; i < nParticipants.getChildNodes().getLength(); i++) {
int sourceID;
Node yacht = nParticipants.getChildNodes().item(i);
@@ -157,7 +161,8 @@ public class StreamedCourseXMLReader extends XMLReader {
* @return value of "compoundMarkID" attribute
*/
private int getCompoundMarkID(Element element) {
- return Integer.parseInt(element.getAttribute("CompoundMarkID"));
+ //return Integer.parseInt(element.getAttribute("CompoundMarkID"));
+ return 3;
}
/**
diff --git a/visualiser/src/main/java/seng302/VisualiserInput.java b/visualiser/src/main/java/seng302/VisualiserInput.java
index 58472acd..967cb05e 100644
--- a/visualiser/src/main/java/seng302/VisualiserInput.java
+++ b/visualiser/src/main/java/seng302/VisualiserInput.java
@@ -37,6 +37,11 @@ public class VisualiserInput implements Runnable
private Map boatLocation;
+ private RaceStatus raceStatus;
+
+ private Map boatStatus;
+
+ public VisualiserInput(StreamedCourse course) throws IOException{
public VisualiserInput(Socket socket, StreamedCourse course) throws IOException{
this.connectionSocket = socket;
@@ -44,6 +49,7 @@ public class VisualiserInput implements Runnable
this.course = course;
this.boatLocation = new HashMap<>();
+ this.boatStatus = new HashMap<>();
//start Time
@@ -77,6 +83,30 @@ public class VisualiserInput implements Runnable
return (now - lastHeartbeatTime) / 1000.0;
}
+ /**
+ * Returns the boat locations
+ * @return locations of where the boats are
+ */
+ public Map getBoatLocation() {
+ return boatLocation;
+ }
+
+ /**
+ * Gets the status of the race
+ * @return the status of the race
+ */
+ public RaceStatus getRaceStatus() {
+ return raceStatus;
+ }
+
+ /**
+ * Hashmap of the boat status'
+ * @return Hash map of boat status
+ */
+ public Map getBoatStatus() {
+ return boatStatus;
+ }
+
/**
* Takes an inputStream and reads the first 15 bytes (the header) and gets the message length
* for the whole message then reads that and returns the byte array
@@ -128,14 +158,18 @@ public class VisualiserInput implements Runnable
// System.out.println("HeartBeat Message! " + heartbeatSeqNum);
break;
case RACESTATUS:
-// System.out.println("Race Status Message");
+ System.out.println("Race Status Message");
+ raceStatus = ((RaceStatus) data);
+ for (BoatStatusMessage msg: raceStatus.getBoatStatusMessages()){
+ boatStatus.put(msg.getSourceID(), msg);
+ }
break;
case DISPLAYTEXTMESSAGE:
// System.out.println("Display Text Message");
//no decoder for this.
break;
case XMLMESSAGE:
-// System.out.println("XML Message!");
+ System.out.println("XML Message!");
XMLMessage xml = (XMLMessage) data;
try {
if (xml.getXmlMsgSubType() == xml.XMLTypeRegatta){
@@ -159,7 +193,7 @@ public class VisualiserInput implements Runnable
}
break;
case RACESTARTSTATUS:
- System.out.println("Race Start Status Message");
+ //System.out.println("Race Start Status Message");
break;
case YACHTEVENTCODE:
// System.out.println("Yacht Action Code!");
diff --git a/visualiser/src/test/java/seng302/Mock/BoatsXMLTest.java b/visualiser/src/test/java/seng302/Mock/BoatsXMLTest.java
index e4dc62a1..ed795d5a 100644
--- a/visualiser/src/test/java/seng302/Mock/BoatsXMLTest.java
+++ b/visualiser/src/test/java/seng302/Mock/BoatsXMLTest.java
@@ -44,4 +44,5 @@ public class BoatsXMLTest {
StreamedBoat boat = (StreamedBoat) boatXMLReader.getBoats().get(0);
assertEquals(boat.getSourceID(), 101);
}
+
}