Added course limit, course and marker seq field to xml fiule of race info
#story[778]
This commit is contained in:
@@ -32,7 +32,7 @@ public class RaceData {
|
||||
private OffsetDateTime creationTimeDate;
|
||||
private OffsetDateTime raceStartTime;
|
||||
private List<BoatInRace> participants;
|
||||
private List<Leg> course;
|
||||
private List<Marker> course;
|
||||
private List<GPSCoordinate> courseLimit;
|
||||
|
||||
public RaceData(RaceDataSource dataSource) {
|
||||
@@ -42,7 +42,7 @@ public class RaceData {
|
||||
creationTimeDate = OffsetDateTime.now();
|
||||
raceStartTime = OffsetDateTime.now().plusMinutes(3);
|
||||
participants = dataSource.getBoats();
|
||||
course = dataSource.getLegs();
|
||||
course = dataSource.getMarkers();
|
||||
courseLimit = dataSource.getBoundary();
|
||||
}
|
||||
|
||||
@@ -55,29 +55,82 @@ public class RaceData {
|
||||
|
||||
// root elements
|
||||
Document doc = docBuilder.newDocument();
|
||||
Element rootElement = doc.createElement("Race");
|
||||
doc.appendChild(rootElement);
|
||||
|
||||
// shorten way
|
||||
// staff.setAttribute("id", "1");
|
||||
Element raceElement = doc.createElement("Race");
|
||||
doc.appendChild(raceElement);
|
||||
|
||||
Element raceIdElement = doc.createElement("RaceID");
|
||||
raceIdElement.appendChild(doc.createTextNode(raceID));
|
||||
rootElement.appendChild(raceIdElement);
|
||||
raceElement.appendChild(raceIdElement);
|
||||
|
||||
Element raceTypeElement = doc.createElement("RaceType");
|
||||
raceTypeElement.appendChild(doc.createTextNode(raceType));
|
||||
rootElement.appendChild(raceTypeElement);
|
||||
raceElement.appendChild(raceTypeElement);
|
||||
|
||||
Element creationTimeElement = doc.createElement("CreationTimeDate");
|
||||
creationTimeElement.appendChild(doc.createTextNode(creationTimeDate.toString()));
|
||||
rootElement.appendChild(creationTimeElement);
|
||||
raceElement.appendChild(creationTimeElement);
|
||||
|
||||
Element startTimeElement = doc.createElement("RaceStartTime");
|
||||
startTimeElement.setAttribute("Time", raceStartTime.toString());
|
||||
startTimeElement.setAttribute("Postpone", "false");
|
||||
rootElement.appendChild(startTimeElement);
|
||||
raceElement.appendChild(startTimeElement);
|
||||
|
||||
//PARTICIPANTS
|
||||
|
||||
Element courseElement = doc.createElement("Course");
|
||||
Element compoundMarkSeqElement = doc.createElement("CompoundMarkSequence");
|
||||
|
||||
int i = 1;
|
||||
for (Marker marker : course) {
|
||||
Element compoundMarkElement = doc.createElement("CompoundMark");
|
||||
compoundMarkElement.setAttribute("CompoundMarkId", i + "");
|
||||
compoundMarkElement.setAttribute("Name", marker.getName());
|
||||
|
||||
Element mark1 = doc.createElement("Mark");
|
||||
mark1.setAttribute("TargetLat", marker.getMark1().getLatitude() + "");
|
||||
mark1.setAttribute("TargetLng", marker.getMark1().getLongitude() + "");
|
||||
|
||||
compoundMarkElement.appendChild(mark1);
|
||||
|
||||
if (!(marker.getMark1().equals(marker.getMark2()))) {
|
||||
Element mark2 = doc.createElement("Mark");
|
||||
mark2.setAttribute("TargetLat", marker.getMark2().getLatitude() + "");
|
||||
mark2.setAttribute("TargetLng", marker.getMark2().getLongitude() + "");
|
||||
compoundMarkElement.appendChild(mark2);
|
||||
}
|
||||
|
||||
courseElement.appendChild(compoundMarkElement);
|
||||
|
||||
|
||||
Element cornerElement = doc.createElement("Corner");
|
||||
cornerElement.setAttribute("SeqID", i + "");
|
||||
cornerElement.setAttribute("CompoundMarkID", i + "");
|
||||
|
||||
compoundMarkSeqElement.appendChild(cornerElement);
|
||||
|
||||
i++;
|
||||
}
|
||||
|
||||
raceElement.appendChild(compoundMarkSeqElement);
|
||||
raceElement.appendChild(courseElement);
|
||||
|
||||
|
||||
int j = 1;
|
||||
|
||||
Element courseLimitElement = doc.createElement("CourseLimit");
|
||||
for (GPSCoordinate coordinate : courseLimit) {
|
||||
Element limitElement = doc.createElement("Limit");
|
||||
limitElement.setAttribute("SeqID", j + "");
|
||||
|
||||
limitElement.setAttribute("Lat", coordinate.getLatitude() + "");
|
||||
limitElement.setAttribute("Lon", coordinate.getLongitude() + "");
|
||||
|
||||
courseLimitElement.appendChild(limitElement);
|
||||
|
||||
j++;
|
||||
}
|
||||
|
||||
raceElement.appendChild(courseLimitElement);
|
||||
|
||||
|
||||
// write the content into xml file
|
||||
|
||||
@@ -54,8 +54,8 @@ public class GPSCoordinate {
|
||||
|
||||
GPSCoordinate that = (GPSCoordinate) o;
|
||||
|
||||
if (Math.abs(this.latitude - latitude) > 1e-6) return false;
|
||||
return (Math.abs(this.longitude - longitude) < 1e-6);
|
||||
if (Math.abs(this.latitude - that.latitude) > 1e-7) return false;
|
||||
return (Math.abs(this.longitude - that.longitude) < 1e-7);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -13,6 +13,8 @@ public class Marker {
|
||||
private GPSCoordinate averageGPSCoordinate;
|
||||
private GPSCoordinate mark1;
|
||||
private GPSCoordinate mark2;
|
||||
private String name;
|
||||
private boolean doubleMarker = false;
|
||||
|
||||
public Marker(GPSCoordinate mark1) {
|
||||
|
||||
@@ -30,6 +32,15 @@ public class Marker {
|
||||
|
||||
}
|
||||
|
||||
public Marker(String name, GPSCoordinate mark1, GPSCoordinate mark2) {
|
||||
|
||||
this.name = name;
|
||||
this.mark1 = mark1;
|
||||
this.mark2 = mark2;
|
||||
this.averageGPSCoordinate = calculateAverage();
|
||||
|
||||
}
|
||||
|
||||
public GPSCoordinate getMark1() {
|
||||
return mark1;
|
||||
}
|
||||
@@ -42,6 +53,9 @@ public class Marker {
|
||||
return averageGPSCoordinate;
|
||||
}
|
||||
|
||||
public String getName() {
|
||||
return name;
|
||||
}
|
||||
|
||||
private GPSCoordinate calculateAverage() {
|
||||
|
||||
|
||||
@@ -27,7 +27,6 @@ public class RaceClock {
|
||||
LocalDateTime localDateTime = LocalDateTime.now(zoneId);
|
||||
ZonedDateTime zonedDateTime = localDateTime.atZone(zoneId);
|
||||
dateTimeFormatter = DateTimeFormatter.ofPattern("dd-MM HH:mm:ss z");
|
||||
// System.out.println(dateTimeFormatter.format(zonedDateTime));
|
||||
time = new SimpleStringProperty(dateTimeFormatter.format(zonedDateTime));
|
||||
DateTimeFormatter timeZoneFormatter = DateTimeFormatter.ofPattern("z");
|
||||
timeZone = timeZoneFormatter.format(zonedDateTime);
|
||||
|
||||
@@ -2,6 +2,7 @@ package seng302;
|
||||
|
||||
import seng302.Model.BoatInRace;
|
||||
import seng302.Model.Leg;
|
||||
import seng302.Model.Marker;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
@@ -12,6 +13,7 @@ public interface RaceDataSource {
|
||||
List<BoatInRace> getBoats();
|
||||
List<Leg> getLegs();
|
||||
List<GPSCoordinate> getBoundary();
|
||||
List<Marker> getMarkers();
|
||||
|
||||
String getRaceId();
|
||||
|
||||
|
||||
@@ -25,6 +25,7 @@ public class RaceXMLReader extends XMLReader implements RaceDataSource {
|
||||
private GPSCoordinate mapTopLeft, mapBottomRight;
|
||||
private List<GPSCoordinate> boundary = new ArrayList<>();
|
||||
private static double COORDINATEPADDING = 0.0005;
|
||||
private List<Marker> markers = new ArrayList<>();
|
||||
|
||||
/**
|
||||
* Constractor for Race XML
|
||||
@@ -59,13 +60,13 @@ public class RaceXMLReader extends XMLReader implements RaceDataSource {
|
||||
readID();
|
||||
readCourse();
|
||||
readLegs();
|
||||
readMarkers();
|
||||
readBoats();
|
||||
}
|
||||
|
||||
public void readID() {
|
||||
|
||||
NodeList race = doc.getElementsByTagName("race");
|
||||
System.out.println(race.getLength());
|
||||
|
||||
raceID = getTextValueOfNode((Element) race.item(0), "raceId");
|
||||
}
|
||||
@@ -90,6 +91,21 @@ public class RaceXMLReader extends XMLReader implements RaceDataSource {
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Read all the boats in the XML file
|
||||
*/
|
||||
public void readMarkers() {
|
||||
//get all boats
|
||||
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);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Read all the legs in the XML file
|
||||
*/
|
||||
@@ -225,8 +241,8 @@ public class RaceXMLReader extends XMLReader implements RaceDataSource {
|
||||
} else {
|
||||
side2 = side1;
|
||||
}
|
||||
return new Marker(side1, side2);
|
||||
|
||||
NodeList name = markerNode.getElementsByTagName("name");
|
||||
return name.getLength() == 1 ? new Marker(getTextValueOfNode((Element) markerNode, "name"), side1, side2) : new Marker(side1, side2);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -331,4 +347,6 @@ public class RaceXMLReader extends XMLReader implements RaceDataSource {
|
||||
}
|
||||
|
||||
public String getRaceId() { return raceID; }
|
||||
|
||||
public List<Marker> getMarkers() { return markers; }
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user