Skip to content

Commit

Permalink
preparing get temperature
Browse files Browse the repository at this point in the history
  • Loading branch information
cpesch committed Aug 25, 2016
1 parent 73045ef commit 3792137
Show file tree
Hide file tree
Showing 2 changed files with 32 additions and 1 deletion.
Original file line number Diff line number Diff line change
Expand Up @@ -191,6 +191,8 @@ public <T> T getOrigin(Class<T> resultClass) {
public GpxPosition asGpxPosition() {
GpxPosition position = super.asGpxPosition();
position.setHeading(getHeading());
position.setPressure(getPressure());
position.setTemperature(getTemperature());
position.setHdop(getHdop());
position.setPdop(getPdop());
position.setVdop(getVdop());
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -166,6 +166,7 @@ private List<GpxPosition> extractTrack(TrkType trkType, boolean hasSpeedInKiloMe
if (trkType != null) {
for (TrksegType trkSegType : trkType.getTrkseg()) {
for (WptType wptType : trkSegType.getTrkpt()) {
Double t = getTemperature(wptType);
positions.add(new GpxPosition(wptType.getLon(), wptType.getLat(), wptType.getEle(), getSpeed(wptType, hasSpeedInKiloMeterPerHourInsteadOfMeterPerSecond), getHeading(wptType), parseXMLTime(wptType.getTime()), asDescription(wptType.getName(), wptType.getDesc()), wptType.getHdop(), wptType.getPdop(), wptType.getVdop(), wptType.getSat(), wptType));
}
}
Expand Down Expand Up @@ -201,7 +202,7 @@ private Double getSpeed(WptType wptType, boolean hasSpeedInKiloMeterPerHourInste
result = asKmh(result);
}

// generic reading of speed elements
// generic reading of speed elements
} else if ("speed".equals(element.getLocalName())) {
result = parseDouble(element.getTextContent());
// everything is converted from m/s to Km/h except for the exceptional case
Expand Down Expand Up @@ -341,6 +342,34 @@ private void setHeading(WptType wptType, Double heading) {
wptType.setExtensions(null);
}

private Double getTemperature(WptType wptType) {
Double result = null;
ExtensionsType extensions = wptType.getExtensions();
if (extensions != null) {
for (Object any : extensions.getAny()) {
if (any instanceof JAXBElement) {
Object anyValue = ((JAXBElement) any).getValue();
if (anyValue instanceof TrackPointExtensionT) {
TrackPointExtensionT trackPoint = (TrackPointExtensionT) anyValue;
result = trackPoint.getAtemp();
}

} else if (any instanceof Element) {
Element element = (Element) any;

// TrackPointExtension v1
if ("TrackPointExtension".equals(element.getLocalName())) {
Node firstChild = element.getFirstChild();
if (firstChild != null && "atemp".equals(firstChild.getLocalName())) {
result = parseDouble(element.getTextContent());
}
}
}
}
}
return result;
}

private void setExtension(WptType wptType, String extensionNameToRemove, String extensionNameToAdd, Object extensionToAdd) {
if (wptType.getExtensions() == null)
wptType.setExtensions(new ObjectFactory().createExtensionsType());
Expand Down

0 comments on commit 3792137

Please sign in to comment.