|
|
|
|
@ -7,6 +7,7 @@ import shared.exceptions.XMLReaderException;
|
|
|
|
|
import shared.model.CompoundMark;
|
|
|
|
|
import shared.model.Corner;
|
|
|
|
|
import shared.model.GPSCoordinate;
|
|
|
|
|
import shared.model.Mark;
|
|
|
|
|
|
|
|
|
|
import javax.xml.bind.JAXBContext;
|
|
|
|
|
import javax.xml.bind.JAXBException;
|
|
|
|
|
@ -56,21 +57,9 @@ public class RaceXMLCreator {
|
|
|
|
|
Race.Course.CompoundMark cm = raceFactory.createRaceCourseCompoundMark();
|
|
|
|
|
cm.setName(mark.getName());
|
|
|
|
|
cm.setCompoundMarkID(String.valueOf(mark.getId()));
|
|
|
|
|
if (mark.getMark1() != null){
|
|
|
|
|
Race.Course.CompoundMark.Mark m1 = raceFactory.createRaceCourseCompoundMarkMark();
|
|
|
|
|
m1.setName(mark.getMark1().getName());
|
|
|
|
|
m1.setTargetLat(String.valueOf(mark.getMark1().getPosition().getLatitude()));
|
|
|
|
|
m1.setTargetLng(String.valueOf(mark.getMark1().getPosition().getLongitude()));
|
|
|
|
|
m1.setSourceID(String.valueOf(mark.getMark1().getSourceID()));
|
|
|
|
|
cm.getMark().add(m1);
|
|
|
|
|
}
|
|
|
|
|
//make this not copy paste later but just need the concept working right now
|
|
|
|
|
if (mark.getMark2() != null){
|
|
|
|
|
Race.Course.CompoundMark.Mark m2 = raceFactory.createRaceCourseCompoundMarkMark();
|
|
|
|
|
m2.setName(mark.getMark1().getName());
|
|
|
|
|
m2.setTargetLat(String.valueOf(mark.getMark1().getPosition().getLatitude()));
|
|
|
|
|
m2.setTargetLng(String.valueOf(mark.getMark1().getPosition().getLongitude()));
|
|
|
|
|
m2.setSourceID(String.valueOf(mark.getMark1().getSourceID()));
|
|
|
|
|
cm.getMark().add(setMarkFromMark(raceFactory, mark.getMark1()));
|
|
|
|
|
Race.Course.CompoundMark.Mark m2 = setMarkFromMark(raceFactory, mark.getMark2());
|
|
|
|
|
if (m2 != null) {
|
|
|
|
|
cm.getMark().add(m2);
|
|
|
|
|
}
|
|
|
|
|
course.getCompoundMark().add(cm);
|
|
|
|
|
@ -91,6 +80,18 @@ public class RaceXMLCreator {
|
|
|
|
|
return race;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public static Race.Course.CompoundMark.Mark setMarkFromMark(RaceFactory raceFactory, Mark mark){
|
|
|
|
|
if (mark != null) {
|
|
|
|
|
Race.Course.CompoundMark.Mark m = raceFactory.createRaceCourseCompoundMarkMark();
|
|
|
|
|
m.setName(mark.getName());
|
|
|
|
|
m.setTargetLat(String.valueOf(mark.getPosition().getLatitude()));
|
|
|
|
|
m.setTargetLng(String.valueOf(mark.getPosition().getLongitude()));
|
|
|
|
|
m.setSourceID(String.valueOf(mark.getSourceID()));
|
|
|
|
|
return m;
|
|
|
|
|
}
|
|
|
|
|
return null;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public static String alterRaceToWind(String s, double degrees) throws XMLReaderException, InvalidRaceDataException, JAXBException {
|
|
|
|
|
RaceXMLReader reader = new RaceXMLReader(s, XMLFileType.ResourcePath);
|
|
|
|
|
|
|
|
|
|
@ -103,6 +104,15 @@ public class RaceXMLCreator {
|
|
|
|
|
limit.setLon(String.valueOf(rotatedLim.getLongitude()));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
for(Race.Course.CompoundMark compoundMark: race.getCourse().getCompoundMark()){
|
|
|
|
|
for (Race.Course.CompoundMark.Mark mark: compoundMark.getMark()){
|
|
|
|
|
System.out.println(mark);
|
|
|
|
|
GPSCoordinate rotatedMark = rotate(center, markToGPSCoordinate(mark), degrees);
|
|
|
|
|
mark.setTargetLat(String.valueOf(rotatedMark.getLatitude()));
|
|
|
|
|
mark.setTargetLng(String.valueOf(rotatedMark.getLongitude()));
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
JAXBContext context = JAXBContext.newInstance(Race.class);
|
|
|
|
|
Marshaller jaxbMarshaller = context.createMarshaller();
|
|
|
|
|
jaxbMarshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true);
|
|
|
|
|
@ -127,6 +137,10 @@ public class RaceXMLCreator {
|
|
|
|
|
return new GPSCoordinate(resLat, resLon);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public static GPSCoordinate markToGPSCoordinate(Race.Course.CompoundMark.Mark mark){
|
|
|
|
|
return new GPSCoordinate(Double.parseDouble(mark.getTargetLat()), Double.parseDouble(mark.getTargetLng()));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public static GPSCoordinate getCenter(Race race){
|
|
|
|
|
double avgLat = 0;
|
|
|
|
|
double avgLng = 0;
|
|
|
|
|
|