Filled in missing documentation.

- Added Documentation for all Classes.
#documentation
main
Fan-Wu Yang 9 years ago
parent 91861eb5cb
commit dffd77f7a7

@ -3,6 +3,7 @@ package seng302;
import seng302.Model.Leg; import seng302.Model.Leg;
/** /**
* Constants that are used throughout the program
* Created by Erika on 19-Mar-17. * Created by Erika on 19-Mar-17.
*/ */
public class Constants { public class Constants {

@ -7,19 +7,34 @@ import java.net.URL;
import java.util.ResourceBundle; import java.util.ResourceBundle;
/** /**
* Created by Gondr on 15/03/2017. * Controller parent for app controllers.
* Created by fwy13 on 15/03/2017.
*/ */
public abstract class Controller implements Initializable{ public abstract class Controller implements Initializable{
protected App parent; protected App parent;
/**
* Sets the parent of the application
* @param parent
*/
public void setParent(App parent){ public void setParent(App parent){
this.parent = parent; this.parent = parent;
} }
/**
* Sets the loads a pane into the parent.
* @param fxmlName
* @throws Exception
*/
public void loadPane(String fxmlName) throws Exception { public void loadPane(String fxmlName) throws Exception {
this.parent.loadPane(fxmlName); this.parent.loadPane(fxmlName);
} }
/**
* Initialisation class that is run on start up.
* @param location
* @param resources
*/
@Override @Override
public abstract void initialize(URL location, ResourceBundle resources); public abstract void initialize(URL location, ResourceBundle resources);
} }

@ -6,10 +6,15 @@ import java.net.URL;
import java.util.ResourceBundle; import java.util.ResourceBundle;
/** /**
* Created by Gondr on 15/03/2017. * Created by fwy13 on 15/03/2017.
*/ */
public class MainController extends Controller { public class MainController extends Controller {
/**
* Main Controller for the applications will house the menu and the displayed pane.
* @param location
* @param resources
*/
@Override @Override
public void initialize(URL location, ResourceBundle resources) { public void initialize(URL location, ResourceBundle resources) {

@ -26,14 +26,13 @@ import java.util.ArrayList;
import java.util.ResourceBundle; import java.util.ResourceBundle;
/** /**
* Created by Gondr on 15/03/2017. * Created by fwy13 on 15/03/2017.
*/ */
public class RaceController extends Controller{ public class RaceController extends Controller{
@FXML @FXML
AnchorPane canvasBase; AnchorPane canvasBase;
@FXML
ResizableRaceCanvas raceMap;
ResizableRaceCanvas raceMap;
@FXML @FXML
TableView boatInfoTable; TableView boatInfoTable;
@ -44,10 +43,11 @@ public class RaceController extends Controller{
@FXML @FXML
TableColumn<BoatInRace, String> boatMarkColumn; TableColumn<BoatInRace, String> boatMarkColumn;
private GraphicsContext gc; /**
private RaceMap map; * updates the ResizableRaceCanvas (raceMap) with most recent data
* @param boats boats that are to be displayed in the race
* @see ResizableRaceCanvas
*/
public void updateMap(ObservableList<BoatInRace> boats) { public void updateMap(ObservableList<BoatInRace> boats) {
BoatInRace[] boatInRaces = new BoatInRace[boats.size()]; BoatInRace[] boatInRaces = new BoatInRace[boats.size()];
raceMap.setBoats(boats.toArray(boatInRaces)); raceMap.setBoats(boats.toArray(boatInRaces));
@ -55,6 +55,10 @@ public class RaceController extends Controller{
} }
/**
* Updates the array listened by the TableView (boatInfoTable) that displays the boat information.
* @param race Race to listen to.
*/
public void updateInfoTable(Race race) { public void updateInfoTable(Race race) {
boatInfoTable.getItems().clear(); boatInfoTable.getItems().clear();
boatInfoTable.setItems(race.getStartingBoats()); boatInfoTable.setItems(race.getStartingBoats());
@ -91,6 +95,10 @@ public class RaceController extends Controller{
(new Thread(race)).start(); (new Thread(race)).start();
} }
/**
* Function for the Bermuda Race.
* @return legs in the Bermuda Race.
*/
private ArrayList<Leg> bermudaCourseLegs() { private ArrayList<Leg> bermudaCourseLegs() {
ArrayList<Leg> legs = new ArrayList<>(); ArrayList<Leg> legs = new ArrayList<>();

@ -1,6 +1,7 @@
package seng302; package seng302;
/** /**
* GPS Coordinate for the world map.
* Created by esa46 on 15/03/17. * Created by esa46 on 15/03/17.
*/ */
public class GPSCoordinate { public class GPSCoordinate {
@ -8,18 +9,35 @@ public class GPSCoordinate {
private double latitude; private double latitude;
private double longitude; private double longitude;
/**
* Constructor Method
* @param latitude latitude the coordinate is located at.
* @param longitude Longitude that the coordinate is located at.
*/
public GPSCoordinate(double latitude, double longitude) { this.latitude = latitude; this.longitude = longitude; } public GPSCoordinate(double latitude, double longitude) { this.latitude = latitude; this.longitude = longitude; }
/**
* Gets the Latitude that the Coordinate is at.
* @return Returns the latitude of the Coordinate.
*/
public double getLatitude() { public double getLatitude() {
return latitude; return latitude;
} }
/**
* Gets the Longitude that the Coordinate is at.
* @return Returns the longitude of the Coordinate.
*/
public double getLongitude() { public double getLongitude() {
return longitude; return longitude;
} }
/**
* To String method of the Coordinate in the form Latitude: $f, Longitude: $f.
* @return A String representation of the GPSCoordinate Class.
*/
public String toString() { public String toString() {
return String.format("Latitude: %f Longitude: %f", latitude, longitude); return String.format("Latitude: %f, Longitude: %f", latitude, longitude);
} }
} }

@ -1,18 +1,32 @@
package seng302; package seng302;
/** /**
* Graph Coordinate that is to be displayed on the Canvas
* Created by cbt24 on 15/03/17. * Created by cbt24 on 15/03/17.
*/ */
public class GraphCoordinate { public class GraphCoordinate {
private int x; private int x;
private int y; private int y;
/**
* Constructor method.
* @param x X coordinate.
* @param y Y coordinate.
*/
public GraphCoordinate(int x, int y) { this.x = x; this.y = y; } public GraphCoordinate(int x, int y) { this.x = x; this.y = y; }
/**
* Returns the X coordinate.
* @return x axis Coordinate.
*/
public int getX() { public int getX() {
return x; return x;
} }
/**
* Returns the Y coordinate.
* @return y axis Coordinate.
*/
public int getY() { public int getY() {
return y; return y;
} }

@ -7,6 +7,7 @@ import seng302.GPSCoordinate;
/** /**
* Boat in the Race extends Boat.
* Created by esa46 on 15/03/17. * Created by esa46 on 15/03/17.
*/ */
public class BoatInRace extends Boat { public class BoatInRace extends Boat {
@ -17,47 +18,96 @@ public class BoatInRace extends Boat {
private long timeFinished; private long timeFinished;
private Color colour; private Color colour;
/**
*
* @return Returns the current position of the boat in a GPSCoordinate Class.
* @see GPSCoordinate
*/
public GPSCoordinate getCurrentPosition() { public GPSCoordinate getCurrentPosition() {
return currentPosition; return currentPosition;
} }
/**
*
* @return Returns the time that the boat finished the race.
*/
public long getTimeFinished() { public long getTimeFinished() {
return timeFinished; return timeFinished;
} }
/**
*
* @return Returns the colour of the boat.
*/
public Color getColour() { public Color getColour() {
return colour; return colour;
} }
/**
* Sets the colour that boat will be shown as when drawn on the ResizableRaceCanvas.
* @param colour Colour that the boat is to be set to.
* @see ResizableRaceCanvas
*/
public void setColour(Color colour) { public void setColour(Color colour) {
this.colour = colour; this.colour = colour;
} }
/**
* Sets the time that the boat finished the race.
* @param timeFinished Time the boat finished the race.
*/
public void setTimeFinished(long timeFinished) { public void setTimeFinished(long timeFinished) {
this.timeFinished = timeFinished; this.timeFinished = timeFinished;
} }
/**
* Constructor method.
* @param name Name of the boat.
* @param velocity Speed that the boat travels.
*/
public BoatInRace(String name, double velocity) { public BoatInRace(String name, double velocity) {
super(name, velocity); super(name, velocity);
} }
/**
* Gets the current leg that the boat is on.
* @return returns the leg the boat is on in a Leg class
* @see Leg
*/
public Leg getCurrentLeg() { public Leg getCurrentLeg() {
return currentLeg; return currentLeg;
} }
/**
* Sets the current Leg of that the boat is on.
* @param currentLeg Leg class that the boat is currently on.
* @see Leg
*/
public void setCurrentLeg(Leg currentLeg) { public void setCurrentLeg(Leg currentLeg) {
this.currentLeg = currentLeg; this.currentLeg = currentLeg;
} }
/**
* Gets the distance travelled by the boat in the leg.
* @return Returns the value in nautical miles (1.852km) that the boat has traversed.
*/
public double getDistanceTravelledInLeg() { public double getDistanceTravelledInLeg() {
return distanceTravelledInLeg; return distanceTravelledInLeg;
} }
/**
* Sets the current position on the GPS that the boat.
* @param position GPSCoordinate of the position that the boat is currently on.
* @see GPSCoordinate
*/
public void setCurrentPosition(GPSCoordinate position) { public void setCurrentPosition(GPSCoordinate position) {
this.currentPosition = position; this.currentPosition = position;
} }
/**
* Sets the distance travelled by the boat in the leg in nautical miles (1.852km)
* @param distanceTravelledInLeg Distance travelled by the boat in nautical miles.
*/
public void setDistanceTravelledInLeg(double distanceTravelledInLeg) { public void setDistanceTravelledInLeg(double distanceTravelledInLeg) {
this.distanceTravelledInLeg = distanceTravelledInLeg; this.distanceTravelledInLeg = distanceTravelledInLeg;
} }
@ -65,7 +115,7 @@ public class BoatInRace extends Boat {
/** /**
* Calculates the bearing of the travel via map coordinates of the raceMarkers * Calculates the bearing of the travel via map coordinates of the raceMarkers
* @return * @return the heading that the boat is heading towards in degrees.
*/ */
public double calculateHeading(){ public double calculateHeading(){
//to be changed to coordinates when used to match reality. //to be changed to coordinates when used to match reality.

@ -30,21 +30,25 @@ public class Leg {
this.distance = calculateDistance(); this.distance = calculateDistance();
} }
/**
* Construction Method
* @param name Name of the Leg
*/
public Leg(String name) { public Leg(String name) {
this.name = name; this.name = name;
} }
/** /**
* * Returns the name of the Leg
* @return the name of the Leg * @return Returns the name of the Leg
*/ */
public String getName() { public String getName() {
return name; return name;
} }
/** /**
* * Get the distance in nautical miles
* @return the total distance of the leg. * @return Returns the total distance of the leg.
*/ */
public double getDistance() { public double getDistance() {
return distance; return distance;
@ -53,32 +57,43 @@ public class Leg {
/** /**
* *
* @return the name of the Leg * @return Returns the name of the Leg
*/ */
public String toString() { public String toString() {
return name; return name;
} }
/** /**
* * Returns the coordinates in GPSCoordinate class of the boats starting coordinate.
* @return the coordinate of the start of the leg ) * @return Returns the coordinate of the start of the leg.
* @see GPSCoordinate
*/ */
public GPSCoordinate getStartGraphCoordinate() { public GPSCoordinate getStartGraphCoordinate() {
return startGPSCoordinate; return startGPSCoordinate;
} }
/** /**
* * Returns the coordinates in a GPSCoordinate class that the boat ends on.
* @return the coordinate of the end of the leg * @return Returns the coordinate of the end of the leg.
* @see GPSCoordinate
*/ */
public GPSCoordinate getEndGraphCoordinate() { public GPSCoordinate getEndGraphCoordinate() {
return endGPSCoordinate; return endGPSCoordinate;
} }
/**
* Returns the leg number that the leg exists in the Race
* @return Returns the Leg
* @see Race
*/
public int getLegNumber() { public int getLegNumber() {
return legNumber; return legNumber;
} }
/**
* Calculates the distance that the legs are in nautical miles (1.852 km).
* @return Returns the leg distance.
*/
private double calculateDistance() { private double calculateDistance() {
GeodeticCalculator calc = new GeodeticCalculator(); GeodeticCalculator calc = new GeodeticCalculator();

@ -35,16 +35,27 @@ public abstract class Race implements Runnable {
this.controller = controller; this.controller = controller;
} }
/**
* Constructor for Race class
* @param boats boats participating in the race.
* @param marks legs that there are in the race.
*/
public Race(BoatInRace[] boats, ArrayList<Leg> marks) { public Race(BoatInRace[] boats, ArrayList<Leg> marks) {
this(boats, marks, null); this(boats, marks, null);
} }
/**
* Runnable for the thread.
*/
public void run() { public void run() {
updateController(); updateController();
preRace(); preRace();
simulateRace(); simulateRace();
} }
/**
* Set up the state in waiting for the race starts.
*/
private void preRace() { private void preRace() {
//show the boats participating. //show the boats participating.
System.out.println("Boats Participating:"); System.out.println("Boats Participating:");
@ -96,10 +107,15 @@ public abstract class Race implements Runnable {
} }
} }
/**
* Checks the position of the boat, this updates the boats current position.
* @param boat Boat that the postion is to be updated for.
* @param timeElapsed Time that has elapse since the start of the the race.
* @see BoatInRace
*/
protected void checkPosition(BoatInRace boat, long timeElapsed) { protected void checkPosition(BoatInRace boat, long timeElapsed) {
if (boat.getDistanceTravelledInLeg() > boat.getCurrentLeg().getDistance()){ if (boat.getDistanceTravelledInLeg() > boat.getCurrentLeg().getDistance()){
//updateController(); //updateController(); removed as we do not update the table every time anymore.
//boat has passed onto new leg //boat has passed onto new leg
if (boat.getCurrentLeg().getName().equals("Finish")) { if (boat.getCurrentLeg().getName().equals("Finish")) {
//boat has finished //boat has finished
@ -114,11 +130,19 @@ public abstract class Race implements Runnable {
} }
} }
/**
* Update call for the controller.
*/
protected void updateController() { protected void updateController() {
if(controller != null) controller.updateInfoTable(this); if(controller != null) controller.updateInfoTable(this);
} }
/**
* Returns the boats that have started the race.
* @return ObservableList of BoatInRace class that participated in the race.
* @see ObservableList
* @see BoatInRace
*/
public ObservableList<BoatInRace> getStartingBoats() { public ObservableList<BoatInRace> getStartingBoats() {
return startingBoats; return startingBoats;
} }

@ -14,13 +14,19 @@ import seng302.RaceMap;
import java.util.Random; import java.util.Random;
/** /**
* This creates a JavaFX Canvas that is fills it's parent.
* Cannot be downsized.
* Created by fwy13 on 17/03/17. * Created by fwy13 on 17/03/17.
*/ */
public class ResizableRaceCanvas extends Canvas { public class ResizableRaceCanvas extends Canvas {
GraphicsContext gc; private GraphicsContext gc;
RaceMap map; private RaceMap map;
private BoatInRace[] boats; private BoatInRace[] boats;
/**
* Sets the boats that are to be displayed in this race.
* @param boats
*/
public void setBoats(BoatInRace[] boats) { public void setBoats(BoatInRace[] boats) {
this.boats = boats; this.boats = boats;
} }
@ -33,19 +39,43 @@ public class ResizableRaceCanvas extends Canvas {
heightProperty().addListener(evt -> drawRaceMap()); heightProperty().addListener(evt -> drawRaceMap());
} }
/**
* Constructor
*/
public ResizableRaceCanvas(){ public ResizableRaceCanvas(){
this(null); this(null);
} }
/**
* Sets the RaceMap that the RaceCanvas is to be displaying for.
* @param map
*/
public void setMap (RaceMap map) { public void setMap (RaceMap map) {
this.map = map; this.map = map;
} }
/**
* Displays the mark of a race as a circle.
* @param graphCoordinate Latitude and Logintude in GraphCoordinate that it is to be displayed as.
* @param paint Colour the mark is to be coloured.
* @see GraphCoordinate
* @see Color
* @see Paint
*/
public void displayMark(GraphCoordinate graphCoordinate, Paint paint){ public void displayMark(GraphCoordinate graphCoordinate, Paint paint){
gc.setFill(paint); gc.setFill(paint);
gc.fillOval(graphCoordinate.getX(), graphCoordinate.getY(), 15, 15); gc.fillOval(graphCoordinate.getX(), graphCoordinate.getY(), 15, 15);
} }
/**
* Displays a line on the map with rectangles on the starting and ending point of the line.
* @param graphCoordinateA Starting Point of the line in GraphCoordinate.
* @param graphCoordinateB End Point of the line in GraphCoordinate.
* @param paint Colour the line is to coloured.
* @see GraphCoordinate
* @see Color
* @see Paint
*/
public void displayLine(GraphCoordinate graphCoordinateA, GraphCoordinate graphCoordinateB, Paint paint){ public void displayLine(GraphCoordinate graphCoordinateA, GraphCoordinate graphCoordinateB, Paint paint){
gc.setStroke(paint); gc.setStroke(paint);
gc.setFill(paint); gc.setFill(paint);
@ -54,11 +84,25 @@ public class ResizableRaceCanvas extends Canvas {
gc.strokeLine(graphCoordinateA.getX(), graphCoordinateA.getY(), graphCoordinateB.getX(), graphCoordinateB.getY()); gc.strokeLine(graphCoordinateA.getX(), graphCoordinateA.getY(), graphCoordinateB.getX(), graphCoordinateB.getY());
} }
/**
* Display a point on the Canvas
* @param graphCoordinate Coordinate that the point is to be displayed at.
* @param paint Colour that the boat is to be coloured.
* @see GraphCoordinate
* @see Paint
* @see Color
*/
public void displayPoint(GraphCoordinate graphCoordinate, Paint paint){ public void displayPoint(GraphCoordinate graphCoordinate, Paint paint){
gc.setFill(paint); gc.setFill(paint);
gc.fillOval(graphCoordinate.getX(), graphCoordinate.getY(), 10, 10); gc.fillOval(graphCoordinate.getX(), graphCoordinate.getY(), 10, 10);
} }
/**
* Displays an arrow on the Canvas
* @param coordinate Coordinate that the arrow is to be displayed at.
* @param angle Angle that the arrow is to be facing in degrees 0 degrees = North (Up).
* @see GraphCoordinate
*/
public void displayArrow(GraphCoordinate coordinate, int angle){ public void displayArrow(GraphCoordinate coordinate, int angle){
gc.save(); gc.save();
rotate(angle, coordinate.getX(),coordinate.getY()); rotate(angle, coordinate.getX(),coordinate.getY());
@ -68,13 +112,20 @@ public class ResizableRaceCanvas extends Canvas {
gc.restore(); gc.restore();
} }
/**
* Rotates things on the canvas Note: this must be called in between gc.save() and gc.restore() else they will rotate everything
* @param angle Bearing angle to rotate at in degrees
* @param px Pivot point x of rotation.
* @param py Pivot point y of rotation.
*/
private void rotate(double angle, double px, double py) { private void rotate(double angle, double px, double py) {
Rotate r = new Rotate(angle, px, py); Rotate r = new Rotate(angle, px, py);
gc.setTransform(r.getMxx(), r.getMyx(), r.getMxy(), r.getMyy(), r.getTx(), r.getTy()); gc.setTransform(r.getMxx(), r.getMyx(), r.getMxy(), r.getMyy(), r.getTx(), r.getTy());
} }
/**
* Draws the Race Map
*/
public void drawRaceMap() { public void drawRaceMap() {
double width = getWidth(); double width = getWidth();
@ -120,24 +171,45 @@ public class ResizableRaceCanvas extends Canvas {
displayArrow(new GraphCoordinate(500, 20), 100); displayArrow(new GraphCoordinate(500, 20), 100);
} }
/**
* Draws a boat at a certain GPSCoordinate
* @param colour Colour to colour boat.
* @param gpsCoordinates GPScoordinate that the boat is to be drawn at.
* @see GPSCoordinate
* @see Color
*/
public void drawBoat(Color colour, GPSCoordinate gpsCoordinates) { public void drawBoat(Color colour, GPSCoordinate gpsCoordinates) {
GraphCoordinate graphCoordinate = this.map.convertGPS(gpsCoordinates); GraphCoordinate graphCoordinate = this.map.convertGPS(gpsCoordinates);
System.out.println("DrawingBoat" + gpsCoordinates.getLongitude()); System.out.println("DrawingBoat" + gpsCoordinates.getLongitude());
displayPoint(graphCoordinate, colour); displayPoint(graphCoordinate, colour);
} }
/**
* Set the Canvas to resizable.
* @return That the Canvas is resizable.
*/
@Override @Override
public boolean isResizable() { public boolean isResizable() {
return true; return true;
} }
/**
* Returns the preferred width of the Canvas
* @param width
* @return Returns the width of the Canvas
*/
@Override @Override
public double prefWidth(double height) { public double prefWidth(double width) {
return getWidth(); return getWidth();
} }
/**
* Returns the preferred height of the Canvas
* @param height
* @return Returns the height of the Canvas
*/
@Override @Override
public double prefHeight(double width) { public double prefHeight(double height) {
return getHeight(); return getHeight();
} }
} }

@ -22,6 +22,13 @@ public class RaceMap {
return new GraphCoordinate((int) ((height * (lon - y1) / (y2 - y1))),(int) (width * (lat - x1) / (x2 - x1))); return new GraphCoordinate((int) ((height * (lon - y1) / (y2 - y1))),(int) (width * (lat - x1) / (x2 - x1)));
} }
/**
* Converts the GPS Coordinate to GraphCoordinates
* @param coordinate GPSCoordinate representation of Latitude and Longitude.
* @return GraphCoordinate that the GPS is coordinates are to be displayed on the map.
* @see GraphCoordinate
* @see GPSCoordinate
*/
public GraphCoordinate convertGPS(GPSCoordinate coordinate) { public GraphCoordinate convertGPS(GPSCoordinate coordinate) {
return convertGPS(coordinate.getLatitude(), coordinate.getLongitude()); return convertGPS(coordinate.getLatitude(), coordinate.getLongitude());
} }

Loading…
Cancel
Save