diff --git a/pom.xml b/pom.xml index a562d1a3..9b48c7ae 100644 --- a/pom.xml +++ b/pom.xml @@ -43,7 +43,7 @@ - seng302.App + seng302.models.App ${maven.compiler.source} ${maven.compiler.target} diff --git a/src/main/java/seng302/App.java b/src/main/java/seng302/App.java index 3cbac3b9..95b70638 100644 --- a/src/main/java/seng302/App.java +++ b/src/main/java/seng302/App.java @@ -1,111 +1,28 @@ package seng302; -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; +import javafx.application.Application; +import javafx.fxml.FXMLLoader; +import javafx.scene.Parent; +import javafx.scene.Scene; +import javafx.stage.Stage; -public class App { - /** - * 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(); - FileParser fp; +public class App extends Application +{ + @Override + public void start(Stage primaryStage) throws Exception { + System.out.println(getClass().getResource("/RaceView.fxml")); - // Read team names from file - try{ - fp = new FileParser(configFile); - } - catch (FileNotFoundException e){ - System.out.println("Config file does not exist"); - return null; - } + Parent root = FXMLLoader.load(getClass().getResource("/RaceView.fxml")); + primaryStage.setTitle("RaceVision"); + primaryStage.setScene(new Scene(root)); - 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")))); - } - - race.addLeg(new Leg(35, 100, "Start")); - race.addLeg(new Leg(10, 300, "Marker 1")); - race.addLeg(new Leg(350, 400, "Leeward Gate")); - race.addLeg(new Leg(10, 400, "Windward Gate")); - - Leg finishingLeg = new Leg(10, 400, "Leeward Gate"); - finishingLeg.setFinishingLeg(true); - - race.addLeg(finishingLeg); - - return race; + primaryStage.show(); } public static void main(String[] args) { - Race race = null; - String raceConfigFile; - - if (args.length == 2 && args[0].equals("-f")){ - raceConfigFile = args[1]; - } - else{ - // Use default config - 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."); - } + launch(args); } -} \ No newline at end of file +} + + diff --git a/src/main/java/seng302/controllers/CanvasController.java b/src/main/java/seng302/controllers/CanvasController.java new file mode 100644 index 00000000..58a49720 --- /dev/null +++ b/src/main/java/seng302/controllers/CanvasController.java @@ -0,0 +1,19 @@ +package seng302.controllers; + +import javafx.fxml.FXML; +import javafx.scene.canvas.Canvas; +import javafx.scene.canvas.GraphicsContext; +import javafx.scene.paint.Color; + +/** + * Created by ptg19 on 15/03/17. + */ +public class CanvasController { + @FXML private Canvas canvas; + + public void initialize() { + GraphicsContext gc = canvas.getGraphicsContext2D(); + gc.setFill(Color.GREEN); + gc.fillOval(100, 200, 100, 80); + } +} diff --git a/src/main/java/seng302/models/App.java b/src/main/java/seng302/models/App.java new file mode 100644 index 00000000..4cecb733 --- /dev/null +++ b/src/main/java/seng302/models/App.java @@ -0,0 +1,111 @@ +package seng302.models; + +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 App { + + /** + * 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(); + FileParser fp; + + // Read team names from file + try{ + fp = new FileParser(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")))); + } + + race.addLeg(new Leg(35, 100, "Start")); + race.addLeg(new Leg(10, 300, "Marker 1")); + race.addLeg(new Leg(350, 400, "Leeward Gate")); + race.addLeg(new Leg(10, 400, "Windward Gate")); + + Leg finishingLeg = new Leg(10, 400, "Leeward Gate"); + finishingLeg.setFinishingLeg(true); + + race.addLeg(finishingLeg); + + return race; + } + + public static void main(String[] args) { + Race race = null; + String raceConfigFile; + + if (args.length == 2 && args[0].equals("-f")){ + raceConfigFile = args[1]; + } + else{ + // Use default config + 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/Boat.java b/src/main/java/seng302/models/Boat.java similarity index 98% rename from src/main/java/seng302/Boat.java rename to src/main/java/seng302/models/Boat.java index 818392cb..2703aafb 100644 --- a/src/main/java/seng302/Boat.java +++ b/src/main/java/seng302/models/Boat.java @@ -1,4 +1,4 @@ -package seng302; +package seng302.models; /** * Represents a boat in the race. diff --git a/src/main/java/seng302/Event.java b/src/main/java/seng302/models/Event.java similarity index 99% rename from src/main/java/seng302/Event.java rename to src/main/java/seng302/models/Event.java index 50b84c95..d6c6041e 100644 --- a/src/main/java/seng302/Event.java +++ b/src/main/java/seng302/models/Event.java @@ -1,4 +1,4 @@ -package seng302; +package seng302.models; import java.text.SimpleDateFormat; import java.util.Date; diff --git a/src/main/java/seng302/FileParser.java b/src/main/java/seng302/models/FileParser.java similarity index 99% rename from src/main/java/seng302/FileParser.java rename to src/main/java/seng302/models/FileParser.java index 55a32e16..8adb5be4 100644 --- a/src/main/java/seng302/FileParser.java +++ b/src/main/java/seng302/models/FileParser.java @@ -1,4 +1,4 @@ -package seng302; +package seng302.models; import org.json.simple.JSONObject; import org.json.simple.parser.JSONParser; diff --git a/src/main/java/seng302/Leg.java b/src/main/java/seng302/models/Leg.java similarity index 99% rename from src/main/java/seng302/Leg.java rename to src/main/java/seng302/models/Leg.java index c16bb569..97c776e3 100644 --- a/src/main/java/seng302/Leg.java +++ b/src/main/java/seng302/models/Leg.java @@ -1,4 +1,4 @@ -package seng302; +package seng302.models; /** * Represents the leg of a race. diff --git a/src/main/java/seng302/Marker.java b/src/main/java/seng302/models/Marker.java similarity index 95% rename from src/main/java/seng302/Marker.java rename to src/main/java/seng302/models/Marker.java index 16f2eed0..6c70b2f3 100644 --- a/src/main/java/seng302/Marker.java +++ b/src/main/java/seng302/models/Marker.java @@ -1,11 +1,11 @@ -package seng302; +package seng302.models; import java.util.ArrayList; /** * Represents the marker at the beginning of a leg */ -class Marker{ +public class Marker{ private String name; private ArrayList boatOrder; diff --git a/src/main/java/seng302/Race.java b/src/main/java/seng302/models/Race.java similarity index 99% rename from src/main/java/seng302/Race.java rename to src/main/java/seng302/models/Race.java index 008f4762..c9c766db 100644 --- a/src/main/java/seng302/Race.java +++ b/src/main/java/seng302/models/Race.java @@ -1,4 +1,4 @@ -package seng302; +package seng302.models; import java.lang.reflect.Array; import java.util.*; diff --git a/src/main/resources/RaceView.fxml b/src/main/resources/RaceView.fxml new file mode 100644 index 00000000..e2922baf --- /dev/null +++ b/src/main/resources/RaceView.fxml @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/src/test/java/seng302/AppTest.java b/src/test/java/seng302/AppTest.java deleted file mode 100644 index 018758ab..00000000 --- a/src/test/java/seng302/AppTest.java +++ /dev/null @@ -1,15 +0,0 @@ -package seng302; - -import org.junit.Test; - -import static org.junit.Assert.assertTrue; - -/** - * Unit test for simple App. - */ -public class AppTest { - @Test - public void testApp() { - assertTrue(true); - } -} diff --git a/src/test/java/seng302/BoatTest.java b/src/test/java/seng302/BoatTest.java index 695ede48..6344bece 100644 --- a/src/test/java/seng302/BoatTest.java +++ b/src/test/java/seng302/BoatTest.java @@ -1,6 +1,7 @@ package seng302; import org.junit.Test; +import seng302.models.Boat; import static org.junit.Assert.assertEquals; diff --git a/src/test/java/seng302/EventTest.java b/src/test/java/seng302/EventTest.java index 190140f2..00f5cc17 100644 --- a/src/test/java/seng302/EventTest.java +++ b/src/test/java/seng302/EventTest.java @@ -1,6 +1,9 @@ package seng302; import org.junit.Test; +import seng302.models.Boat; +import seng302.models.Event; +import seng302.models.Leg; import static org.junit.Assert.assertEquals; diff --git a/src/test/java/seng302/FileParserTest.java b/src/test/java/seng302/FileParserTest.java index 2df7ca10..d57046c9 100644 --- a/src/test/java/seng302/FileParserTest.java +++ b/src/test/java/seng302/FileParserTest.java @@ -1,6 +1,7 @@ package seng302; import org.junit.Test; +import seng302.models.FileParser; import java.io.FileNotFoundException; diff --git a/src/test/java/seng302/LegTest.java b/src/test/java/seng302/LegTest.java index cd692676..5af01db8 100644 --- a/src/test/java/seng302/LegTest.java +++ b/src/test/java/seng302/LegTest.java @@ -1,6 +1,8 @@ package seng302; import org.junit.Test; +import seng302.models.Leg; +import seng302.models.Marker; import static org.junit.Assert.assertEquals; diff --git a/src/test/java/seng302/RaceTest.java b/src/test/java/seng302/RaceTest.java index 08db8a12..ab318331 100644 --- a/src/test/java/seng302/RaceTest.java +++ b/src/test/java/seng302/RaceTest.java @@ -1,6 +1,8 @@ package seng302; import org.junit.Test; +import seng302.models.Boat; +import seng302.models.Race; import java.lang.reflect.Array;