diff --git a/mock/src/main/java/seng302/App.java b/mock/src/main/java/seng302/App.java index 8ac58c64..de74be36 100644 --- a/mock/src/main/java/seng302/App.java +++ b/mock/src/main/java/seng302/App.java @@ -4,17 +4,13 @@ package seng302; import javafx.application.Application; import javafx.stage.Stage; import org.xml.sax.SAXException; -import seng302.DataInput.RaceDataSource; -import seng302.DataInput.RaceXMLReader; -import seng302.DataInput.RegattaDataSource; -import seng302.DataInput.RegattaXMLReader; +import seng302.DataInput.*; import seng302.Model.Event; import javax.xml.parsers.ParserConfigurationException; import java.io.IOException; import java.nio.charset.Charset; -import java.nio.charset.StandardCharsets; import java.nio.file.Files; import java.nio.file.Paths; @@ -39,9 +35,10 @@ public class App extends Application { @Override public void start(Stage primaryStage) { try { - RaceDataSource raceData = new RaceXMLReader("raceXML/bermuda_AC35.xml"); + RaceDataSource raceData = new RaceXMLReader("mockXML/raceTest.xml"); RegattaDataSource regattaData = new RegattaXMLReader("mockXML/regattaTest.xml"); - Event raceEvent = new Event(raceData, regattaData); + BoatDataSource boatData = new BoatXMLReader("mockXML/boatTest.xml"); + Event raceEvent = new Event(raceData, regattaData, boatData); raceEvent.start(); } catch (IOException e) { e.printStackTrace(); diff --git a/mock/src/main/java/seng302/Data/BoatData.java b/mock/src/main/java/seng302/Data/BoatData.java index e06a0663..c34dc614 100644 --- a/mock/src/main/java/seng302/Data/BoatData.java +++ b/mock/src/main/java/seng302/Data/BoatData.java @@ -159,7 +159,7 @@ public class BoatData { private void appendStoweName(Element boat, int i) { //StoweName attribute Attr attrStoweName = doc.createAttribute("StoweName"); - attrStoweName.setValue(boatData.get(i).getAbbrev()); + attrStoweName.setValue(boatData.get(i).getCountry()); boat.setAttributeNode(attrStoweName); } @@ -172,7 +172,7 @@ public class BoatData { private void appendShortName(Element boat, int i) { //ShortName attribute Attr attrShortName = doc.createAttribute("ShortName"); - attrShortName.setValue(boatData.get(i).getAbbrev()); + attrShortName.setValue(boatData.get(i).getCountry()); boat.setAttributeNode(attrShortName); } diff --git a/mock/src/main/java/seng302/Data/RaceData.java b/mock/src/main/java/seng302/Data/RaceData.java index c6d89898..bc502d44 100644 --- a/mock/src/main/java/seng302/Data/RaceData.java +++ b/mock/src/main/java/seng302/Data/RaceData.java @@ -5,8 +5,8 @@ import org.w3c.dom.Element; import seng302.DataInput.RaceDataSource; import seng302.Exceptions.InvalidRaceDataException; import seng302.Model.Boat; +import seng302.Model.CompoundMarker; import seng302.Model.GPSCoordinate; -import seng302.Model.Marker; import javax.xml.parsers.DocumentBuilder; import javax.xml.parsers.DocumentBuilderFactory; @@ -151,9 +151,9 @@ public class RaceData { Element compoundMarkSeqElement = doc.createElement("CompoundMarkSequence"); int i = 1; - for (Marker marker : dataSource.getMarkers()) { + for (CompoundMarker compoundMarker : dataSource.getCompoundMarkers()) { - courseElement.appendChild(createCompoundMarker(marker, i)); + courseElement.appendChild(createCompoundMarker(compoundMarker, i)); compoundMarkSeqElement.appendChild(createCornerElement(i)); i++; } @@ -177,21 +177,21 @@ public class RaceData { } /** - * Creates a compound marker holding one or two marks,and a sequence number + * Creates a compound compoundMarker holding one or two marks,and a sequence number * - * @param marker marker + * @param compoundMarker compoundMarker * @param i sequence number * @return Element compound mark element */ - private Element createCompoundMarker(Marker marker, int i) { + private Element createCompoundMarker(CompoundMarker compoundMarker, int i) { Element compoundMarkElement = doc.createElement("CompoundMark"); compoundMarkElement.setAttribute("CompoundMarkID", i + ""); - compoundMarkElement.setAttribute("Name", marker.getName()); + compoundMarkElement.setAttribute("Name", compoundMarker.getName()); - compoundMarkElement.appendChild(createMark(marker.getMark1())); + compoundMarkElement.appendChild(createMark(compoundMarker.getMark1())); - if (!(marker.getMark1().equals(marker.getMark2()))) { - compoundMarkElement.appendChild(createMark(marker.getMark2())); + if (!(compoundMarker.getMark1().equals(compoundMarker.getMark2()))) { + compoundMarkElement.appendChild(createMark(compoundMarker.getMark2())); } return compoundMarkElement; diff --git a/mock/src/main/java/seng302/DataInput/BoatDataSource.java b/mock/src/main/java/seng302/DataInput/BoatDataSource.java index 0b657ab8..73b0a0cc 100644 --- a/mock/src/main/java/seng302/DataInput/BoatDataSource.java +++ b/mock/src/main/java/seng302/DataInput/BoatDataSource.java @@ -1,6 +1,7 @@ package seng302.DataInput; import seng302.Model.Boat; +import seng302.Model.Mark; import java.util.List; @@ -9,5 +10,5 @@ import java.util.List; */ public interface BoatDataSource { List getBoats(); - List getMarkerBoats(); + List getMarkerBoats(); } diff --git a/mock/src/main/java/seng302/DataInput/BoatXMLReader.java b/mock/src/main/java/seng302/DataInput/BoatXMLReader.java new file mode 100644 index 00000000..2d909bfd --- /dev/null +++ b/mock/src/main/java/seng302/DataInput/BoatXMLReader.java @@ -0,0 +1,111 @@ +package seng302.DataInput; + +import org.w3c.dom.Element; +import org.w3c.dom.Node; +import org.xml.sax.SAXException; +import seng302.Model.Boat; +import seng302.Model.Mark; + +import javax.xml.parsers.ParserConfigurationException; +import java.io.IOException; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +/** + * Created by cbt24 on 10/05/17. + */ +public class BoatXMLReader extends XMLReader implements BoatDataSource { + private final Map boatMap = new HashMap<>(); + private final Map markerMap = new HashMap<>(); + + public BoatXMLReader(String filePath) throws ParserConfigurationException, SAXException, IOException { + this(filePath, true); + } + + /** + * COnstructor for Boat XML + * + * @param filePath file path to read + * @param read whether or not to read and store the files straight away. + * @throws IOException error + * @throws SAXException error + * @throws ParserConfigurationException error + */ + public BoatXMLReader(String filePath, boolean read) throws IOException, SAXException, ParserConfigurationException { + super(filePath); + if (read) { + read(); + } + } + + public void read() { + readSettings(); + readShapes(); + readBoats(); + } + + private void readBoats() { + Element nBoats = (Element) doc.getElementsByTagName("Boats").item(0); + for (int i = 0; i < nBoats.getChildNodes().getLength(); i++) { + Node boat = nBoats.getChildNodes().item(i); + if (boat.getNodeName().equals("Boat")) { + readSingleBoat(boat); + } + } + } + + /** + * Ignored data + */ + private void readShapes() { + + } + + /** + * Ignored data + */ + private void readSettings() { + + } + + private boolean isYachtNode(Node boatNode) { + return boatNode.getAttributes().getNamedItem("Type").getTextContent().toLowerCase().equals("yacht"); + } + + /** + * Reads the information about one boat + * Ignored values: ShapeID, StoweName, HullNum, Skipper, Type + */ + private void readSingleBoat(Node boatNode) { + Boat boat; + String country = null; + int sourceID = Integer.parseInt(boatNode.getAttributes().getNamedItem("SourceID").getTextContent()); + String name = boatNode.getAttributes().getNamedItem("BoatName").getTextContent(); + String shortName = boatNode.getAttributes().getNamedItem("ShortName").getTextContent(); + if (exists(boatNode, "Country")) country = boatNode.getAttributes().getNamedItem("Country").getTextContent(); + + if (isYachtNode(boatNode)) { + if (country != null) { + boat = new Boat(sourceID, name, country); + } else { + boat = new Boat(sourceID, name, shortName); + } + boatMap.put(sourceID, boat); + } else { + Mark mark = new Mark(name); + markerMap.put(sourceID, mark); + } + } + + @Override + public List getBoats() { + return new ArrayList<>(boatMap.values()); + } + + @Override + public List getMarkerBoats() { + return new ArrayList<>(markerMap.values()); + } +} diff --git a/mock/src/main/java/seng302/DataInput/RaceDataSource.java b/mock/src/main/java/seng302/DataInput/RaceDataSource.java index 290fba5a..a58e2543 100644 --- a/mock/src/main/java/seng302/DataInput/RaceDataSource.java +++ b/mock/src/main/java/seng302/DataInput/RaceDataSource.java @@ -4,7 +4,7 @@ package seng302.DataInput; import seng302.Model.Boat; import seng302.Model.GPSCoordinate; import seng302.Model.Leg; -import seng302.Model.Marker; +import seng302.Model.CompoundMarker; import java.util.List; @@ -18,7 +18,7 @@ public interface RaceDataSource { List getBoundary(); - List getMarkers(); + List getCompoundMarkers(); int getRaceId(); diff --git a/mock/src/main/java/seng302/DataInput/RaceXMLReader.java b/mock/src/main/java/seng302/DataInput/RaceXMLReader.java index 50bebb1c..05de160c 100644 --- a/mock/src/main/java/seng302/DataInput/RaceXMLReader.java +++ b/mock/src/main/java/seng302/DataInput/RaceXMLReader.java @@ -6,9 +6,9 @@ import org.w3c.dom.NodeList; import org.xml.sax.SAXException; import seng302.Model.Boat; +import seng302.Model.CompoundMarker; import seng302.Model.GPSCoordinate; import seng302.Model.Leg; -import seng302.Model.Marker; import javax.xml.parsers.ParserConfigurationException; import java.io.IOException; @@ -27,7 +27,7 @@ public class RaceXMLReader extends XMLReader implements RaceDataSource { private GPSCoordinate mark, startPt1, startPt2, finishPt1, finishPt2, leewardPt1, leewardPt2, windwardPt1, windwardPt2; private GPSCoordinate mapTopLeft, mapBottomRight; private List boundary = new ArrayList<>(); - private List markers = new ArrayList<>(); + private List compoundMarkers = new ArrayList<>(); /** * Constractor for Race XML @@ -86,10 +86,9 @@ public class RaceXMLReader extends XMLReader implements RaceDataSource { for (int i = 0; i < nBoats.getLength(); i++) { String name = getTextValueOfNode((Element) nBoats.item(i), "name"); - String abbrev = getTextValueOfNode((Element) nBoats.item(i), "abbr"); - double velo = Double.parseDouble(getTextValueOfNode((Element) nBoats.item(i), "speed")); + String country = getTextValueOfNode((Element) nBoats.item(i), "abbr"); int sourceID = Integer.parseInt(getTextValueOfNode((Element) nBoats.item(i), "sourceID")); - Boat boat = new Boat(name, velo, abbrev, sourceID); + Boat boat = new Boat(sourceID, name, country); boat.setCurrentPosition(startPt1); if (legs.size() > 0) { boat.setCurrentLeg(legs.get(0)); @@ -107,8 +106,8 @@ public class RaceXMLReader extends XMLReader implements RaceDataSource { NodeList nMarkers = doc.getElementsByTagName("marker"); for (int i = 0; i < nMarkers.getLength(); i++) { - Marker marker = getMarker((Element) nMarkers.item(i)); - if (marker.getName() != null) markers.add(marker); + CompoundMarker compoundMarker = getMarker((Element) nMarkers.item(i)); + if (compoundMarker.getName() != null) compoundMarkers.add(compoundMarker); } } @@ -122,10 +121,10 @@ public class RaceXMLReader extends XMLReader implements RaceDataSource { for (int i = 0; i < nLegs.getLength(); i++) { String label = getTextValueOfNode((Element) nLegs.item(i), "name"); NodeList start = ((Element) nLegs.item(i)).getElementsByTagName("start"); - Marker startMarker = getMarker(start); + CompoundMarker startCompoundMarker = getMarker(start); NodeList finish = ((Element) nLegs.item(i)).getElementsByTagName("finish"); - Marker finishMarker = getMarker(finish); - legs.add(new Leg(label, startMarker, finishMarker, i)); + CompoundMarker finishCompoundMarker = getMarker(finish); + legs.add(new Leg(label, startCompoundMarker, finishCompoundMarker, i)); } } @@ -205,7 +204,7 @@ public class RaceXMLReader extends XMLReader implements RaceDataSource { * @param start base nodelist this should be the tag that contains * @return */ - private Marker getMarker(NodeList start) { + private CompoundMarker getMarker(NodeList start) { return getMarker(start, 0); } @@ -216,7 +215,7 @@ public class RaceXMLReader extends XMLReader implements RaceDataSource { * @param startIndex index in the node that has the coordinate tag * @return */ - private Marker getMarker(NodeList start, int startIndex) { + private CompoundMarker getMarker(NodeList start, int startIndex) { return getMarker(start, startIndex, 0); } @@ -228,7 +227,7 @@ public class RaceXMLReader extends XMLReader implements RaceDataSource { * @param nodeIndex coordinate index * @return */ - private Marker getMarker(NodeList start, int startIndex, int nodeIndex) { + private CompoundMarker getMarker(NodeList start, int startIndex, int nodeIndex) { NodeList nodeList = ((Element) start.item(startIndex)).getElementsByTagName("marker"); Element marker = (Element) nodeList.item(nodeIndex); return getMarker(marker); @@ -240,7 +239,7 @@ public class RaceXMLReader extends XMLReader implements RaceDataSource { * @param markerNode marker to turn into coordinates * @return */ - private Marker getMarker(Element markerNode) { + private CompoundMarker getMarker(Element markerNode) { NodeList nCoordinates = markerNode.getElementsByTagName("coordinate"); @@ -252,7 +251,7 @@ public class RaceXMLReader extends XMLReader implements RaceDataSource { side2 = side1; } NodeList name = markerNode.getElementsByTagName("name"); - return name.getLength() == 1 ? new Marker(getTextValueOfNode((Element) markerNode, "name"), side1, side2) : new Marker(side1, side2); + return name.getLength() == 1 ? new CompoundMarker(getTextValueOfNode((Element) markerNode, "name"), side1, side2) : new CompoundMarker(side1, side2); } /** @@ -363,8 +362,8 @@ public class RaceXMLReader extends XMLReader implements RaceDataSource { return raceID; } - public List getMarkers() { - return markers; + public List getCompoundMarkers() { + return compoundMarkers; } public String getRaceType() { diff --git a/mock/src/main/java/seng302/DataInput/XMLReader.java b/mock/src/main/java/seng302/DataInput/XMLReader.java index eba900c1..b2b89e30 100644 --- a/mock/src/main/java/seng302/DataInput/XMLReader.java +++ b/mock/src/main/java/seng302/DataInput/XMLReader.java @@ -2,6 +2,7 @@ package seng302.DataInput; import org.w3c.dom.Document; import org.w3c.dom.Element; +import org.w3c.dom.Node; import org.xml.sax.SAXException; import javax.xml.parsers.DocumentBuilder; @@ -60,4 +61,8 @@ public abstract class XMLReader { return n.getAttribute(attr); } + protected boolean exists(Node node, String attribute) { + return node.getAttributes().getNamedItem(attribute) != null; + } + } diff --git a/mock/src/main/java/seng302/Model/Boat.java b/mock/src/main/java/seng302/Model/Boat.java index 5ff47bd9..67ba71b1 100644 --- a/mock/src/main/java/seng302/Model/Boat.java +++ b/mock/src/main/java/seng302/Model/Boat.java @@ -10,7 +10,7 @@ public class Boat { private String name; private double velocity; private double scaledVelocity; - private String abbrev; + private String country; private int sourceID; private Leg currentLeg; private double distanceTravelledInLeg; @@ -22,14 +22,13 @@ public class Boat { /** * Boat initialiser which keeps all of the information of the boat. * - * @param name Name of the Boat. - * @param velocity Speed in m/s that the boat travels at. - * @param abbrev nam abbreviation * @param sourceID id of boat + * @param name Name of the Boat. + * @param country nam abbreviation */ - public Boat(String name, double velocity, String abbrev, int sourceID) { - this.velocity = velocity; - this.abbrev = abbrev; + public Boat(int sourceID, String name, String country) { + this.velocity = 5; // TODO - please dont commit + this.country = this.country; this.name = name; this.sourceID = sourceID; } @@ -42,8 +41,8 @@ public class Boat { public double calculateAzimuth() { GeodeticCalculator calc = new GeodeticCalculator(); - GPSCoordinate start = currentLeg.getStartMarker().getAverageGPSCoordinate(); - GPSCoordinate end = currentLeg.getEndMarker().getAverageGPSCoordinate(); + GPSCoordinate start = currentLeg.getStartCompoundMarker().getAverageGPSCoordinate(); + GPSCoordinate end = currentLeg.getEndCompoundMarker().getAverageGPSCoordinate(); calc.setStartingGeographicPoint(start.getLongitude(), start.getLatitude()); calc.setDestinationGeographicPoint(end.getLongitude(), end.getLatitude()); @@ -90,12 +89,12 @@ public class Boat { this.scaledVelocity = scaledVelocity; } - public String getAbbrev() { - return abbrev; + public String getCountry() { + return country; } - public void setAbbrev(String abbrev) { - this.abbrev = abbrev; + public void setCountry(String country) { + this.country = country; } public int getSourceID() { diff --git a/mock/src/main/java/seng302/Model/Marker.java b/mock/src/main/java/seng302/Model/CompoundMarker.java similarity index 88% rename from mock/src/main/java/seng302/Model/Marker.java rename to mock/src/main/java/seng302/Model/CompoundMarker.java index a5854449..cbe5fdf5 100644 --- a/mock/src/main/java/seng302/Model/Marker.java +++ b/mock/src/main/java/seng302/Model/CompoundMarker.java @@ -6,7 +6,7 @@ import java.awt.geom.Point2D; /** * Created by esa46 on 29/03/17. */ -public class Marker { +public class CompoundMarker { private GPSCoordinate averageGPSCoordinate; private GPSCoordinate mark1; @@ -14,7 +14,7 @@ public class Marker { private String name; private boolean doubleMarker = false; - public Marker(GPSCoordinate mark1) { + public CompoundMarker(GPSCoordinate mark1) { this.mark1 = mark1; this.mark2 = mark1; @@ -22,7 +22,7 @@ public class Marker { } - public Marker(GPSCoordinate mark1, GPSCoordinate mark2) { + public CompoundMarker(GPSCoordinate mark1, GPSCoordinate mark2) { this.mark1 = mark1; this.mark2 = mark2; @@ -30,7 +30,7 @@ public class Marker { } - public Marker(String name, GPSCoordinate mark1, GPSCoordinate mark2) { + public CompoundMarker(String name, GPSCoordinate mark1, GPSCoordinate mark2) { this.name = name; this.mark1 = mark1; diff --git a/mock/src/main/java/seng302/Model/Event.java b/mock/src/main/java/seng302/Model/Event.java index c4fa2fa2..f819ef9d 100644 --- a/mock/src/main/java/seng302/Model/Event.java +++ b/mock/src/main/java/seng302/Model/Event.java @@ -3,6 +3,7 @@ package seng302.Model; import seng302.Data.BoatData; import seng302.Data.RaceData; import seng302.Data.RegattaData; +import seng302.DataInput.BoatDataSource; import seng302.DataInput.RaceDataSource; import seng302.DataInput.RegattaDataSource; import seng302.Exceptions.InvalidBoatDataException; @@ -24,12 +25,14 @@ public class Event { RaceDataSource raceDataSource; RegattaDataSource regattaDataSource; + BoatDataSource boatDataSource; MockOutput mockOutput; - public Event(RaceDataSource raceData, RegattaDataSource regattaData) { + public Event(RaceDataSource raceData, RegattaDataSource regattaData, BoatDataSource boatDataSource) { this.raceDataSource = raceData; this.regattaDataSource = regattaData; + this.boatDataSource = boatDataSource; try { mockOutput = new MockOutput(); new Thread(mockOutput).start(); diff --git a/mock/src/main/java/seng302/Model/Leg.java b/mock/src/main/java/seng302/Model/Leg.java index 7a7b9b0e..b791627a 100644 --- a/mock/src/main/java/seng302/Model/Leg.java +++ b/mock/src/main/java/seng302/Model/Leg.java @@ -10,8 +10,8 @@ import seng302.Constants; public class Leg { private String name; //nautical miles private double distance; - private Marker startMarker; - private Marker endMarker; + private CompoundMarker startCompoundMarker; + private CompoundMarker endCompoundMarker; private int legNumber; /** @@ -22,10 +22,10 @@ public class Leg { * @param end marker * @param number Leg's position in race */ - public Leg(String name, Marker start, Marker end, int number) { + public Leg(String name, CompoundMarker start, CompoundMarker end, int number) { this.name = name; - this.startMarker = start; - this.endMarker = end; + this.startCompoundMarker = start; + this.endCompoundMarker = end; this.legNumber = number; calculateDistance(); } @@ -69,20 +69,20 @@ public class Leg { } - public Marker getStartMarker() { - return startMarker; + public CompoundMarker getStartCompoundMarker() { + return startCompoundMarker; } - public void setStartMarker(Marker startMarker) { - this.startMarker = startMarker; + public void setStartCompoundMarker(CompoundMarker startCompoundMarker) { + this.startCompoundMarker = startCompoundMarker; } - public Marker getEndMarker() { - return endMarker; + public CompoundMarker getEndCompoundMarker() { + return endCompoundMarker; } - public void setEndMarker(Marker endMarker) { - this.endMarker = endMarker; + public void setEndCompoundMarker(CompoundMarker endCompoundMarker) { + this.endCompoundMarker = endCompoundMarker; } /** @@ -92,8 +92,8 @@ public class Leg { GeodeticCalculator calc = new GeodeticCalculator(); //Load start and end of leg - GPSCoordinate startMarker = this.startMarker.getAverageGPSCoordinate(); - GPSCoordinate endMarker = this.endMarker.getAverageGPSCoordinate(); + GPSCoordinate startMarker = this.startCompoundMarker.getAverageGPSCoordinate(); + GPSCoordinate endMarker = this.endCompoundMarker.getAverageGPSCoordinate(); calc.setStartingGeographicPoint(startMarker.getLongitude(), startMarker.getLatitude()); calc.setDestinationGeographicPoint(endMarker.getLongitude(), endMarker.getLatitude()); this.distance = calc.getOrthodromicDistance() / Constants.NMToMetersConversion; diff --git a/mock/src/main/java/seng302/Model/Mark.java b/mock/src/main/java/seng302/Model/Mark.java new file mode 100644 index 00000000..ef9f38f5 --- /dev/null +++ b/mock/src/main/java/seng302/Model/Mark.java @@ -0,0 +1,12 @@ +package seng302.Model; + +/** + * Created by cbt24 on 10/05/17. + */ +public class Mark { + private String name; + + public Mark(String name) { + this.name = name; + } +} diff --git a/mock/src/main/java/seng302/Model/Race.java b/mock/src/main/java/seng302/Model/Race.java index d4e92480..c58eae49 100644 --- a/mock/src/main/java/seng302/Model/Race.java +++ b/mock/src/main/java/seng302/Model/Race.java @@ -216,17 +216,17 @@ public class Race implements Runnable { public void initialiseBoats() { Leg officialStart = legs.get(0); String name = officialStart.getName(); - Marker endMarker = officialStart.getEndMarker(); + CompoundMarker endCompoundMarker = officialStart.getEndCompoundMarker(); - ArrayList startMarkers = getSpreadStartingPositions(); + ArrayList startCompoundMarkers = getSpreadStartingPositions(); for (int i = 0; i < startingBoats.size(); i++) { Boat boat = startingBoats.get(i); if (boat != null) { boat.setScaledVelocity(boat.getVelocity() * scaleFactor); Leg startLeg = new Leg(name, 0); - boat.setCurrentPosition(startMarkers.get(i).getAverageGPSCoordinate()); - startLeg.setStartMarker(startMarkers.get(i)); - startLeg.setEndMarker(endMarker); + boat.setCurrentPosition(startCompoundMarkers.get(i).getAverageGPSCoordinate()); + startLeg.setStartCompoundMarker(startCompoundMarkers.get(i)); + startLeg.setEndCompoundMarker(endCompoundMarker); startLeg.calculateDistance(); boat.setCurrentLeg(startLeg); boat.setHeading(boat.calculateHeading()); @@ -239,27 +239,27 @@ public class Race implements Runnable { * * @return list of starting positions */ - public ArrayList getSpreadStartingPositions() { + public ArrayList getSpreadStartingPositions() { int nBoats = startingBoats.size(); - Marker marker = legs.get(0).getStartMarker(); + CompoundMarker compoundMarker = legs.get(0).getStartCompoundMarker(); GeodeticCalculator initialCalc = new GeodeticCalculator(); - initialCalc.setStartingGeographicPoint(marker.getMark1().getLongitude(), marker.getMark1().getLatitude()); - initialCalc.setDestinationGeographicPoint(marker.getMark2().getLongitude(), marker.getMark2().getLatitude()); + initialCalc.setStartingGeographicPoint(compoundMarker.getMark1().getLongitude(), compoundMarker.getMark1().getLatitude()); + initialCalc.setDestinationGeographicPoint(compoundMarker.getMark2().getLongitude(), compoundMarker.getMark2().getLatitude()); double azimuth = initialCalc.getAzimuth(); double distanceBetweenMarkers = initialCalc.getOrthodromicDistance(); double distanceBetweenBoats = distanceBetweenMarkers / (nBoats + 1); GeodeticCalculator positionCalc = new GeodeticCalculator(); - positionCalc.setStartingGeographicPoint(marker.getMark1().getLongitude(), marker.getMark1().getLatitude()); - ArrayList positions = new ArrayList<>(); + positionCalc.setStartingGeographicPoint(compoundMarker.getMark1().getLongitude(), compoundMarker.getMark1().getLatitude()); + ArrayList positions = new ArrayList<>(); for (int i = 0; i < nBoats; i++) { positionCalc.setDirection(azimuth, distanceBetweenBoats); Point2D position = positionCalc.getDestinationGeographicPoint(); - positions.add(new Marker(new GPSCoordinate(position.getY(), position.getX()))); + positions.add(new CompoundMarker(new GPSCoordinate(position.getY(), position.getX()))); positionCalc = new GeodeticCalculator(); positionCalc.setStartingGeographicPoint(position); @@ -302,7 +302,7 @@ public class Race implements Runnable { //update boat's distance travelled boat.setDistanceTravelledInLeg(totalDistanceTravelled); //Calculate boat's new position by adding the distance travelled onto the start point of the leg - boat.setCurrentPosition(calculatePosition(boat.getCurrentLeg().getStartMarker().getAverageGPSCoordinate(), + boat.setCurrentPosition(calculatePosition(boat.getCurrentLeg().getStartCompoundMarker().getAverageGPSCoordinate(), totalDistanceTravelled, boat.calculateAzimuth())); } } diff --git a/mock/src/main/resources/raceXML/bermuda_AC35.xml b/mock/src/main/resources/raceXML/bermuda_AC35.xml index 83ae5030..7a73fc7f 100644 --- a/mock/src/main/resources/raceXML/bermuda_AC35.xml +++ b/mock/src/main/resources/raceXML/bermuda_AC35.xml @@ -48,7 +48,7 @@ Start to Mark 1 - + 32.296577 -64.854304 @@ -57,29 +57,29 @@ 32.293771 -64.855242 - + - + 32.293039 -64.843983 - + Mark 1 to Leeward Gate - + 32.293039 -64.843983 - + - + 32.309693 -64.835249 @@ -88,13 +88,13 @@ 32.308046 -64.831785 - + Leeward Gate to Windward Gate - + 32.309693 -64.835249 @@ -103,10 +103,10 @@ 32.308046 -64.831785 - + - + 32.284680 -64.850045 @@ -115,13 +115,13 @@ 32.280164 -64.847591 - + Windward Gate to Leeward Gate - + 32.284680 -64.850045 @@ -130,10 +130,10 @@ 32.280164 -64.847591 - + - + 32.309693 -64.835249 @@ -142,13 +142,13 @@ 32.308046 -64.831785 - + Leeward Gate to Finish - + 32.309693 -64.835249 @@ -157,10 +157,10 @@ 32.308046 -64.831785 - + - + 32.317379 -64.839291 @@ -169,7 +169,7 @@ 32.317257 -64.836260 - + @@ -220,7 +220,7 @@ -64.849184 - + Start Line 32.296577 @@ -230,15 +230,15 @@ 32.293771 -64.855242 - - + + Mark 32.293039 -64.843983 - - + + Windward Gate 32.284680 @@ -248,8 +248,8 @@ 32.280164 -64.847591 - - + + Leeward Gate 32.309693 @@ -259,8 +259,8 @@ 32.308046 -64.831785 - - + + Windward Gate 32.284680 @@ -270,8 +270,8 @@ 32.280164 -64.847591 - - + + Finish Line 32.317379 @@ -281,6 +281,6 @@ 32.317257 -64.836260 - + diff --git a/mock/src/test/java/seng302/Model/BoatTest.java b/mock/src/test/java/seng302/Model/BoatTest.java index 75b01939..2d112aad 100644 --- a/mock/src/test/java/seng302/Model/BoatTest.java +++ b/mock/src/test/java/seng302/Model/BoatTest.java @@ -13,23 +13,23 @@ public class BoatTest { private GPSCoordinate ORIGIN_COORDS = new GPSCoordinate(0, 0); - private Boat TEST_BOAT = new Boat("Test", 1, "tt", 1); + private Boat TEST_BOAT = new Boat(1, "Test", "tt"); @Test public void calculateDueNorthAzimuthReturns0() { - Marker startMarker = new Marker(ORIGIN_COORDS); - Marker endMarker = new Marker(new GPSCoordinate(50, 0)); - Leg start = new Leg("Start", startMarker, endMarker, 0); + CompoundMarker startCompoundMarker = new CompoundMarker(ORIGIN_COORDS); + CompoundMarker endCompoundMarker = new CompoundMarker(new GPSCoordinate(50, 0)); + Leg start = new Leg("Start", startCompoundMarker, endCompoundMarker, 0); TEST_BOAT.setCurrentLeg(start); assertEquals(TEST_BOAT.calculateAzimuth(), 0, 1e-8); } @Test public void calculateDueSouthAzimuthReturns180() { - Marker startMarker = new Marker(ORIGIN_COORDS); - Marker endMarker = new Marker(new GPSCoordinate(-50, 0)); - Leg start = new Leg("Start", startMarker, endMarker, 0); + CompoundMarker startCompoundMarker = new CompoundMarker(ORIGIN_COORDS); + CompoundMarker endCompoundMarker = new CompoundMarker(new GPSCoordinate(-50, 0)); + Leg start = new Leg("Start", startCompoundMarker, endCompoundMarker, 0); TEST_BOAT.setCurrentLeg(start); assertEquals(TEST_BOAT.calculateAzimuth(), 180, 1e-8); } @@ -38,9 +38,9 @@ public class BoatTest { @Test public void calculateDueEastAzimuthReturns90() { - Marker startMarker = new Marker(ORIGIN_COORDS); - Marker endMarker = new Marker(new GPSCoordinate(0, 50)); - Leg start = new Leg("Start", startMarker, endMarker, 0); + CompoundMarker startCompoundMarker = new CompoundMarker(ORIGIN_COORDS); + CompoundMarker endCompoundMarker = new CompoundMarker(new GPSCoordinate(0, 50)); + Leg start = new Leg("Start", startCompoundMarker, endCompoundMarker, 0); TEST_BOAT.setCurrentLeg(start); assertEquals(TEST_BOAT.calculateAzimuth(), 90, 1e-8); } @@ -48,9 +48,9 @@ public class BoatTest { @Test public void calculateDueWestAzimuthReturnsNegative90() { - Marker startMarker = new Marker(ORIGIN_COORDS); - Marker endMarker = new Marker(new GPSCoordinate(0, -50)); - Leg start = new Leg("Start", startMarker, endMarker, 0); + CompoundMarker startCompoundMarker = new CompoundMarker(ORIGIN_COORDS); + CompoundMarker endCompoundMarker = new CompoundMarker(new GPSCoordinate(0, -50)); + Leg start = new Leg("Start", startCompoundMarker, endCompoundMarker, 0); TEST_BOAT.setCurrentLeg(start); assertEquals(TEST_BOAT.calculateAzimuth(), -90, 1e-8); @@ -59,9 +59,9 @@ public class BoatTest { @Test public void calculateDueNorthHeadingReturns0() { - Marker startMarker = new Marker(ORIGIN_COORDS); - Marker endMarker = new Marker(new GPSCoordinate(50, 0)); - Leg start = new Leg("Start", startMarker, endMarker, 0); + CompoundMarker startCompoundMarker = new CompoundMarker(ORIGIN_COORDS); + CompoundMarker endCompoundMarker = new CompoundMarker(new GPSCoordinate(50, 0)); + Leg start = new Leg("Start", startCompoundMarker, endCompoundMarker, 0); TEST_BOAT.setCurrentLeg(start); assertEquals(TEST_BOAT.calculateHeading(), 0, 1e-8); } @@ -69,27 +69,27 @@ public class BoatTest { @Test public void calculateDueEastHeadingReturns90() { - Marker startMarker = new Marker(ORIGIN_COORDS); - Marker endMarker = new Marker(new GPSCoordinate(0, 50)); - Leg start = new Leg("Start", startMarker, endMarker, 0); + CompoundMarker startCompoundMarker = new CompoundMarker(ORIGIN_COORDS); + CompoundMarker endCompoundMarker = new CompoundMarker(new GPSCoordinate(0, 50)); + Leg start = new Leg("Start", startCompoundMarker, endCompoundMarker, 0); TEST_BOAT.setCurrentLeg(start); assertEquals(TEST_BOAT.calculateHeading(), 90, 1e-8); } @Test public void calculateDueSouthHeadingReturns180() { - Marker startMarker = new Marker(ORIGIN_COORDS); - Marker endMarker = new Marker(new GPSCoordinate(-50, 0)); - Leg start = new Leg("Start", startMarker, endMarker, 0); + CompoundMarker startCompoundMarker = new CompoundMarker(ORIGIN_COORDS); + CompoundMarker endCompoundMarker = new CompoundMarker(new GPSCoordinate(-50, 0)); + Leg start = new Leg("Start", startCompoundMarker, endCompoundMarker, 0); TEST_BOAT.setCurrentLeg(start); assertEquals(TEST_BOAT.calculateHeading(), 180, 1e-8); } @Test public void calculateDueWestHeadingReturns270() { - Marker startMarker = new Marker(ORIGIN_COORDS); - Marker endMarker = new Marker(new GPSCoordinate(0, -50)); - Leg start = new Leg("Start", startMarker, endMarker, 0); + CompoundMarker startCompoundMarker = new CompoundMarker(ORIGIN_COORDS); + CompoundMarker endCompoundMarker = new CompoundMarker(new GPSCoordinate(0, -50)); + Leg start = new Leg("Start", startCompoundMarker, endCompoundMarker, 0); TEST_BOAT.setCurrentLeg(start); assertEquals(TEST_BOAT.calculateHeading(), 270, 1e-8); } diff --git a/mock/src/test/java/seng302/Model/MarkerTest.java b/mock/src/test/java/seng302/Model/CompoundMarkerTest.java similarity index 76% rename from mock/src/test/java/seng302/Model/MarkerTest.java rename to mock/src/test/java/seng302/Model/CompoundMarkerTest.java index 168c222c..ef46de2c 100644 --- a/mock/src/test/java/seng302/Model/MarkerTest.java +++ b/mock/src/test/java/seng302/Model/CompoundMarkerTest.java @@ -8,14 +8,14 @@ import static org.junit.Assert.assertTrue; /** * Created by esa46 on 29/03/17. */ -public class MarkerTest { +public class CompoundMarkerTest { GPSCoordinate ORIGIN_COORD = new GPSCoordinate(0, 0); @Test public void averageOfSingleMarkAtOriginIsSingleMark() { - Marker testMark = new Marker(ORIGIN_COORD); + CompoundMarker testMark = new CompoundMarker(ORIGIN_COORD); assertTrue(testMark.getAverageGPSCoordinate().equals(ORIGIN_COORD)); } @@ -24,7 +24,7 @@ public class MarkerTest { public void averageOfSingleMarkIsSingleMark() { GPSCoordinate testCoord = new GPSCoordinate(20, 25); - Marker testMark = new Marker(testCoord); + CompoundMarker testMark = new CompoundMarker(testCoord); assertTrue(testMark.getAverageGPSCoordinate().equals(testCoord)); } @@ -34,7 +34,7 @@ public class MarkerTest { public void averageLatOfTwoMarksIsAccurate() { GPSCoordinate testCoord = new GPSCoordinate(10, 0); - Marker testMark = new Marker(ORIGIN_COORD, testCoord); + CompoundMarker testMark = new CompoundMarker(ORIGIN_COORD, testCoord); assertTrue(testMark.getAverageGPSCoordinate().equals(new GPSCoordinate(5, 0))); } @@ -42,7 +42,7 @@ public class MarkerTest { public void averageLongOfTwoMarksIsAccurate() { GPSCoordinate testCoord = new GPSCoordinate(0, 10); - Marker testMark = new Marker(ORIGIN_COORD, testCoord); + CompoundMarker testMark = new CompoundMarker(ORIGIN_COORD, testCoord); assertTrue(testMark.getAverageGPSCoordinate().equals(new GPSCoordinate(0, 5))); } @@ -52,7 +52,7 @@ public class MarkerTest { GPSCoordinate testCoord1 = new GPSCoordinate(10, 30); GPSCoordinate testCoord2 = new GPSCoordinate(30, 60); - Marker testMark = new Marker(testCoord1, testCoord2); + CompoundMarker testMark = new CompoundMarker(testCoord1, testCoord2); assertTrue(testMark.getAverageGPSCoordinate().equals(new GPSCoordinate(020.644102, 44.014817))); } diff --git a/mock/src/test/java/seng302/Model/LegTest.java b/mock/src/test/java/seng302/Model/LegTest.java index b9d2e6bf..feccb9d3 100644 --- a/mock/src/test/java/seng302/Model/LegTest.java +++ b/mock/src/test/java/seng302/Model/LegTest.java @@ -14,7 +14,7 @@ import static junit.framework.TestCase.assertEquals; */ public class LegTest { - private Marker ORIGIN_MARKER = new Marker(new GPSCoordinate(0, 0)); + private CompoundMarker ORIGIN_Compound_MARKER = new CompoundMarker(new GPSCoordinate(0, 0)); @Test public void calculateDistanceHandles5nmNorth() { @@ -22,8 +22,8 @@ public class LegTest { calc.setStartingGeographicPoint(0, 0); calc.setDirection(0, 5 * Constants.NMToMetersConversion); - Marker endMarker = getEndMarker(calc.getDestinationGeographicPoint()); - Leg test = new Leg("Test", ORIGIN_MARKER, endMarker, 0); + CompoundMarker endCompoundMarker = getEndMarker(calc.getDestinationGeographicPoint()); + Leg test = new Leg("Test", ORIGIN_Compound_MARKER, endCompoundMarker, 0); assertEquals(test.getDistance(), 5, 1e-8); } @@ -33,8 +33,8 @@ public class LegTest { calc.setStartingGeographicPoint(0, 0); calc.setDirection(90, 12 * Constants.NMToMetersConversion); - Marker endMarker = getEndMarker(calc.getDestinationGeographicPoint()); - Leg test = new Leg("Test", ORIGIN_MARKER, endMarker, 0); + CompoundMarker endCompoundMarker = getEndMarker(calc.getDestinationGeographicPoint()); + Leg test = new Leg("Test", ORIGIN_Compound_MARKER, endCompoundMarker, 0); assertEquals(test.getDistance(), 12, 1e-8); } @@ -44,8 +44,8 @@ public class LegTest { calc.setStartingGeographicPoint(0, 0); calc.setDirection(180, 0.5 * Constants.NMToMetersConversion); - Marker endMarker = getEndMarker(calc.getDestinationGeographicPoint()); - Leg test = new Leg("Test", ORIGIN_MARKER, endMarker, 0); + CompoundMarker endCompoundMarker = getEndMarker(calc.getDestinationGeographicPoint()); + Leg test = new Leg("Test", ORIGIN_Compound_MARKER, endCompoundMarker, 0); assertEquals(test.getDistance(), 0.5, 1e-8); } @@ -55,23 +55,23 @@ public class LegTest { calc.setStartingGeographicPoint(0, 0); calc.setDirection(-90, 0.1 * Constants.NMToMetersConversion); - Marker endMarker = getEndMarker(calc.getDestinationGeographicPoint()); - Leg test = new Leg("Test", ORIGIN_MARKER, endMarker, 0); + CompoundMarker endCompoundMarker = getEndMarker(calc.getDestinationGeographicPoint()); + Leg test = new Leg("Test", ORIGIN_Compound_MARKER, endCompoundMarker, 0); assertEquals(test.getDistance(), 0.1, 1e-8); } @Test public void calculateDistanceHandlesZeroDifference() { - Leg test = new Leg("Test", ORIGIN_MARKER, ORIGIN_MARKER, 0); + Leg test = new Leg("Test", ORIGIN_Compound_MARKER, ORIGIN_Compound_MARKER, 0); assertEquals(test.getDistance(), 0, 1e-8); } - private Marker getEndMarker(Point2D point) { + private CompoundMarker getEndMarker(Point2D point) { GPSCoordinate coords = new GPSCoordinate(point.getY(), point.getX()); - return new Marker(coords); + return new CompoundMarker(coords); } } diff --git a/mock/src/test/java/seng302/Model/RaceTest.java b/mock/src/test/java/seng302/Model/RaceTest.java index bbac7680..ccf41621 100644 --- a/mock/src/test/java/seng302/Model/RaceTest.java +++ b/mock/src/test/java/seng302/Model/RaceTest.java @@ -28,8 +28,8 @@ //public class RaceTest{ // // private static MockOutput mockOutput; -// SharedModel.Leg START_LEG = new SharedModel.Leg("Start", new SharedModel.Marker(new SharedModel.GPSCoordinate(0, 0)), new SharedModel.Marker(new SharedModel.GPSCoordinate(1, 1)), 0); -// SharedModel.Leg FINISH_LEG = new SharedModel.Leg("Finish", new SharedModel.Marker(new SharedModel.GPSCoordinate(1, 1)), new SharedModel.Marker(new SharedModel.GPSCoordinate(2, 2)), 0); +// SharedModel.Leg START_LEG = new SharedModel.Leg("Start", new SharedModel.CompoundMarker(new SharedModel.GPSCoordinate(0, 0)), new SharedModel.CompoundMarker(new SharedModel.GPSCoordinate(1, 1)), 0); +// SharedModel.Leg FINISH_LEG = new SharedModel.Leg("Finish", new SharedModel.CompoundMarker(new SharedModel.GPSCoordinate(1, 1)), new SharedModel.CompoundMarker(new SharedModel.GPSCoordinate(2, 2)), 0); // //// @Override //// public void start(Stage primaryStage) throws Exception{} diff --git a/mock/src/test/java/seng302/Model/RaceXMLTest.java b/mock/src/test/java/seng302/Model/RaceXMLTest.java index bb06111d..6007bb56 100644 --- a/mock/src/test/java/seng302/Model/RaceXMLTest.java +++ b/mock/src/test/java/seng302/Model/RaceXMLTest.java @@ -37,23 +37,23 @@ public class RaceXMLTest { //test boat 2 assertEquals(boats.get(1).getName(), "Land Rover BAR"); assertTrue(boats.get(1).getVelocity() == 30); - assertEquals(boats.get(1).getAbbrev(), "GBR"); + assertEquals(boats.get(1).getCountry(), "GBR"); //test boat 3 assertEquals(boats.get(2).getName(), "SoftBank Team Japan"); assertTrue(boats.get(2).getVelocity() == 25); - assertEquals(boats.get(2).getAbbrev(), "JPN"); + assertEquals(boats.get(2).getCountry(), "JPN"); //test boat 4 assertEquals(boats.get(3).getName(), "Groupama Team France"); assertTrue(boats.get(3).getVelocity() == 20); - assertEquals(boats.get(3).getAbbrev(), "FRA"); + assertEquals(boats.get(3).getCountry(), "FRA"); //test boat 5 assertEquals(boats.get(4).getName(), "Artemis Racing"); assertTrue(boats.get(4).getVelocity() == 29); - assertEquals(boats.get(4).getAbbrev(), "SWE"); + assertEquals(boats.get(4).getCountry(), "SWE"); //test boat 6 assertEquals(boats.get(5).getName(), "Emirates Team New Zealand"); assertTrue(boats.get(5).getVelocity() == 62); - assertEquals(boats.get(5).getAbbrev(), "NZL"); + assertEquals(boats.get(5).getCountry(), "NZL"); } catch (Exception e) { fail("Boat Unreadable"); } diff --git a/mock/src/test/resources/raceXML/bermuda_AC35.xml b/mock/src/test/resources/raceXML/bermuda_AC35.xml index 27067d69..b1146af1 100644 --- a/mock/src/test/resources/raceXML/bermuda_AC35.xml +++ b/mock/src/test/resources/raceXML/bermuda_AC35.xml @@ -48,7 +48,7 @@ Start to Mark 1 - + 32.296577 -64.854304 @@ -57,29 +57,29 @@ 32.293771 -64.855242 - + - + 32.293039 -64.843983 - + Mark 1 to Leeward Gate - + 32.293039 -64.843983 - + - + 32.309693 -64.835249 @@ -88,13 +88,13 @@ 32.308046 -64.831785 - + Leeward Gate to Windward Gate - + 32.309693 -64.835249 @@ -103,10 +103,10 @@ 32.308046 -64.831785 - + - + 32.284680 -64.850045 @@ -115,13 +115,13 @@ 32.280164 -64.847591 - + Windward Gate to Leeward Gate - + 32.284680 -64.850045 @@ -130,10 +130,10 @@ 32.280164 -64.847591 - + - + 32.309693 -64.835249 @@ -142,13 +142,13 @@ 32.308046 -64.831785 - + Leeward Gate to Finish - + 32.309693 -64.835249 @@ -157,10 +157,10 @@ 32.308046 -64.831785 - + - + 32.317379 -64.839291 @@ -169,7 +169,7 @@ 32.317257 -64.836260 - + @@ -220,7 +220,7 @@ -64.849184 - + Start Line 32.296577 @@ -230,15 +230,15 @@ 32.293771 -64.855242 - - + + Mark 32.293039 -64.843983 - - + + Windward Gate 32.284680 @@ -248,8 +248,8 @@ 32.280164 -64.847591 - - + + Leeward Gate 32.309693 @@ -259,8 +259,8 @@ 32.308046 -64.831785 - - + + Finish Line 32.317379 @@ -270,6 +270,6 @@ 32.317257 -64.836260 - + diff --git a/visualiser/src/main/java/seng302/Mock/StreamedCourse.java b/visualiser/src/main/java/seng302/Mock/StreamedCourse.java index 04c89cfc..1233b519 100644 --- a/visualiser/src/main/java/seng302/Mock/StreamedCourse.java +++ b/visualiser/src/main/java/seng302/Mock/StreamedCourse.java @@ -2,8 +2,8 @@ package seng302.Mock; import seng302.GPSCoordinate; import seng302.Model.Boat; +import seng302.Model.CompoundMark; import seng302.Model.Leg; -import seng302.Model.Marker; import seng302.RaceDataSource; import java.time.ZonedDateTime; @@ -82,7 +82,7 @@ public class StreamedCourse extends Observable implements RaceDataSource { return streamedCourseXMLReader.getLegs(); } - public List getMarkers() { return streamedCourseXMLReader.getMarkers(); } + public List getMarkers() { return streamedCourseXMLReader.getCompoundMarks(); } public List getBoundary() { return streamedCourseXMLReader.getBoundary(); diff --git a/visualiser/src/main/java/seng302/Mock/StreamedCourseXMLReader.java b/visualiser/src/main/java/seng302/Mock/StreamedCourseXMLReader.java index ae07cd18..9a0a8f4b 100644 --- a/visualiser/src/main/java/seng302/Mock/StreamedCourseXMLReader.java +++ b/visualiser/src/main/java/seng302/Mock/StreamedCourseXMLReader.java @@ -6,8 +6,8 @@ import org.w3c.dom.Node; import org.w3c.dom.NodeList; import org.xml.sax.SAXException; import seng302.GPSCoordinate; +import seng302.Model.CompoundMark; import seng302.Model.Leg; -import seng302.Model.Marker; import seng302.XMLReader; import javax.xml.parsers.ParserConfigurationException; @@ -25,10 +25,10 @@ public class StreamedCourseXMLReader extends XMLReader { private static final double COORDINATEPADDING = 0.000; private GPSCoordinate mapTopLeft, mapBottomRight; private final List boundary = new ArrayList<>(); - private final Map compoundMarks = new HashMap<>(); + private final Map compoundMarkMap = new HashMap<>(); private final Map participants = new HashMap<>(); private final List legs = new ArrayList<>(); - private final List markers = new ArrayList<>(); + private final List compoundMarks = new ArrayList<>(); private ZonedDateTime creationTimeDate; private ZonedDateTime raceStartTime; private int raceID; @@ -138,7 +138,7 @@ public class StreamedCourseXMLReader extends XMLReader { /** * Indexes CompoundMark elements by their ID for use in generating the course, and populates list of Markers. - * @see seng302.Model.Marker + * @see CompoundMark */ private void readCompoundMarks() throws StreamedCourseXMLException { Element nCourse = (Element) doc.getElementsByTagName("Course").item(0); @@ -146,27 +146,27 @@ public class StreamedCourseXMLReader extends XMLReader { Node compoundMark = nCourse.getChildNodes().item(i); if(compoundMark.getNodeName().equals("CompoundMark")) { int compoundMarkID = getCompoundMarkID((Element) compoundMark); - compoundMarks.put(compoundMarkID, (Element)compoundMark); - markers.add(getMarker(compoundMarkID)); + compoundMarkMap.put(compoundMarkID, (Element)compoundMark); + compoundMarks.add(getMarker(compoundMarkID)); } } } /** - * Generates a Marker from the CompoundMark element with given ID. + * Generates a CompoundMark from the CompoundMark element with given ID. * @param compoundMarkID index of required CompoundMark element - * @return generated Marker + * @return generated CompoundMark * @throws StreamedCourseXMLException if CompoundMark element contains unhandled number of compoundMarks - * @see seng302.Model.Marker + * @see CompoundMark */ - private Marker getMarker(int compoundMarkID) throws StreamedCourseXMLException { - Element compoundMark = compoundMarks.get(compoundMarkID); + private CompoundMark getMarker(int compoundMarkID) throws StreamedCourseXMLException { + Element compoundMark = compoundMarkMap.get(compoundMarkID); NodeList nMarks = compoundMark.getElementsByTagName("Mark"); - Marker marker; + CompoundMark marker; switch(nMarks.getLength()) { - case 1: marker = new Marker(getCoordinate((Element)nMarks.item(0))); break; - case 2: marker = new Marker(getCoordinate((Element)nMarks.item(0)), getCoordinate((Element)nMarks.item(1))); break; + case 1: marker = new CompoundMark(getCoordinate((Element)nMarks.item(0))); break; + case 2: marker = new CompoundMark(getCoordinate((Element)nMarks.item(0)), getCoordinate((Element)nMarks.item(1))); break; default: throw new StreamedCourseXMLException(); } @@ -194,24 +194,24 @@ public class StreamedCourseXMLReader extends XMLReader { * @return value of "name" attribute */ private String getCompoundMarkName(int compoundMarkID) { - return compoundMarks.get(compoundMarkID).getAttribute("Name"); + return compoundMarkMap.get(compoundMarkID).getAttribute("Name"); } /** * Populates list of legs given CompoundMarkSequence element and referenced CompoundMark elements. - * @throws StreamedCourseXMLException if markers cannot be resolved from CompoundMark + * @throws StreamedCourseXMLException if compoundMarks cannot be resolved from CompoundMark */ private void readCompoundMarkSequence() throws StreamedCourseXMLException { Element nCompoundMarkSequence = (Element) doc.getElementsByTagName("CompoundMarkSequence").item(0); NodeList nCorners = nCompoundMarkSequence.getElementsByTagName("Corner"); Element markXML = (Element)nCorners.item(0); - Marker lastMarker = getMarker(getCompoundMarkID(markXML)); + CompoundMark lastCompoundMark = getMarker(getCompoundMarkID(markXML)); String legName = getCompoundMarkName(getCompoundMarkID(markXML)); for(int i = 1; i < nCorners.getLength(); i++) { markXML = (Element)nCorners.item(i); - Marker currentMarker = getMarker(getCompoundMarkID(markXML)); - legs.add(new Leg(legName, lastMarker, currentMarker, i-1)); - lastMarker = currentMarker; + CompoundMark currentCompoundMark = getMarker(getCompoundMarkID(markXML)); + legs.add(new Leg(legName, lastCompoundMark, currentCompoundMark, i-1)); + lastCompoundMark = currentCompoundMark; legName = getCompoundMarkName(getCompoundMarkID(markXML)); } } @@ -253,7 +253,7 @@ public class StreamedCourseXMLReader extends XMLReader { return legs; } - public List getMarkers() { return markers; } + public List getCompoundMarks() { return compoundMarks; } public Double getPadding() { return COORDINATEPADDING; diff --git a/visualiser/src/main/java/seng302/Mock/StreamedRace.java b/visualiser/src/main/java/seng302/Mock/StreamedRace.java index ed1c7bf5..c84ac8cd 100644 --- a/visualiser/src/main/java/seng302/Mock/StreamedRace.java +++ b/visualiser/src/main/java/seng302/Mock/StreamedRace.java @@ -4,7 +4,7 @@ import seng302.Controllers.RaceController; import seng302.GPSCoordinate; import seng302.Model.Boat; import seng302.Model.Leg; -import seng302.Model.Marker; +import seng302.Model.CompoundMark; import seng302.Model.Race; import seng302.Networking.Messages.BoatLocation; import seng302.Networking.Messages.BoatStatus; @@ -25,13 +25,13 @@ public class StreamedRace extends Race { public void initialiseBoats() { Leg officialStart = legs.get(0); String name = officialStart.getName(); - Marker endMarker = officialStart.getEndMarker(); + CompoundMark endCompoundMark = officialStart.getEndCompoundMark(); for (int i = 0; i < startingBoats.size(); i++) { Boat boat = startingBoats.get(i); if (boat != null) { Leg startLeg = new Leg(name, 0); - startLeg.setEndMarker(endMarker); + startLeg.setEndCompoundMark(endCompoundMark); boat.setCurrentLeg(startLeg); } } diff --git a/visualiser/src/main/java/seng302/Model/BoatInRace.java b/visualiser/src/main/java/seng302/Model/BoatInRace.java index 05c58017..3afc5e08 100644 --- a/visualiser/src/main/java/seng302/Model/BoatInRace.java +++ b/visualiser/src/main/java/seng302/Model/BoatInRace.java @@ -72,8 +72,8 @@ public class BoatInRace extends Boat { public double calculateAzimuth() { GeodeticCalculator calc = new GeodeticCalculator(); - GPSCoordinate start = currentLeg.getStartMarker().getAverageGPSCoordinate(); - GPSCoordinate end = currentLeg.getEndMarker().getAverageGPSCoordinate(); + GPSCoordinate start = currentLeg.getStartCompoundMark().getAverageGPSCoordinate(); + GPSCoordinate end = currentLeg.getEndCompoundMark().getAverageGPSCoordinate(); calc.setStartingGeographicPoint(start.getLongitude(), start.getLatitude()); calc.setDestinationGeographicPoint(end.getLongitude(), end.getLatitude()); diff --git a/visualiser/src/main/java/seng302/Model/Marker.java b/visualiser/src/main/java/seng302/Model/CompoundMark.java similarity index 92% rename from visualiser/src/main/java/seng302/Model/Marker.java rename to visualiser/src/main/java/seng302/Model/CompoundMark.java index 8b432d70..6e635dde 100644 --- a/visualiser/src/main/java/seng302/Model/Marker.java +++ b/visualiser/src/main/java/seng302/Model/CompoundMark.java @@ -8,12 +8,12 @@ import java.awt.geom.Point2D; /** * Created by esa46 on 29/03/17. */ -public class Marker { +public class CompoundMark { private final GPSCoordinate averageGPSCoordinate; private final GPSCoordinate mark1; private final GPSCoordinate mark2; - public Marker(GPSCoordinate mark1) { + public CompoundMark(GPSCoordinate mark1) { this.mark1 = mark1; this.mark2 = mark1; @@ -21,7 +21,7 @@ public class Marker { } - public Marker(GPSCoordinate mark1, GPSCoordinate mark2) { + public CompoundMark(GPSCoordinate mark1, GPSCoordinate mark2) { this.mark1 = mark1; this.mark2 = mark2; diff --git a/visualiser/src/main/java/seng302/Model/ConstantVelocityRace.java b/visualiser/src/main/java/seng302/Model/ConstantVelocityRace.java index fefc0755..79b76dbc 100644 --- a/visualiser/src/main/java/seng302/Model/ConstantVelocityRace.java +++ b/visualiser/src/main/java/seng302/Model/ConstantVelocityRace.java @@ -60,19 +60,19 @@ // public void initialiseBoats() { // Leg officialStart = legs.get(0); // String name = officialStart.getName(); -// Marker endMarker = officialStart.getEndMarker(); +// CompoundMark endMarker = officialStart.getEndCompoundMark(); // // BoatInRace.setTrackPointTimeInterval(BoatInRace.getBaseTrackPointTimeInterval() / scaleFactor); // -// ArrayList startMarkers = getSpreadStartingPositions(); +// ArrayList startMarkers = getSpreadStartingPositions(); // for (int i = 0; i < startingBoats.size(); i++) { // BoatInRace boat = startingBoats.get(i); // if (boat != null) { // boat.setScaledVelocity(boat.getVelocity() * scaleFactor); // Leg startLeg = new Leg(name, 0); // boat.setCurrentPosition(startMarkers.get(i).getAverageGPSCoordinate()); -// startLeg.setStartMarker(startMarkers.get(i)); -// startLeg.setEndMarker(endMarker); +// startLeg.setStartCompoundMark(startMarkers.get(i)); +// startLeg.setEndCompoundMark(endMarker); // startLeg.calculateDistance(); // boat.setCurrentLeg(startLeg); // boat.setHeading(boat.calculateHeading()); @@ -85,10 +85,10 @@ // * // * @return list of starting positions // */ -// public ArrayList getSpreadStartingPositions() { +// public ArrayList getSpreadStartingPositions() { // // int nBoats = startingBoats.size(); -// Marker marker = legs.get(0).getStartMarker(); +// CompoundMark marker = legs.get(0).getStartCompoundMark(); // // GeodeticCalculator initialCalc = new GeodeticCalculator(); // initialCalc.setStartingGeographicPoint(marker.getMark1().getLongitude(), marker.getMark1().getLatitude()); @@ -100,12 +100,12 @@ // // GeodeticCalculator positionCalc = new GeodeticCalculator(); // positionCalc.setStartingGeographicPoint(marker.getMark1().getLongitude(), marker.getMark1().getLatitude()); -// ArrayList positions = new ArrayList<>(); +// ArrayList positions = new ArrayList<>(); // // for (int i = 0; i < nBoats; i++) { // positionCalc.setDirection(azimuth, distanceBetweenBoats); // Point2D position = positionCalc.getDestinationGeographicPoint(); -// positions.add(new Marker(new GPSCoordinate(position.getY(), position.getX()))); +// positions.add(new CompoundMark(new GPSCoordinate(position.getY(), position.getX()))); // // positionCalc = new GeodeticCalculator(); // positionCalc.setStartingGeographicPoint(position); @@ -147,7 +147,7 @@ // //update boat's distance travelled // boat.setDistanceTravelledInLeg(totalDistanceTravelled); // //Calculate boat's new position by adding the distance travelled onto the start point of the leg -// boat.setCurrentPosition(calculatePosition(boat.getCurrentLeg().getStartMarker().getAverageGPSCoordinate(), +// boat.setCurrentPosition(calculatePosition(boat.getCurrentLeg().getStartCompoundMark().getAverageGPSCoordinate(), // totalDistanceTravelled, boat.calculateAzimuth())); // } // } diff --git a/visualiser/src/main/java/seng302/Model/Leg.java b/visualiser/src/main/java/seng302/Model/Leg.java index fd596704..82f2024e 100644 --- a/visualiser/src/main/java/seng302/Model/Leg.java +++ b/visualiser/src/main/java/seng302/Model/Leg.java @@ -10,8 +10,8 @@ import seng302.GPSCoordinate; public class Leg { private final String name; //nautical miles private double distance; - private Marker startMarker; - private Marker endMarker; + private CompoundMark startCompoundMark; + private CompoundMark endCompoundMark; private final int legNumber; /** @@ -22,10 +22,10 @@ public class Leg { * @param end marker * @param number Leg's position in race */ - public Leg(String name, Marker start, Marker end, int number) { + public Leg(String name, CompoundMark start, CompoundMark end, int number) { this.name = name; - this.startMarker = start; - this.endMarker = end; + this.startCompoundMark = start; + this.endCompoundMark = end; this.legNumber = number; calculateDistance(); } @@ -70,20 +70,20 @@ public class Leg { } - public Marker getStartMarker() { - return startMarker; + public CompoundMark getStartCompoundMark() { + return startCompoundMark; } - public void setStartMarker(Marker startMarker) { - this.startMarker = startMarker; + public void setStartCompoundMark(CompoundMark startCompoundMark) { + this.startCompoundMark = startCompoundMark; } - public Marker getEndMarker() { - return endMarker; + public CompoundMark getEndCompoundMark() { + return endCompoundMark; } - public void setEndMarker(Marker endMarker) { - this.endMarker = endMarker; + public void setEndCompoundMark(CompoundMark endCompoundMark) { + this.endCompoundMark = endCompoundMark; } /** @@ -93,8 +93,8 @@ public class Leg { GeodeticCalculator calc = new GeodeticCalculator(); //Load start and end of leg - GPSCoordinate startMarker = this.startMarker.getAverageGPSCoordinate(); - GPSCoordinate endMarker = this.endMarker.getAverageGPSCoordinate(); + GPSCoordinate startMarker = this.startCompoundMark.getAverageGPSCoordinate(); + GPSCoordinate endMarker = this.endCompoundMark.getAverageGPSCoordinate(); calc.setStartingGeographicPoint(startMarker.getLongitude(), startMarker.getLatitude()); calc.setDestinationGeographicPoint(endMarker.getLongitude(), endMarker.getLatitude()); this.distance = calc.getOrthodromicDistance() / Constants.NMToMetersConversion; diff --git a/visualiser/src/main/java/seng302/Model/ResizableRaceCanvas.java b/visualiser/src/main/java/seng302/Model/ResizableRaceCanvas.java index 2b793da9..be569b60 100644 --- a/visualiser/src/main/java/seng302/Model/ResizableRaceCanvas.java +++ b/visualiser/src/main/java/seng302/Model/ResizableRaceCanvas.java @@ -28,7 +28,7 @@ public class ResizableRaceCanvas extends ResizableCanvas { private boolean annoSpeed = true; private boolean annoPath = true; private List colours; - private final List markers; + private final List compoundMarks; double[] xpoints = {}, ypoints = {}; private final RaceDataSource raceData; @@ -42,7 +42,7 @@ public class ResizableRaceCanvas extends ResizableCanvas { setMap(new RaceMap(lat1, long1, lat2, long2, (int) getWidth(), (int) getHeight())); - this.markers = raceData.getMarkers(); + this.compoundMarks = raceData.getMarkers(); makeColours(); this.raceData = raceData; } @@ -201,15 +201,15 @@ public class ResizableRaceCanvas extends ResizableCanvas { } /** - * Draw race markers + * Draw race compoundMarks */ private void drawMarkers() { - for(Marker marker: markers) { - GraphCoordinate mark1 = this.map.convertGPS(marker.getMark1()); + for(CompoundMark compoundMark : compoundMarks) { + GraphCoordinate mark1 = this.map.convertGPS(compoundMark.getMark1()); // removed drawing of lines between the marks as only // the start and finish line should have a line drawn - if(marker.isCompoundMark()) { - GraphCoordinate mark2 = this.map.convertGPS(marker.getMark2()); + if(compoundMark.isCompoundMark()) { + GraphCoordinate mark2 = this.map.convertGPS(compoundMark.getMark2()); displayPoint(mark1, Color.LIMEGREEN); displayPoint(mark2, Color.LIMEGREEN); } else { diff --git a/visualiser/src/main/java/seng302/RaceDataSource.java b/visualiser/src/main/java/seng302/RaceDataSource.java index 5f2e52ad..a4aba9e6 100644 --- a/visualiser/src/main/java/seng302/RaceDataSource.java +++ b/visualiser/src/main/java/seng302/RaceDataSource.java @@ -1,8 +1,8 @@ package seng302; import seng302.Model.Boat; +import seng302.Model.CompoundMark; import seng302.Model.Leg; -import seng302.Model.Marker; import java.time.ZonedDateTime; import java.util.List; @@ -13,7 +13,7 @@ import java.util.List; public interface RaceDataSource { List getBoats(); List getLegs(); - List getMarkers(); + List getMarkers(); List getBoundary(); ZonedDateTime getZonedDateTime(); diff --git a/visualiser/src/main/java/seng302/RaceXMLReader.java b/visualiser/src/main/java/seng302/RaceXMLReader.java index ddab0b27..d615ddeb 100644 --- a/visualiser/src/main/java/seng302/RaceXMLReader.java +++ b/visualiser/src/main/java/seng302/RaceXMLReader.java @@ -89,10 +89,10 @@ public class RaceXMLReader extends XMLReader implements RaceDataSource { for (int i = 0; i < nLegs.getLength(); i++) { String label = getTextValueOfNode((Element) nLegs.item(i), "name"); NodeList start = ((Element) nLegs.item(i)).getElementsByTagName("start"); - Marker startMarker = getMarker(start); + CompoundMark startCompoundMark = getMarker(start); NodeList finish = ((Element) nLegs.item(i)).getElementsByTagName("finish"); - Marker finishMarker = getMarker(finish); - legs.add(new Leg(label, startMarker, finishMarker, i)); + CompoundMark finishCompoundMark = getMarker(finish); + legs.add(new Leg(label, startCompoundMark, finishCompoundMark, i)); } } @@ -172,7 +172,7 @@ public class RaceXMLReader extends XMLReader implements RaceDataSource { * @param start base nodelist this should be the tag that contains * @return */ - private Marker getMarker(NodeList start) { + private CompoundMark getMarker(NodeList start) { return getMarker(start, 0); } @@ -182,7 +182,7 @@ public class RaceXMLReader extends XMLReader implements RaceDataSource { * @param startIndex index in the node that has the coordinate tag * @return */ - private Marker getMarker(NodeList start, int startIndex) { + private CompoundMark getMarker(NodeList start, int startIndex) { return getMarker(start, startIndex, 0); } @@ -193,7 +193,7 @@ public class RaceXMLReader extends XMLReader implements RaceDataSource { * @param nodeIndex coordinate index * @return */ - private Marker getMarker(NodeList start, int startIndex, int nodeIndex) { + private CompoundMark getMarker(NodeList start, int startIndex, int nodeIndex) { NodeList nodeList = ((Element) start.item(startIndex)).getElementsByTagName("marker"); Element marker = (Element) nodeList.item(nodeIndex); return getMarker(marker); @@ -204,7 +204,7 @@ public class RaceXMLReader extends XMLReader implements RaceDataSource { * @param markerNode marker to turn into coordinates * @return */ - private Marker getMarker(Element markerNode) { + private CompoundMark getMarker(Element markerNode) { NodeList nCoordinates = markerNode.getElementsByTagName("coordinate"); @@ -215,7 +215,7 @@ public class RaceXMLReader extends XMLReader implements RaceDataSource { } else { side2 = side1; } - return new Marker(side1, side2); + return new CompoundMark(side1, side2); } @@ -265,7 +265,7 @@ public class RaceXMLReader extends XMLReader implements RaceDataSource { } @Override - public List getMarkers() { + public List getMarkers() { return null; } diff --git a/visualiser/src/main/resources/raceXML/bermuda_AC35.xml b/visualiser/src/main/resources/raceXML/bermuda_AC35.xml index ac75539e..943784ea 100644 --- a/visualiser/src/main/resources/raceXML/bermuda_AC35.xml +++ b/visualiser/src/main/resources/raceXML/bermuda_AC35.xml @@ -42,7 +42,7 @@ Start to Mark 1 - + 32.296577 -64.854304 @@ -51,29 +51,29 @@ 32.293771 -64.855242 - + - + 32.293039 -64.843983 - + Mark 1 to Leeward Gate - + 32.293039 -64.843983 - + - + 32.309693 -64.835249 @@ -82,13 +82,13 @@ 32.308046 -64.831785 - + Leeward Gate to Windward Gate - + 32.309693 -64.835249 @@ -97,10 +97,10 @@ 32.308046 -64.831785 - + - + 32.284680 -64.850045 @@ -109,13 +109,13 @@ 32.280164 -64.847591 - + Windward Gate to Leeward Gate - + 32.284680 -64.850045 @@ -124,10 +124,10 @@ 32.280164 -64.847591 - + - + 32.309693 -64.835249 @@ -136,13 +136,13 @@ 32.308046 -64.831785 - + Leeward Gate to Finish - + 32.309693 -64.835249 @@ -151,10 +151,10 @@ 32.308046 -64.831785 - + - + 32.317379 -64.839291 @@ -163,7 +163,7 @@ 32.317257 -64.836260 - + @@ -214,7 +214,7 @@ -64.849184 - + Start Line 32.296577 @@ -224,15 +224,15 @@ 32.293771 -64.855242 - - + + Mark 32.293039 -64.843983 - - + + Windward Gate 32.284680 @@ -242,8 +242,8 @@ 32.280164 -64.847591 - - + + Leeward Gate 32.309693 @@ -253,8 +253,8 @@ 32.308046 -64.831785 - - + + Finish Line 32.317379 @@ -264,6 +264,6 @@ 32.317257 -64.836260 - + diff --git a/visualiser/src/test/java/seng302/Mock/StreamedRaceTest.java b/visualiser/src/test/java/seng302/Mock/StreamedRaceTest.java index 946f9d93..98a1f986 100644 --- a/visualiser/src/test/java/seng302/Mock/StreamedRaceTest.java +++ b/visualiser/src/test/java/seng302/Mock/StreamedRaceTest.java @@ -5,7 +5,7 @@ import org.junit.Ignore; import org.junit.Test; import seng302.GPSCoordinate; import seng302.Model.Leg; -import seng302.Model.Marker; +import seng302.Model.CompoundMark; import java.util.List; @@ -87,8 +87,8 @@ public class StreamedRaceTest { GPSCoordinate topLeft = streamedCourseXMLReader.getMapTopLeft(); GPSCoordinate bottomRight = streamedCourseXMLReader.getMapBottomRight(); - for(Marker marker: streamedCourseXMLReader.getMarkers()) { - GPSCoordinate centre = marker.getAverageGPSCoordinate(); + for(CompoundMark compoundMark : streamedCourseXMLReader.getCompoundMarks()) { + GPSCoordinate centre = compoundMark.getAverageGPSCoordinate(); assertTrue(centre.getLatitude() < bottomRight.getLatitude()); assertTrue(centre.getLatitude() > topLeft.getLatitude()); assertTrue(centre.getLongitude() > bottomRight.getLongitude()); diff --git a/visualiser/src/test/java/seng302/Model/BoatInRaceTest.java b/visualiser/src/test/java/seng302/Model/BoatInRaceTest.java index 029a0f43..a761bac9 100644 --- a/visualiser/src/test/java/seng302/Model/BoatInRaceTest.java +++ b/visualiser/src/test/java/seng302/Model/BoatInRaceTest.java @@ -19,18 +19,18 @@ public class BoatInRaceTest { @Test public void calculateDueNorthAzimuthReturns0() { - Marker startMarker = new Marker(ORIGIN_COORDS); - Marker endMarker = new Marker(new GPSCoordinate(50, 0)); - Leg start = new Leg("Start", startMarker, endMarker, 0); + CompoundMark startCompoundMark = new CompoundMark(ORIGIN_COORDS); + CompoundMark endCompoundMark = new CompoundMark(new GPSCoordinate(50, 0)); + Leg start = new Leg("Start", startCompoundMark, endCompoundMark, 0); TEST_BOAT.setCurrentLeg(start); assertEquals(TEST_BOAT.calculateAzimuth(), 0, 1e-8); } @Test public void calculateDueSouthAzimuthReturns180() { - Marker startMarker = new Marker(ORIGIN_COORDS); - Marker endMarker = new Marker(new GPSCoordinate(-50, 0)); - Leg start = new Leg("Start", startMarker, endMarker, 0); + CompoundMark startCompoundMark = new CompoundMark(ORIGIN_COORDS); + CompoundMark endCompoundMark = new CompoundMark(new GPSCoordinate(-50, 0)); + Leg start = new Leg("Start", startCompoundMark, endCompoundMark, 0); TEST_BOAT.setCurrentLeg(start); assertEquals(TEST_BOAT.calculateAzimuth(), 180, 1e-8); } @@ -39,9 +39,9 @@ public class BoatInRaceTest { @Test public void calculateDueEastAzimuthReturns90() { - Marker startMarker = new Marker(ORIGIN_COORDS); - Marker endMarker = new Marker(new GPSCoordinate(0, 50)); - Leg start = new Leg("Start", startMarker, endMarker, 0); + CompoundMark startCompoundMark = new CompoundMark(ORIGIN_COORDS); + CompoundMark endCompoundMark = new CompoundMark(new GPSCoordinate(0, 50)); + Leg start = new Leg("Start", startCompoundMark, endCompoundMark, 0); TEST_BOAT.setCurrentLeg(start); assertEquals(TEST_BOAT.calculateAzimuth(), 90, 1e-8); } @@ -49,9 +49,9 @@ public class BoatInRaceTest { @Test public void calculateDueWestAzimuthReturnsNegative90() { - Marker startMarker = new Marker(ORIGIN_COORDS); - Marker endMarker = new Marker(new GPSCoordinate(0, -50)); - Leg start = new Leg("Start", startMarker, endMarker, 0); + CompoundMark startCompoundMark = new CompoundMark(ORIGIN_COORDS); + CompoundMark endCompoundMark = new CompoundMark(new GPSCoordinate(0, -50)); + Leg start = new Leg("Start", startCompoundMark, endCompoundMark, 0); TEST_BOAT.setCurrentLeg(start); assertEquals(TEST_BOAT.calculateAzimuth(), -90, 1e-8); @@ -60,9 +60,9 @@ public class BoatInRaceTest { @Test public void calculateDueNorthHeadingReturns0() { - Marker startMarker = new Marker(ORIGIN_COORDS); - Marker endMarker = new Marker(new GPSCoordinate(50, 0)); - Leg start = new Leg("Start", startMarker, endMarker, 0); + CompoundMark startCompoundMark = new CompoundMark(ORIGIN_COORDS); + CompoundMark endCompoundMark = new CompoundMark(new GPSCoordinate(50, 0)); + Leg start = new Leg("Start", startCompoundMark, endCompoundMark, 0); TEST_BOAT.setCurrentLeg(start); assertEquals(TEST_BOAT.calculateHeading(), 0, 1e-8); } @@ -70,27 +70,27 @@ public class BoatInRaceTest { @Test public void calculateDueEastHeadingReturns90() { - Marker startMarker = new Marker(ORIGIN_COORDS); - Marker endMarker = new Marker(new GPSCoordinate(0, 50)); - Leg start = new Leg("Start", startMarker, endMarker, 0); + CompoundMark startCompoundMark = new CompoundMark(ORIGIN_COORDS); + CompoundMark endCompoundMark = new CompoundMark(new GPSCoordinate(0, 50)); + Leg start = new Leg("Start", startCompoundMark, endCompoundMark, 0); TEST_BOAT.setCurrentLeg(start); assertEquals(TEST_BOAT.calculateHeading(), 90, 1e-8); } @Test public void calculateDueSouthHeadingReturns180() { - Marker startMarker = new Marker(ORIGIN_COORDS); - Marker endMarker = new Marker(new GPSCoordinate(-50, 0)); - Leg start = new Leg("Start", startMarker, endMarker, 0); + CompoundMark startCompoundMark = new CompoundMark(ORIGIN_COORDS); + CompoundMark endCompoundMark = new CompoundMark(new GPSCoordinate(-50, 0)); + Leg start = new Leg("Start", startCompoundMark, endCompoundMark, 0); TEST_BOAT.setCurrentLeg(start); assertEquals(TEST_BOAT.calculateHeading(), 180, 1e-8); } @Test public void calculateDueWestHeadingReturns270() { - Marker startMarker = new Marker(ORIGIN_COORDS); - Marker endMarker = new Marker(new GPSCoordinate(0, -50)); - Leg start = new Leg("Start", startMarker, endMarker, 0); + CompoundMark startCompoundMark = new CompoundMark(ORIGIN_COORDS); + CompoundMark endCompoundMark = new CompoundMark(new GPSCoordinate(0, -50)); + Leg start = new Leg("Start", startCompoundMark, endCompoundMark, 0); TEST_BOAT.setCurrentLeg(start); assertEquals(TEST_BOAT.calculateHeading(), 270, 1e-8); } @@ -117,16 +117,16 @@ public class BoatInRaceTest { BoatInRace boat = new BoatInRace("Test", 1, Color.ALICEBLUE, "tt"); // Construct leg of 0 degrees - Marker startMarker = new Marker(ORIGIN_COORDS); - Marker endMarker = new Marker(new GPSCoordinate(50, 0)); - Leg leg0deg = new Leg("Start", startMarker, endMarker, 0); + CompoundMark startCompoundMark = new CompoundMark(ORIGIN_COORDS); + CompoundMark endCompoundMark = new CompoundMark(new GPSCoordinate(50, 0)); + Leg leg0deg = new Leg("Start", startCompoundMark, endCompoundMark, 0); boat.setCurrentLeg(leg0deg); boat.setCurrentPosition(new GPSCoordinate(0, 0)); assertEquals(0, boat.calculateHeading(), 1e-8); // Construct leg from wake - heading should be 180 degrees - Leg leg180deg = new Leg("Start", startMarker, new Marker(boat.getWake()), 0); + Leg leg180deg = new Leg("Start", startCompoundMark, new CompoundMark(boat.getWake()), 0); boat.setCurrentLeg(leg180deg); assertEquals(180, boat.calculateHeading(), 1e-8); @@ -138,9 +138,9 @@ public class BoatInRaceTest { BoatInRace boat = new BoatInRace("Test", 10, Color.ALICEBLUE, "tt"); // Construct leg of 0 degrees at 0 N - Marker startMarker = new Marker(ORIGIN_COORDS); - Marker endMarker = new Marker(new GPSCoordinate(50, 0)); - Leg leg0deg = new Leg("Start", startMarker, endMarker, 0); + CompoundMark startCompoundMark = new CompoundMark(ORIGIN_COORDS); + CompoundMark endCompoundMark = new CompoundMark(new GPSCoordinate(50, 0)); + Leg leg0deg = new Leg("Start", startCompoundMark, endCompoundMark, 0); boat.setCurrentLeg(leg0deg); boat.setCurrentPosition(new GPSCoordinate(0, 0)); diff --git a/visualiser/src/test/java/seng302/Model/MarkerTest.java b/visualiser/src/test/java/seng302/Model/CompoundMarkTest.java similarity index 77% rename from visualiser/src/test/java/seng302/Model/MarkerTest.java rename to visualiser/src/test/java/seng302/Model/CompoundMarkTest.java index 420c5eff..9323a5ea 100644 --- a/visualiser/src/test/java/seng302/Model/MarkerTest.java +++ b/visualiser/src/test/java/seng302/Model/CompoundMarkTest.java @@ -8,14 +8,14 @@ import static org.junit.Assert.assertTrue; /** * Created by esa46 on 29/03/17. */ -public class MarkerTest { +public class CompoundMarkTest { private final GPSCoordinate ORIGIN_COORD = new GPSCoordinate(0, 0); @Test public void averageOfSingleMarkAtOriginIsSingleMark() { - Marker testMark = new Marker(ORIGIN_COORD); + CompoundMark testMark = new CompoundMark(ORIGIN_COORD); assertTrue(testMark.getAverageGPSCoordinate().equals(ORIGIN_COORD)); } @@ -24,7 +24,7 @@ public class MarkerTest { public void averageOfSingleMarkIsSingleMark() { GPSCoordinate testCoord = new GPSCoordinate(20, 25); - Marker testMark = new Marker(testCoord); + CompoundMark testMark = new CompoundMark(testCoord); assertTrue(testMark.getAverageGPSCoordinate().equals(testCoord)); } @@ -33,7 +33,7 @@ public class MarkerTest { public void averageLatOfTwoMarksIsAccurate() { GPSCoordinate testCoord = new GPSCoordinate(10, 0); - Marker testMark = new Marker(ORIGIN_COORD, testCoord); + CompoundMark testMark = new CompoundMark(ORIGIN_COORD, testCoord); assertTrue(testMark.getAverageGPSCoordinate().equals(new GPSCoordinate(5, 0))); } @@ -41,7 +41,7 @@ public class MarkerTest { public void averageLongOfTwoMarksIsAccurate() { GPSCoordinate testCoord = new GPSCoordinate(0, 10); - Marker testMark = new Marker(ORIGIN_COORD, testCoord); + CompoundMark testMark = new CompoundMark(ORIGIN_COORD, testCoord); assertTrue(testMark.getAverageGPSCoordinate().equals(new GPSCoordinate(0, 5))); } @@ -50,7 +50,7 @@ public class MarkerTest { GPSCoordinate testCoord1 = new GPSCoordinate(10, 30); GPSCoordinate testCoord2 = new GPSCoordinate(30, 60); - Marker testMark = new Marker(testCoord1, testCoord2); + CompoundMark testMark = new CompoundMark(testCoord1, testCoord2); assertTrue(testMark.getAverageGPSCoordinate().equals(new GPSCoordinate(020.644102, 44.014817))); } diff --git a/visualiser/src/test/java/seng302/Model/ConstantVelocityRaceTest.java b/visualiser/src/test/java/seng302/Model/ConstantVelocityRaceTest.java index 3094dad4..4985c69f 100644 --- a/visualiser/src/test/java/seng302/Model/ConstantVelocityRaceTest.java +++ b/visualiser/src/test/java/seng302/Model/ConstantVelocityRaceTest.java @@ -17,8 +17,8 @@ // */ //public class ConstantVelocityRaceTest { // -// Marker START_MARKER = new Marker(new GPSCoordinate(0, 0)); -// Marker END_MARKER = new Marker(new GPSCoordinate(10, 10)); +// CompoundMark START_MARKER = new CompoundMark(new GPSCoordinate(0, 0)); +// CompoundMark END_MARKER = new CompoundMark(new GPSCoordinate(10, 10)); // Leg START_LEG = new Leg("Start", START_MARKER, END_MARKER, 0); // // int ONE_HOUR = 3600000; //1 hour in milliseconds diff --git a/visualiser/src/test/java/seng302/Model/LegTest.java b/visualiser/src/test/java/seng302/Model/LegTest.java index 470d3168..bba971ae 100644 --- a/visualiser/src/test/java/seng302/Model/LegTest.java +++ b/visualiser/src/test/java/seng302/Model/LegTest.java @@ -14,7 +14,7 @@ import static junit.framework.TestCase.assertEquals; */ public class LegTest { - private final Marker ORIGIN_MARKER = new Marker(new GPSCoordinate(0, 0)); + private final CompoundMark ORIGIN_CompoundMark = new CompoundMark(new GPSCoordinate(0, 0)); @Test public void calculateDistanceHandles5nmNorth() { @@ -22,8 +22,8 @@ public class LegTest { calc.setStartingGeographicPoint(0, 0); calc.setDirection(0, 5 * Constants.NMToMetersConversion); - Marker endMarker = getEndMarker(calc.getDestinationGeographicPoint()); - Leg test = new Leg("Test", ORIGIN_MARKER, endMarker, 0); + CompoundMark endCompoundMark = getEndMarker(calc.getDestinationGeographicPoint()); + Leg test = new Leg("Test", ORIGIN_CompoundMark, endCompoundMark, 0); assertEquals(test.getDistance(), 5, 1e-8); } @@ -33,8 +33,8 @@ public class LegTest { calc.setStartingGeographicPoint(0, 0); calc.setDirection(90, 12 * Constants.NMToMetersConversion); - Marker endMarker = getEndMarker(calc.getDestinationGeographicPoint()); - Leg test = new Leg("Test", ORIGIN_MARKER, endMarker, 0); + CompoundMark endCompoundMark = getEndMarker(calc.getDestinationGeographicPoint()); + Leg test = new Leg("Test", ORIGIN_CompoundMark, endCompoundMark, 0); assertEquals(test.getDistance(), 12, 1e-8); } @@ -44,8 +44,8 @@ public class LegTest { calc.setStartingGeographicPoint(0, 0); calc.setDirection(180, 0.5 * Constants.NMToMetersConversion); - Marker endMarker = getEndMarker(calc.getDestinationGeographicPoint()); - Leg test = new Leg("Test", ORIGIN_MARKER, endMarker, 0); + CompoundMark endCompoundMark = getEndMarker(calc.getDestinationGeographicPoint()); + Leg test = new Leg("Test", ORIGIN_CompoundMark, endCompoundMark, 0); assertEquals(test.getDistance(), 0.5, 1e-8); } @@ -55,23 +55,23 @@ public class LegTest { calc.setStartingGeographicPoint(0, 0); calc.setDirection(-90, 0.1 * Constants.NMToMetersConversion); - Marker endMarker = getEndMarker(calc.getDestinationGeographicPoint()); - Leg test = new Leg("Test", ORIGIN_MARKER, endMarker, 0); + CompoundMark endCompoundMark = getEndMarker(calc.getDestinationGeographicPoint()); + Leg test = new Leg("Test", ORIGIN_CompoundMark, endCompoundMark, 0); assertEquals(test.getDistance(), 0.1, 1e-8); } @Test public void calculateDistanceHandlesZeroDifference() { - Leg test = new Leg("Test", ORIGIN_MARKER, ORIGIN_MARKER, 0); + Leg test = new Leg("Test", ORIGIN_CompoundMark, ORIGIN_CompoundMark, 0); assertEquals(test.getDistance(), 0, 1e-8); } - private Marker getEndMarker(Point2D point) { + private CompoundMark getEndMarker(Point2D point) { GPSCoordinate coords = new GPSCoordinate(point.getY(), point.getX()); - return new Marker(coords); + return new CompoundMark(coords); } } diff --git a/visualiser/src/test/resources/raceXML/bermuda_AC35.xml b/visualiser/src/test/resources/raceXML/bermuda_AC35.xml index 716f274b..b1b3a3b0 100644 --- a/visualiser/src/test/resources/raceXML/bermuda_AC35.xml +++ b/visualiser/src/test/resources/raceXML/bermuda_AC35.xml @@ -41,7 +41,7 @@ Start to Mark 1 - + 32.296577 -64.854304 @@ -50,29 +50,29 @@ 32.293771 -64.855242 - + - + 32.293039 -64.843983 - + Mark 1 to Leeward Gate - + 32.293039 -64.843983 - + - + 32.309693 -64.835249 @@ -81,13 +81,13 @@ 32.308046 -64.831785 - + Leeward Gate to Windward Gate - + 32.309693 -64.835249 @@ -96,10 +96,10 @@ 32.308046 -64.831785 - + - + 32.284680 -64.850045 @@ -108,13 +108,13 @@ 32.280164 -64.847591 - + Windward Gate to Leeward Gate - + 32.284680 -64.850045 @@ -123,10 +123,10 @@ 32.280164 -64.847591 - + - + 32.309693 -64.835249 @@ -135,13 +135,13 @@ 32.308046 -64.831785 - + Leeward Gate to Finish - + 32.309693 -64.835249 @@ -150,10 +150,10 @@ 32.308046 -64.831785 - + - + 32.317379 -64.839291 @@ -162,7 +162,7 @@ 32.317257 -64.836260 - + @@ -213,7 +213,7 @@ -64.849184 - + Start Line 32.296577 @@ -223,15 +223,15 @@ 32.293771 -64.855242 - - + + Mark 32.293039 -64.843983 - - + + Windward Gate 32.284680 @@ -241,8 +241,8 @@ 32.280164 -64.847591 - - + + Leeward Gate 32.309693 @@ -252,8 +252,8 @@ 32.308046 -64.831785 - - + + Finish Line 32.317379 @@ -263,6 +263,6 @@ 32.317257 -64.836260 - +