Reformatted doctring and import statements

This commit is contained in:
Haoming Yin
2017-03-08 14:45:06 +13:00
parent 245fbc75c2
commit b0cd7c8c08
17 changed files with 773 additions and 722 deletions
+25 -7
View File
@@ -1,13 +1,31 @@
{
"race-name": "AC35",
"time-scale": 1.0,
"race-size": 4,
"race-size": 6,
"teams": [
{"team-name": "Oracle Team USA", "velocity": 20.9},
{"team-name": "Artemis Racing", "velocity": 18.3},
{"team-name": "Emirates Team New Zealand", "velocity": 21.5},
{"team-name": "Groupama Team France","velocity": 19.9},
{"team-name": "Land Rover BAR", "velocity": 17.6},
{"team-name": "SoftBank Team Japan", "velocity": 16.6}
{
"team-name": "Oracle Team USA",
"velocity": 20.9
},
{
"team-name": "Artemis Racing",
"velocity": 18.3
},
{
"team-name": "Emirates Team New Zealand",
"velocity": 21.5
},
{
"team-name": "Groupama Team France",
"velocity": 19.9
},
{
"team-name": "Land Rover BAR",
"velocity": 17.6
},
{
"team-name": "SoftBank Team Japan",
"velocity": 16.6
}
]
}
+3 -2
View File
@@ -1,4 +1,4 @@
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
<project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://maven.apache.org/POM/4.0.0"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>seng302</groupId>
@@ -40,7 +40,8 @@
<version>2.4.3</version>
<configuration>
<transformers>
<transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
<transformer
implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
<manifestEntries>
<Main-Class>seng302.App</Main-Class>
<X-Compile-Source-JDK>${maven.compiler.source}</X-Compile-Source-JDK>
+13 -14
View File
@@ -1,14 +1,16 @@
package seng302;
import java.util.*;
import java.lang.reflect.Array;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Map;
import java.util.Random;
public class App
{
public class App {
/**
* Builds a race object for the AC35 course
*/
public static Race createRace() throws Exception{
public static Race createRace() throws Exception {
Race race = new Race();
// Read team names from file
@@ -31,12 +33,12 @@ public class App
long seed = System.nanoTime();
Collections.shuffle(boatNames, new Random(seed));
if (numberOfBoats > Array.getLength(boatNames.toArray())){
if (numberOfBoats > Array.getLength(boatNames.toArray())) {
return null;
}
for (int i = 0; i < numberOfBoats; i++) {
race.addBoat(new Boat(boatNames.get(i), (Double)(teams.get(i).get("velocity"))));
race.addBoat(new Boat(boatNames.get(i), (Double) (teams.get(i).get("velocity"))));
}
race.addLeg(new Leg(35, 100, "Start"));
@@ -52,19 +54,17 @@ public class App
return race;
}
public static void main( String[] args )
{
public static void main(String[] args) {
Race race = null;
try{
try {
race = createRace();
}
catch (Exception e){
} catch (Exception e) {
System.out.println(e);
}
// If race was created
if (race != null){
if (race != null) {
race.displayStartingBoats();
System.out.println("\n\n");
@@ -79,8 +79,7 @@ public class App
System.out.println("######################");
race.showRaceMarkerResults();
race.displayFinishingOrder();
}
else{
} else {
System.out.println("There was an error creating the race.");
}
}
+22 -18
View File
@@ -1,13 +1,7 @@
package seng302;
/**
* Represents a boat in the race.
*
* @param teamName The name of the team sailing the boat
* @param boatVelocity The speed of the boat in meters/second
*/
public class Boat
{
public class Boat {
private String teamName; // The name of the team, this is also the name of the boat
private double velocity; // In meters/second
@@ -17,6 +11,12 @@ public class Boat
this.velocity = 10; // Default velocity
}
/**
* Represents a boat in the race.
*
* @param teamName The name of the team sailing the boat
* @param boatVelocity The speed of the boat in meters/second
*/
public Boat(String teamName, double boatVelocity) {
this.teamName = teamName;
this.velocity = boatVelocity;
@@ -24,33 +24,37 @@ public class Boat
/**
* Returns the name of the team sailing the boat
*
* @return The name of the team
*/
public String getTeamName(){
public String getTeamName() {
return this.teamName;
}
/**
* Sets the name of the team sailing the boat
*
* @param teamName The name of the team
*/
public void setTeamName(String teamName){
public void setTeamName(String teamName) {
this.teamName = teamName;
}
/**
* Sets velocity of the boat
* @param velocity The velocity of boat
*/
public void setVelocity(float velocity) {
this.velocity = velocity;
}
/**
* Gets velocity of the boat
*
* @return a float number of the boat velocity
*/
public double getVelocity() {
return this.velocity;
}
/**
* Sets velocity of the boat
*
* @param velocity The velocity of boat
*/
public void setVelocity(float velocity) {
this.velocity = velocity;
}
}
+41 -33
View File
@@ -3,14 +3,7 @@ package seng302;
import java.text.SimpleDateFormat;
import java.util.Date;
/**
* Event class containing the time of specific event, related team/boat, and
* event location such as leg.
*
* @param eventTime, what time the event happens
* @param eventBoat, the boat that the event belongs to
* @param eventLeg, the leg the event happens on
*/
public class Event {
private long time;
@@ -18,6 +11,14 @@ public class Event {
private Leg leg;
private boolean isFinishingEvent = false;
/**
* Event class containing the time of specific event, related team/boat, and
* event location such as leg.
*
* @param eventTime, what time the event happens
* @param eventBoat, the boat that the event belongs to
* @param eventLeg, the leg the event happens on
*/
public Event(long eventTime, Boat eventBoat, Leg eventLeg) {
this.time = eventTime;
this.boat = eventBoat;
@@ -31,40 +32,36 @@ public class Event {
this.isFinishingEvent = isFinishingEvent;
}
/**
* Sets the time for the event
* @param eventTime the time for event in millisecond
*/
public void setTime(long eventTime) {
this.time = eventTime;
}
/**
* Gets the time for the event
*
* @return the time for event in millisecond
*/
public long getTime() {
return this.time;
}
/**
* Sets the time for the event
*
* @param eventTime the time for event in millisecond
*/
public void setTime(long eventTime) {
this.time = eventTime;
}
/**
* Gets the time in a formatted string
*
* @return the string of time
*/
public String getTimeString() {
return (new SimpleDateFormat("mm:ss:SSS")).format(new Date(time));
}
/**
* Sets the involved boat
* @param eventBoat the involved boat
*/
public void setBoat(Boat eventBoat) {
this.boat = eventBoat;
}
/**
* Gets the involved boat
*
* @return the boat involved in the event
*/
public Boat getBoat() {
@@ -72,45 +69,56 @@ public class Event {
}
/**
* Sets the involved location/leg
* @param eventLeg the involved leg
* Sets the involved boat
*
* @param eventBoat the involved boat
*/
public void setLeg(Leg eventLeg) {
this.leg = eventLeg;
public void setBoat(Boat eventBoat) {
this.boat = eventBoat;
}
/**
* Gets the involved location/leg
*
* @return the leg involved in the event
*/
public Leg getLeg() {
return this.leg;
}
/**
* Sets the involved location/leg
*
* @param eventLeg the involved leg
*/
public void setLeg(Leg eventLeg) {
this.leg = eventLeg;
}
/**
* Call when the boat reaches the marker, this will tell the marker the order
* in which boats pass it
*/
public void addBoatToMarker(){
public void addBoatToMarker() {
this.leg.addBoatToMarker(boat);
}
/**
* Returns true if this event is the boat finishing the race
*
*/
public boolean getIsFinishingEvent(){
public boolean getIsFinishingEvent() {
return this.isFinishingEvent;
}
/**
* Get a string that contains the timestamp and course information for this event
*
* @return A string that contains the timestamp and course information for this event
*/
public String getEventString(){
public String getEventString() {
String currentHeading = Integer.toString(this.getLeg().getHeading());
if (this.isFinishingEvent){
if (this.isFinishingEvent) {
return (this.getTimeString() + ", " + this.getBoat().getTeamName() + " finished the race");
}
+11 -4
View File
@@ -4,9 +4,9 @@ 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.io.FileNotFoundException;
import java.util.ArrayList;
import java.util.Map;
@@ -20,7 +20,9 @@ public class FileParser {
private String filePath;
private JSONObject content;
/** used to construct an instance of file parser
/**
* used to construct an instance of file parser
*
* @param filePath a string like path to show location of desired file to
* be parsed
@@ -34,7 +36,7 @@ public class FileParser {
* 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{
private void readFile() throws FileNotFoundException {
JSONParser parser = new JSONParser();
try {
this.content = (JSONObject) parser.parse(new FileReader(filePath));
@@ -50,6 +52,7 @@ public class FileParser {
/**
* 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.
*/
@@ -66,6 +69,7 @@ public class FileParser {
/**
* Gets race name in the setting file.
*
* @return a string of race name. null if race name is invalid or cannot
* be found.
*/
@@ -80,6 +84,7 @@ public class FileParser {
/**
* 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.
*/
@@ -94,6 +99,7 @@ public class FileParser {
/**
* Gets the total number of teams.
*
* @return the number of teams. 0 if no teams or anything goes wrong.
*/
@SuppressWarnings("unchecked")
@@ -109,6 +115,7 @@ public class FileParser {
/**
* 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")
@@ -116,7 +123,7 @@ public class FileParser {
long totalTeams = this.getTotalNumberOfTeams();
try {
long raceSize = (long) this.content.get("race-size");
return raceSize >= 0 && raceSize <= totalTeams? raceSize : totalTeams;
return raceSize >= 0 && raceSize <= totalTeams ? raceSize : totalTeams;
} catch (Exception e) {
e.printStackTrace();
return totalTeams;
+52 -52
View File
@@ -6,103 +6,103 @@ public class Leg {
private boolean isFinishingLeg;
private Marker startingMarker;
/*
Create a new leg
@param heading, the magnetic heading of this leg
@param distance, the total distance of this leg in meters
@param marker, the marker this leg starts on
/**
* Create a new leg
*
* @param heading, the magnetic heading of this leg
* @param distance, the total distance of this leg in meters
* @param marker, the marker this leg starts on
*/
public Leg(int heading, int distance, Marker marker){
public Leg(int heading, int distance, Marker marker) {
this.heading = heading;
this.distance = distance;
this.startingMarker = marker;
this.isFinishingLeg = false;
}
/*
Create a new leg
@param heading, the magnetic heading of this leg
@param distance, the total distance of this leg in meters
@param markerName, the name of the marker this leg starts on
/**
* Create a new leg
*
* @param heading, the magnetic heading of this leg
* @param distance, the total distance of this leg in meters
* @param markerName, the name of the marker this leg starts on
*/
public Leg(int heading, int distance, String markerName){
public Leg(int heading, int distance, String markerName) {
this.heading = heading;
this.distance = distance;
this.startingMarker = new Marker(markerName);
this.isFinishingLeg = false;
}
/*
Set the heading for this leg
/**
* Get the heading of this leg
*/
public void setHeading(int heading){
this.heading = heading;
}
/*
Get the heading of this leg
*/
public int getHeading(){
public int getHeading() {
return this.heading;
}
/*
Set the distance of this leg in meters
/**
* Set the heading for this leg
*/
public void setDistance(int distance){
this.distance = distance;
public void setHeading(int heading) {
this.heading = heading;
}
/*
Get the total distance of this leg in meters
/**
* Get the total distance of this leg in meters
*/
public int getDistance(){
public int getDistance() {
return this.distance;
}
/*
Set the marker this leg starts on
/**
* Set the distance of this leg in meters
*/
public void setMarker(Marker marker){
this.startingMarker = marker;
public void setDistance(int distance) {
this.distance = distance;
}
/*
Returns the marker this leg started on
/**
* Returns the marker this leg started on
*/
public Marker getMarker(){
public Marker getMarker() {
return this.startingMarker;
}
/*
Returns the name of the marker this leg started on
/**
* Set the marker this leg starts on
*/
public String getMarkerLabel(){
public void setMarker(Marker marker) {
this.startingMarker = marker;
}
/**
* Returns the name of the marker this leg started on
*/
public String getMarkerLabel() {
return this.startingMarker.getName();
}
/*
Tell the marker that the boat has passed it
/**
* Tell the marker that the boat has passed it
*/
public void addBoatToMarker(Boat boat){
public void addBoatToMarker(Boat boat) {
this.startingMarker.addBoat(boat);
}
/*
Specify whether or not the race finishes on this leg
@param isFinishingLeg whether or not the race finishes on this leg
/**
* Specify whether or not the race finishes on this leg
*
* @param isFinishingLeg whether or not the race finishes on this leg
*/
public void setFinishingLeg(boolean isFinishingLeg){
public void setFinishingLeg(boolean isFinishingLeg) {
this.isFinishingLeg = isFinishingLeg;
}
/*
@returns true if this the race finishes after this leg
/**
* @returns true if this the race finishes after this leg
*/
public boolean getIsFinishingLeg(){
public boolean getIsFinishingLeg() {
return this.isFinishingLeg;
}
}
+9 -9
View File
@@ -2,28 +2,28 @@ package seng302;
import java.util.ArrayList;
class Marker{
class Marker {
private String name;
private ArrayList<Boat> boatOrder;
public Marker(String name){
public Marker(String name) {
this.name = name;
this.boatOrder = new ArrayList<Boat>();
}
public void setName(String name){
this.name = name;
}
public String getName(){
public String getName() {
return this.name;
}
public void addBoat(Boat boat){
public void setName(String name) {
this.name = name;
}
public void addBoat(Boat boat) {
this.boatOrder.add(boat);
}
public Boat[] getBoats(){
public Boat[] getBoats() {
return this.boatOrder.toArray(new Boat[this.boatOrder.size()]);
}
}
+41 -41
View File
@@ -1,8 +1,7 @@
package seng302;
import java.util.*;
import java.lang.reflect.Array;
import java.util.concurrent.TimeUnit;
import java.util.*;
public class Race {
private ArrayList<Boat> boats; // The boats in the race
@@ -36,19 +35,20 @@ public class Race {
});
}
/*
Add a boat to the race
@param boat, the boat to add
/**
* Add a boat to the race
*
* @param boat, the boat to add
*/
public void addBoat(Boat boat) {
boats.add(boat);
numberOfBoats += 1;
}
/*
Returns a list of boats in a random order
@returns a list of boats
/**
* Returns a list of boats in a random order
*
* @returns a list of boats
*/
public Boat[] getShuffledBoats() {
// Shuffle the list of boats
@@ -58,36 +58,36 @@ public class Race {
return boats.toArray(new Boat[boats.size()]);
}
/*
Returns a list of boats in the order that they
finished the race (position 0 is first place)
@returns a list of boats
/**
* Returns a list of boats in the order that they
* finished the race (position 0 is first place)
*
* @returns a list of boats
*/
public Boat[] getFinishedBoats() {
return this.finishingOrder.toArray(new Boat[this.finishingOrder.size()]);
}
/*
Returns the number of boats in the race
@returns the number of boats in the race
/**
* Returns the number of boats in the race
*
* @returns the number of boats in the race
*/
public int getNumberOfBoats() {
return numberOfBoats;
}
/*
Returns a list of boats in the race
@returns a list of the boats competing in the race
/**
* Returns a list of boats in the race
*
* @returns a list of the boats competing in the race
*/
public Boat[] getBoats() {
return boats.toArray(new Boat[boats.size()]);
}
/*
Prints the order in which the boats finished
/**
* Prints the order in which the boats finished
*/
public void displayFinishingOrder() {
int numberOfBoats = this.getNumberOfBoats();
@@ -101,8 +101,8 @@ public class Race {
}
}
/*
Prints the list of boats competing in the race
/**
* Prints the list of boats competing in the race
*/
public void displayStartingBoats() {
int numberOfBoats = this.getNumberOfBoats();
@@ -119,10 +119,10 @@ public class Race {
}
}
/*
Adds a leg to the race
@param leg, the leg to add to the race
/**
* Adds a leg to the race
*
* @param leg, the leg to add to the race
*/
public void addLeg(Leg leg) {
this.legs.add(leg);
@@ -139,6 +139,7 @@ public class Race {
/**
* Sets time scale
*
* @param timeScale
*/
public void setTimeScale(double timeScale) {
@@ -160,7 +161,7 @@ public class Race {
totalDistance += leg.getDistance();
// If finishing leg, add another event for when the boat finishes the race
if (leg.getIsFinishingLeg()){
if (leg.getIsFinishingLeg()) {
time = (long) (1000 * totalDistance / boat.getVelocity());
event = new Event(time, boat, leg, true);
events.add(event);
@@ -200,24 +201,23 @@ public class Race {
System.out.println(nextEvent.getEventString());
nextEvent.addBoatToMarker();
if (nextEvent.getIsFinishingEvent()){
if (nextEvent.getIsFinishingEvent()) {
this.finishingOrder.add(nextEvent.getBoat());
}
}
// Wait for 100ms to slow down the while loop
try{
try {
Thread.sleep(100);
}
catch(java.lang.InterruptedException e){
} catch (java.lang.InterruptedException e) {
continue;
}
}
}
/*
Start the race and print each marker with the order
in which the boats passed that marker
/**
* Start the race and print each marker with the order
* in which the boats passed that marker
*/
public void startRace() {
// record start time.
@@ -226,10 +226,10 @@ public class Race {
iterateEvents();
}
/*
Print the order in which the boats passed each marker
/**
* Print the order in which the boats passed each marker
*/
public void showRaceMarkerResults(){
public void showRaceMarkerResults() {
for (Leg leg : this.legs) {
Boat[] boats = leg.getMarker().getBoats();
+4 -5
View File
@@ -1,16 +1,15 @@
package seng302;
import org.junit.Test;
import static org.junit.Assert.assertTrue;
/**
* Unit test for simple App.
*/
public class AppTest
{
public class AppTest {
@Test
public void testApp()
{
assertTrue( true );
public void testApp() {
assertTrue(true);
}
}
+4 -7
View File
@@ -1,25 +1,22 @@
package seng302;
import org.junit.Test;
import static org.junit.Assert.assertTrue;
import static org.junit.Assert.assertEquals;
/**
* Unit test for the Team class.
*/
public class BoatTest
{
public class BoatTest {
@Test
public void testBoatCreation()
{
public void testBoatCreation() {
Boat boat1 = new Boat("Team 1");
assertEquals(boat1.getTeamName(), "Team 1");
}
@Test
public void testChangeTeamName()
{
public void testChangeTeamName() {
Boat boat1 = new Boat("Team 1");
boat1.setTeamName("Team 2");
assertEquals(boat1.getTeamName(), "Team 2");
+1 -2
View File
@@ -1,9 +1,8 @@
package seng302;
import org.junit.Before;
import org.junit.Test;
import static org.junit.Assert.*;
import static org.junit.Assert.assertEquals;
/**
* Test for Event class
+6 -6
View File
@@ -3,11 +3,11 @@ package seng302;
import org.junit.Test;
import java.io.FileNotFoundException;
import java.util.ArrayList;
import static org.junit.Assert.*;
import static org.junit.Assert.assertEquals;
/** Unit test for FileParser class
/**
* Unit test for FileParser class
* Created by Haoming on 5/03/17.
*/
public class FileParserTest {
@@ -15,7 +15,7 @@ public class FileParserTest {
/*
test if it fails from reading non existed file
*/
@Test (expected = FileNotFoundException.class)
@Test(expected = FileNotFoundException.class)
public void readNonExistedFile() throws Exception {
FileParser fileParser = new FileParser("test/java/seng302/non-existed.json");
}
@@ -24,7 +24,7 @@ public class FileParserTest {
test a valid json file with valid content.
*/
@Test
public void readValidFile() throws Exception{
public void readValidFile() throws Exception {
FileParser fileParser = new FileParser("src/test/java/seng302/valid.json");
assertEquals("AC35", fileParser.getRaceName());
@@ -46,7 +46,7 @@ public class FileParserTest {
assertEquals(null, fileParser.getRaceName());
assertEquals(null, fileParser.getTeams());
//assertEquals(-1, fileParser.getTimeScale());
assertEquals(null,fileParser.getTeams());
assertEquals(null, fileParser.getTeams());
}
}
+5 -8
View File
@@ -1,21 +1,20 @@
package seng302;
import org.junit.Test;
import static org.junit.Assert.assertTrue;
import static org.junit.Assert.assertEquals;
/**
* Unit test for the Leg class.
*/
public class LegTest{
public class LegTest {
/*
Test creation of the leg by specifying a string
for the marker label
*/
@Test
public void testLegCreationUsingMarkerLabel()
{
public void testLegCreationUsingMarkerLabel() {
Leg leg = new Leg(010, 100, "Marker");
assertEquals(leg.getHeading(), 010);
@@ -29,8 +28,7 @@ public class LegTest{
Marker object
*/
@Test
public void testLegCreation()
{
public void testLegCreation() {
Leg leg = new Leg(010, 100, new Marker("Marker"));
assertEquals(leg.getHeading(), 010);
@@ -44,8 +42,7 @@ public class LegTest{
leg is the finishing leg
*/
@Test
public void testSetFinishLeg()
{
public void testSetFinishLeg() {
Leg leg = new Leg(010, 100, "Marker");
leg.setFinishingLeg(true);
+7 -7
View File
@@ -1,20 +1,20 @@
package seng302;
import org.junit.Test;
import static org.junit.Assert.assertTrue;
import static org.junit.Assert.assertEquals;
import java.lang.reflect.Array;
import static org.junit.Assert.assertEquals;
/**
* Unit test for the Race class.
*/
public class RaceTest
{
/*
Test that all boats were added to the race
public class RaceTest {
/**
* Test that all boats were added to the race
*/
@Test
public void testAddingBoatsToRace(){
public void testAddingBoatsToRace() {
Boat boat1 = new Boat("Team 1");
Boat boat2 = new Boat("Team 2");
+5 -1
View File
@@ -1,5 +1,9 @@
{
"time-scale": "abc",
"race-name": 123,
"teams-with-wrong-name":["team1","team2","team3"]
"teams-with-wrong-name": [
"team1",
"team2",
"team3"
]
}
+24 -6
View File
@@ -3,11 +3,29 @@
"time-scale": 1,
"race-size": 2,
"teams": [
{"team-name": "Oracle Team USA", "velocity": 20.9},
{"team-name": "Artemis Racing", "velocity": 18.3},
{"team-name": "Emirates Team New Zealand", "velocity": 21.5},
{"team-name": "Groupama Team France","velocity": 19.9},
{"team-name": "Land Rover BAR", "velocity": 17.6},
{"team-name": "SoftBank Team Japan", "velocity": 16.6}
{
"team-name": "Oracle Team USA",
"velocity": 20.9
},
{
"team-name": "Artemis Racing",
"velocity": 18.3
},
{
"team-name": "Emirates Team New Zealand",
"velocity": 21.5
},
{
"team-name": "Groupama Team France",
"velocity": 19.9
},
{
"team-name": "Land Rover BAR",
"velocity": 17.6
},
{
"team-name": "SoftBank Team Japan",
"velocity": 16.6
}
]
}