From 798fe4da0e3abd4e2232da6db09782f80116e469 Mon Sep 17 00:00:00 2001 From: Michael Rausch Date: Fri, 24 Mar 2017 11:15:46 +1300 Subject: [PATCH 1/2] Changed FPS to 30 --- .../java/seng302/controllers/CanvasController.java | 4 ++-- .../controllers/BoatPositionControllerTest.java | 10 +--------- 2 files changed, 3 insertions(+), 11 deletions(-) diff --git a/src/main/java/seng302/controllers/CanvasController.java b/src/main/java/seng302/controllers/CanvasController.java index 63126939..437926bc 100644 --- a/src/main/java/seng302/controllers/CanvasController.java +++ b/src/main/java/seng302/controllers/CanvasController.java @@ -132,7 +132,7 @@ public class CanvasController { */ public void initialize() { gc = canvas.getGraphicsContext2D(); - //gc.scale(1, 1); + //gc.scale(2, 2); RaceController raceController = new RaceController(); raceController.initializeRace(); race = raceController.getRace(); @@ -144,7 +144,7 @@ public class CanvasController { @Override public void handle(long now) { - if (now - lastUpdate >= 16000000){ + if (now - lastUpdate >= 33000000){ gc.clearRect(0, 0, 19200, 10800); drawCourse(); drawBoats(); diff --git a/src/test/java/seng302/controllers/BoatPositionControllerTest.java b/src/test/java/seng302/controllers/BoatPositionControllerTest.java index dd6366aa..5cfdf1d6 100644 --- a/src/test/java/seng302/controllers/BoatPositionControllerTest.java +++ b/src/test/java/seng302/controllers/BoatPositionControllerTest.java @@ -1,15 +1,7 @@ package seng302.controllers; import org.junit.Test; -import seng302.models.Boat; -import seng302.models.Event; -import seng302.models.mark.SingleMark; - -import java.util.ArrayList; -import java.util.Arrays; - -import static org.junit.Assert.*; -import static org.mockito.Mockito.when; +//import static org.mockito.Mockito.when; /** * Created by ptg19 on 23/03/17. From d39aacba830ca64c023dc61edf6181112d8bd5b1 Mon Sep 17 00:00:00 2001 From: zyt10 Date: Fri, 24 Mar 2017 11:34:34 +1300 Subject: [PATCH 2/2] RaceController now uses new parsers & deleted OldApp and OldFileParser #story[377] --- doc/examples/teams.xml | 12 +- src/main/java/seng302/App.java | 3 - .../seng302/controllers/RaceController.java | 45 +++--- src/main/java/seng302/models/OldApp.java | 105 -------------- .../java/seng302/models/OldFileParser.java | 132 ------------------ src/test/java/seng302/OldFileParserTest.java | 53 ------- 6 files changed, 24 insertions(+), 326 deletions(-) delete mode 100644 src/main/java/seng302/models/OldApp.java delete mode 100644 src/main/java/seng302/models/OldFileParser.java delete mode 100644 src/test/java/seng302/OldFileParserTest.java diff --git a/doc/examples/teams.xml b/doc/examples/teams.xml index 21908ccf..ed8cfcf1 100644 --- a/doc/examples/teams.xml +++ b/doc/examples/teams.xml @@ -4,31 +4,31 @@ Oracle Team USA USA - 10.0 + 30.9 Artemis Racing ART - 10.0 + 59.3 Emirates Team New Zealand NZL - 10.0 + 51.5 Land Rover BAR BAR - 10.0 + 29.9 SoftBank Team Japan JAP - 10.0 + 99.6 Groupama Team France FRC - 10 + 45.6 \ No newline at end of file diff --git a/src/main/java/seng302/App.java b/src/main/java/seng302/App.java index b2dd4250..b88f607b 100644 --- a/src/main/java/seng302/App.java +++ b/src/main/java/seng302/App.java @@ -14,9 +14,6 @@ public class App extends Application primaryStage.setTitle("RaceVision"); primaryStage.setScene(new Scene(root)); -// seng302.models.OldApp.main(); // Run this to show how positions are updated -// seng302.controllers.RaceController.initializeRace(); - primaryStage.show(); } diff --git a/src/main/java/seng302/controllers/RaceController.java b/src/main/java/seng302/controllers/RaceController.java index e8471426..ae1bfb1e 100644 --- a/src/main/java/seng302/controllers/RaceController.java +++ b/src/main/java/seng302/controllers/RaceController.java @@ -1,15 +1,14 @@ package seng302.controllers; import seng302.models.Boat; -import seng302.models.OldFileParser; import seng302.models.Race; +import seng302.models.parsers.ConfigParser; import seng302.models.parsers.CourseParser; +import seng302.models.parsers.TeamsParser; -import java.io.FileNotFoundException; import java.lang.reflect.Array; import java.util.ArrayList; import java.util.Collections; -import java.util.Map; import java.util.Random; /** @@ -21,11 +20,11 @@ public class RaceController { Race race = null; public void initializeRace() { - String raceConfigFile; - raceConfigFile = "doc/examples/config.json"; + String raceConfigFile = "doc/examples/config.xml"; + String teamsConfigFile = "doc/examples/teams.xml"; try { - race = createRace(raceConfigFile); + race = createRace(raceConfigFile, teamsConfigFile); } catch (Exception e) { System.out.println("There was an error creating the race."); } @@ -37,36 +36,28 @@ public class RaceController { } } - public Race createRace(String configFile) throws Exception { + public Race createRace(String configFile, String teamsConfigFile) throws Exception { Race race = new Race(); - OldFileParser fp; // Read team names from file - try{ - fp = new OldFileParser(configFile); - } - catch (FileNotFoundException e){ - System.out.println("Config file does not exist"); - return null; - } + TeamsParser tp = new TeamsParser(teamsConfigFile); + + // Read course from file + ConfigParser config = new ConfigParser(configFile); ArrayList boatNames = new ArrayList<>(); - ArrayList> teams = fp.getTeams(); + ArrayList teams = tp.getBoats(); //get race size - int numberOfBoats = (int) fp.getRaceSize(); - int boatsAdded = 0; + int numberOfBoats = teams.size(); //get time scale - double timeScale = fp.getTimeScale(); + double timeScale = config.getTimeScale(); race.setTimeScale(timeScale); - for (Map team : teams) { - if (boatsAdded < numberOfBoats){ - boatNames.add((String) team.get("team-name")); - race.addBoat(new Boat(team.get("team-name").toString(), (Double) (team.get("velocity")))); - } - boatsAdded++; + for (Boat boat : teams) { + boatNames.add(boat.getTeamName()); + race.addBoat(boat); } // Shuffle team names @@ -77,8 +68,8 @@ public class RaceController { return null; } - CourseParser cp = new CourseParser("doc/examples/course.xml"); - race.addCourse(cp.getCourse()); + CourseParser course = new CourseParser("doc/examples/course.xml"); + race.addCourse(course.getCourse()); return race; } diff --git a/src/main/java/seng302/models/OldApp.java b/src/main/java/seng302/models/OldApp.java deleted file mode 100644 index aed658be..00000000 --- a/src/main/java/seng302/models/OldApp.java +++ /dev/null @@ -1,105 +0,0 @@ -package seng302.models; - -import seng302.models.mark.SingleMark; - -import java.lang.reflect.Array; -import java.util.ArrayList; -import java.util.Collections; -import java.util.Map; -import java.util.Random; -import java.io.FileNotFoundException; - -public class OldApp { - - /** - * Builds a race object for the AC35 course - * - * @return a Race object for the AC35 course - */ - public static Race createRace(String configFile) throws Exception { - Race race = new Race(); - OldFileParser fp; - - // Read team names from file - try{ - fp = new OldFileParser(configFile); - } - catch (FileNotFoundException e){ - System.out.println("Config file does not exist"); - return null; - } - - ArrayList boatNames = new ArrayList<>(); - ArrayList> teams = fp.getTeams(); - - //get race size - int numberOfBoats = (int) fp.getRaceSize(); - - //get time scale - double timeScale = fp.getTimeScale(); - race.setTimeScale(timeScale); - - for (Map team : teams) { - boatNames.add((String) team.get("team-name")); - } - - // Shuffle team names - long seed = System.nanoTime(); - Collections.shuffle(boatNames, new Random(seed)); - - if (numberOfBoats > Array.getLength(boatNames.toArray())) { - return null; - } - - // Add boats to the race - for (int i = 0; i < numberOfBoats; i++) { - race.addBoat(new Boat(boatNames.get(i), (Double) (teams.get(i).get("velocity")))); - } - - // Add marks to race in order -// race.addMark(new SingleMark("Start", 32.296038,-64.854401 )); -// race.addMark(new SingleMark("Mid SingleMark", 32.292881,-64.843231 )); -// race.addMark(new SingleMark("Leeward Gate", 32.283808,-64.850012 )); -// race.addMark(new SingleMark("Windward Gate", 32.309908,-64.833665 )); -// race.addMark(new SingleMark("Finish", 32.318439,-64.837367 )); - - return race; - } - - public static void main() { - Race race = null; - String raceConfigFile; - - raceConfigFile = "doc/examples/config.json"; - - - try { - race = createRace(raceConfigFile); - } catch (Exception e) { - System.out.println("There was an error creating the race."); - } - - // If race was created - if (race != null) { - //race.displayStartingBoats(); - - System.out.println("\n\n"); - System.out.println("######################"); - System.out.println("# Live Race Updates "); - System.out.println("######################"); - - race.startRace(); - - System.out.println("\n\n"); - System.out.println("######################"); - System.out.println("# Race Results "); - System.out.println("######################"); - - //race.showRaceMarkerResults(); - //race.displayFinishingOrder(); - - } else { - System.out.println("There was an error creating the race. Exiting."); - } - } -} \ No newline at end of file diff --git a/src/main/java/seng302/models/OldFileParser.java b/src/main/java/seng302/models/OldFileParser.java deleted file mode 100644 index e9447b8e..00000000 --- a/src/main/java/seng302/models/OldFileParser.java +++ /dev/null @@ -1,132 +0,0 @@ -package seng302.models; - -import org.json.simple.JSONObject; -import org.json.simple.parser.JSONParser; -import org.json.simple.parser.ParseException; - -import java.io.FileNotFoundException; -import java.io.FileReader; -import java.io.IOException; -import java.util.ArrayList; -import java.util.Map; - - -/** - * Read team name from a given Json file. So that user can extract information - * efficiently from external files. - */ - -public class OldFileParser { - - private String filePath; - private JSONObject content; - - /** - * used to construct an instance of file parser - * - * @param filePath a string like path to show location of desired file to - * be parsed - */ - public OldFileParser(String filePath) throws Exception { - this.filePath = filePath; - this.readFile(); - } - - /** - * Reads content from a given file, and return the content as JSONObject. - * Throws FileNotFoundException, if the given file cannot be found. - */ - private void readFile() throws FileNotFoundException { - JSONParser parser = new JSONParser(); - try { - this.content = (JSONObject) parser.parse(new FileReader(filePath)); - - } catch (FileNotFoundException e) { - throw e; - } catch (IOException e) { - e.printStackTrace(); - } catch (ParseException e) { - e.printStackTrace(); - } - } - - /** - * Gets time scale setting parameter. - * - * @return long time scale. -1 if parameter is invalid (eg. scale is - * negative number, or containing non numeric character) or cannot be found. - */ - @SuppressWarnings("unchecked") - public double getTimeScale() { - try { - double timeScale = (double) this.content.get("time-scale"); - return timeScale >= 0 ? timeScale : -1; - } catch (Exception e) { - e.printStackTrace(); - return 1; - } - } - - /** - * Gets race name in the setting file. - * - * @return a string of race name. null if race name is invalid or cannot - * be found. - */ - @SuppressWarnings("unchecked") - public String getRaceName() { - try { - return (String) this.content.get("race-name"); - } catch (Exception e) { - return null; - } - } - - /** - * Gets an array of teams who participate the race. - * - * @return an ArrayList containing strings of team names. null if teams - * setting is invalid or there is no team. - */ - @SuppressWarnings("unchecked") - public ArrayList> getTeams() { - try { - return (ArrayList>) this.content.get("teams"); - } catch (Exception e) { - return null; - } - } - - /** - * Gets the total number of teams. - * - * @return the number of teams. 0 if no teams or anything goes wrong. - */ - @SuppressWarnings("unchecked") - public long getTotalNumberOfTeams() { - ArrayList> teams = getTeams(); - try { - return teams.size(); - } catch (Exception e) { - return 0; - } - } - - /** - * Gets the number of boats that would compete during a race. Returns the - * total number of race size if parameter is invalid or cannot be found. - * - * @return an int of the race size. - */ - @SuppressWarnings("unchecked") - public long getRaceSize() { - long totalTeams = this.getTotalNumberOfTeams(); - try { - long raceSize = (long) this.content.get("race-size"); - return raceSize >= 0 && raceSize <= totalTeams ? raceSize : totalTeams; - } catch (Exception e) { - e.printStackTrace(); - return totalTeams; - } - } -} \ No newline at end of file diff --git a/src/test/java/seng302/OldFileParserTest.java b/src/test/java/seng302/OldFileParserTest.java deleted file mode 100644 index fa919106..00000000 --- a/src/test/java/seng302/OldFileParserTest.java +++ /dev/null @@ -1,53 +0,0 @@ -package seng302; - -import org.junit.Test; -import seng302.models.OldFileParser; - -import java.io.FileNotFoundException; - -import static org.junit.Assert.assertEquals; - -/** - * Unit test for FileParser class - * Created by Haoming on 5/03/17. - */ -public class OldFileParserTest { - - /** - * test if it fails from reading non existed file - */ - @Test(expected = FileNotFoundException.class) - public void readNonExistedFile() throws Exception { - OldFileParser fileParser = new OldFileParser("test/java/seng302/non-existed.json"); - } - - /** - * test a valid json file with valid content. - */ - @Test - public void readValidFile() throws Exception { - OldFileParser fileParser = new OldFileParser("src/test/java/seng302/valid.json"); - - assertEquals("AC35", fileParser.getRaceName()); - - assertEquals("Oracle Team USA", fileParser.getTeams().get(0).get("team-name")); - assertEquals(20.9, fileParser.getTeams().get(0).get("velocity")); - assertEquals(2, fileParser.getRaceSize()); - assertEquals(6, fileParser.getTotalNumberOfTeams()); - } - - /** - * test an invalid json file within wrong type value and misnamed - * variable name. - */ - @Test - public void readInvalidFile() throws Exception { - OldFileParser fileParser = new OldFileParser("src/test/java/seng302/invalid.json"); - - assertEquals(null, fileParser.getRaceName()); - assertEquals(null, fileParser.getTeams()); - //assertEquals(-1, fileParser.getTimeScale()); - assertEquals(null, fileParser.getTeams()); - } - -} \ No newline at end of file