X-Git-Url: http://wamblee.org/gitweb/?a=blobdiff_plain;f=gps%2Fsrc%2Fmain%2Fjava%2Forg%2Fwamblee%2Fgpx%2FGpxParser.java;h=686c8d0843684aa461c69a4358bd81c19d48734c;hb=698d0d066b8cc06d28c3cc9160ed0d897ac44606;hp=9f544a9a48c8fcb0bf98fd9bfdc2b32253c4eb78;hpb=0ef9fcaa10df47bac114bda9264981396fb18c49;p=utils diff --git a/gps/src/main/java/org/wamblee/gpx/GpxParser.java b/gps/src/main/java/org/wamblee/gpx/GpxParser.java index 9f544a9a..686c8d08 100644 --- a/gps/src/main/java/org/wamblee/gpx/GpxParser.java +++ b/gps/src/main/java/org/wamblee/gpx/GpxParser.java @@ -23,7 +23,10 @@ import java.util.List; import org.dom4j.Document; import org.dom4j.Element; import org.wamblee.gps.track.Track; +import org.wamblee.gps.track.TrackImpl; import org.wamblee.gps.track.TrackPoint; +import org.wamblee.gps.track.TrackSegment; +import org.wamblee.gps.track.TrackSegmentImpl; import org.wamblee.xml.DomUtils; import org.wamblee.xml.XMLException; @@ -40,32 +43,38 @@ public class GpxParser { // Empty. } - public Track parse(InputStream aIs) throws XMLException { + public Track parse(String aDescription, InputStream aIs) throws XMLException { Document doc = DomUtils.convert(DomUtils.read(aIs)); - return parse(doc); + return parse(aDescription, doc); } /** * @param doc */ - public Track parse(Document doc) { - Track result = new Track(); + public Track parse(String aDescription, Document doc) { + TrackImpl result = new TrackImpl(aDescription); List tracks = doc.getRootElement().elements("trk"); if ( tracks != null ) { - for (Element track: tracks) { + for (Element track: tracks) { + String trackName = track.elementText("name"); + TrackSegmentImpl trackSegment = new TrackSegmentImpl(trackName); + result.addSegment(trackSegment); List segments = track.elements("trkseg"); if ( segments != null ) { - for (Element segment: segments) { - parseTrackPoints(result, segment.elementIterator("trkpt")); + for (Element segment: segments) { + parseTrackPoints(trackSegment, segment.elementIterator("trkpt")); } } } } List routes = doc.getRootElement().elements("rte"); - if ( routes != null ) { - for (Element route: routes) { - parseTrackPoints(result, route.elementIterator("rtept")); + if ( routes != null ) { + for (Element route: routes) { + String routeName = route.elementText("desc"); + TrackSegmentImpl trackSegment = new TrackSegmentImpl(routeName); + result.addSegment(trackSegment); + parseTrackPoints(trackSegment, route.elementIterator("rtept")); } } @@ -73,7 +82,7 @@ public class GpxParser { } - private void parseTrackPoints(Track aTrack, Iterator aPoints) { + private void parseTrackPoints(TrackSegmentImpl aTrack, Iterator aPoints) { while (aPoints.hasNext()) { Element point = aPoints.next(); aTrack.addPoint(parseTrackPoint(point));