From 772ece25a0856cb3c144d9e5640deeebf75cc4b0 Mon Sep 17 00:00:00 2001 From: Zhi You Tan Date: Tue, 2 May 2017 22:39:33 +1200 Subject: [PATCH] Implemented real time race clock on the start screen using data from stream. #story[594] --- .../java/seng302/controllers/Controller.java | 17 ++++++++++++----- .../seng302/models/parsers/StreamParser.java | 11 +++++++++++ src/main/resources/views/MainView.fxml | 16 +++++++++------- 3 files changed, 32 insertions(+), 12 deletions(-) diff --git a/src/main/java/seng302/controllers/Controller.java b/src/main/java/seng302/controllers/Controller.java index 26f75d52..228369c0 100644 --- a/src/main/java/seng302/controllers/Controller.java +++ b/src/main/java/seng302/controllers/Controller.java @@ -22,10 +22,9 @@ import seng302.models.parsers.XMLParser; import javax.xml.crypto.dsig.XMLObject; import java.io.IOException; import java.net.URL; -import java.util.ArrayList; -import java.util.ResourceBundle; -import java.util.Timer; -import java.util.TimerTask; +import java.text.DateFormat; +import java.text.SimpleDateFormat; +import java.util.*; /** * Created by michaelrausch on 21/03/17. @@ -47,6 +46,8 @@ public class Controller implements Initializable { private TableColumn shortNameCol; @FXML private TableColumn countryCol; + @FXML + private Label realTime; private void setContentPane(String jfxUrl){ try{ @@ -64,7 +65,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())); } /** @@ -74,6 +77,7 @@ public class Controller implements Initializable { if (StreamParser.isStreamStatus()) { XMLParser xmlParser = StreamParser.getXmlObject(); streamButton.setVisible(false); + realTime.setVisible(true); timeTillLive.setVisible(true); timeTillLive.setTextFill(Color.GREEN); timeTillLive.setText("Connecting..."); @@ -83,10 +87,12 @@ public class Controller implements Initializable { public void run() { Platform.runLater(() -> { if (StreamParser.isRaceFinished()) { + realTime.setText(StreamParser.getCurrentTimeString()); timeTillLive.setTextFill(Color.RED); timeTillLive.setText("Race finished! Waiting for new race..."); switchToRaceViewButton.setDisable(true); } else if (StreamParser.getTimeSinceStart() > 0) { + realTime.setText(StreamParser.getCurrentTimeString()); updateTeamList(); timeTillLive.setTextFill(Color.RED); switchToRaceViewButton.setDisable(false); @@ -98,6 +104,7 @@ public class Controller implements Initializable { String timerString = "-" + timerMinute + ":" + timerSecond + " minutes"; timeTillLive.setText(timerString); } else { + realTime.setText(StreamParser.getCurrentTimeString()); updateTeamList(); timeTillLive.setTextFill(Color.BLACK); switchToRaceViewButton.setDisable(false); diff --git a/src/main/java/seng302/models/parsers/StreamParser.java b/src/main/java/seng302/models/parsers/StreamParser.java index b0eed3aa..40ef23aa 100644 --- a/src/main/java/seng302/models/parsers/StreamParser.java +++ b/src/main/java/seng302/models/parsers/StreamParser.java @@ -39,6 +39,7 @@ public class StreamParser extends Thread{ private static long timeSinceStart = -1; private static List boats = new ArrayList<>(); private static double windDirection = 0; + private static String currentTimeString; /** * Used to initialise the thread name and stream parser object so a thread can be executed @@ -177,6 +178,7 @@ public class StreamParser extends Thread{ DateFormat format = new SimpleDateFormat("dd/MM/yyyy HH:mm:ss"); format.setTimeZone(TimeZone.getTimeZone("UTC")); 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"); @@ -502,5 +504,14 @@ public class StreamParser extends Thread{ public static double getWindDirection() { return windDirection; } + + /** + * returns stream time in formatted string format + * + * @return String of stream time + */ + public static String getCurrentTimeString() { + return currentTimeString; + } } diff --git a/src/main/resources/views/MainView.fxml b/src/main/resources/views/MainView.fxml index cc38f3ed..dc275512 100644 --- a/src/main/resources/views/MainView.fxml +++ b/src/main/resources/views/MainView.fxml @@ -17,8 +17,9 @@ - - + + + @@ -38,14 +39,14 @@ -