From 59809c39ea58b3a207d81589b3cf96a45bb05f38 Mon Sep 17 00:00:00 2001 From: Alistair McIntyre Date: Thu, 4 May 2017 14:13:03 +1200 Subject: [PATCH] Began figuring out how to implement XML data in place of mock data. #story[820] #pair[ajm412, wmu16] --- .../java/seng302/controllers/Controller.java | 13 +++++----- .../seng302/models/parsers/StreamParser.java | 25 +++++++++++++++++-- 2 files changed, 29 insertions(+), 9 deletions(-) diff --git a/src/main/java/seng302/controllers/Controller.java b/src/main/java/seng302/controllers/Controller.java index 97ee324e..701de5f8 100644 --- a/src/main/java/seng302/controllers/Controller.java +++ b/src/main/java/seng302/controllers/Controller.java @@ -18,12 +18,11 @@ import seng302.models.Yacht; import seng302.models.parsers.StreamParser; import seng302.models.parsers.XMLParser; - import java.io.IOException; import java.net.URL; -import java.text.DateFormat; -import java.text.SimpleDateFormat; -import java.util.*; +import java.util.ResourceBundle; +import java.util.Timer; +import java.util.TimerTask; public class Controller implements Initializable { @FXML @@ -65,9 +64,9 @@ public class Controller implements Initializable { @Override public void initialize(URL location, ResourceBundle resources) { - DateFormat format = new SimpleDateFormat("dd/MM/yyyy HH:mm:ss"); - format.setTimeZone(TimeZone.getTimeZone("UTC")); - realTime.setText(format.format(System.currentTimeMillis())); + //DateFormat format = new SimpleDateFormat("dd/MM/yyyy HH:mm:ss"); + //format.setTimeZone(TimeZone.getTimeZone("GMT-8")); + //realTime.setText(format.format(new Date())); } /** diff --git a/src/main/java/seng302/models/parsers/StreamParser.java b/src/main/java/seng302/models/parsers/StreamParser.java index 5613485a..66b75f23 100644 --- a/src/main/java/seng302/models/parsers/StreamParser.java +++ b/src/main/java/seng302/models/parsers/StreamParser.java @@ -165,6 +165,22 @@ public class StreamParser extends Thread{ long heartbeat = bytesToLong(packet.getPayload()); } + private static String getTimeZoneString() { + + Integer offset = xmlObject.getRegattaXML().getUtcOffset(); + StringBuilder utcOffset = new StringBuilder(); + utcOffset.append("GMT"); + if (offset > 0) { + utcOffset.append("+"); + utcOffset.append(offset); + } else if (offset < 0) { + utcOffset.append("-"); + utcOffset.append(offset); + } + return utcOffset.toString(); + + } + /** * Extracts the useful race status data from race status type packets. This method will also print to the * console the current state of the race (if it has started/finished or is about to start), along side @@ -180,10 +196,15 @@ public class StreamParser extends Thread{ int raceStatus = payload[11]; // System.out.println("raceStatus = " + raceStatus); long expectedStartTime = bytesToLong(Arrays.copyOfRange(payload,12,18)); + DateFormat format = new SimpleDateFormat("dd/MM/yyyy HH:mm:ss"); - format.setTimeZone(TimeZone.getTimeZone("UTC")); + if (xmlObject.getRegattaXML() != null) { + format.setTimeZone(TimeZone.getTimeZone(getTimeZoneString())); + currentTimeString = format.format((new Date (currentTime)).getTime()); + } long timeTillStart = ((new Date (expectedStartTime)).getTime() - (new Date (currentTime)).getTime())/1000; - currentTimeString = format.format((new Date (currentTime)).getTime()); + + if (timeTillStart > 0) { timeSinceStart = timeTillStart; //System.out.println("Time till start: " + timeTillStart + " Seconds");