Added course limit, course and marker seq field to xml fiule of race info

#story[778]
main
Erika Savell 9 years ago
parent 737755def6
commit fdba50f9d2

@ -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; }
}

Loading…
Cancel
Save