From 0f89cd78755135ac52b1b50aa4abd1c2850bd23f Mon Sep 17 00:00:00 2001 From: Dennis Guse Date: Sun, 28 Feb 2021 18:13:57 +0100 Subject: [PATCH] GPX: support multiple tracks. Fixes #617. --- doc/data-exportimport.txt | 12 +---------- .../io/file/exporter/GPXTrackExporter.java | 21 +++++++------------ 2 files changed, 9 insertions(+), 24 deletions(-) diff --git a/doc/data-exportimport.txt b/doc/data-exportimport.txt index 53a3937f1..c8310c7ff 100644 --- a/doc/data-exportimport.txt +++ b/doc/data-exportimport.txt @@ -2,17 +2,7 @@ interface TrackExporter { } class KmzTrackExporter implements TrackExporter -KmzTrackExporter o-- FileTrackExporter -class FileTrackExporter implements TrackExporter { -/' One track only '/ -} -FileTrackExporter o-- TrackWriter - -interface TrackWriter { -} -class GpxTrackWriter implements TrackWriter -class KmlTrackWriter implements TrackWriter - +class KmlTrackExporter implements TrackExporter interface TrackImporter { } diff --git a/src/main/java/de/dennisguse/opentracks/io/file/exporter/GPXTrackExporter.java b/src/main/java/de/dennisguse/opentracks/io/file/exporter/GPXTrackExporter.java index 9963f80a0..33cf6920d 100644 --- a/src/main/java/de/dennisguse/opentracks/io/file/exporter/GPXTrackExporter.java +++ b/src/main/java/de/dennisguse/opentracks/io/file/exporter/GPXTrackExporter.java @@ -91,15 +91,16 @@ public class GPXTrackExporter implements TrackExporter { @Override public boolean writeTrack(Track[] tracks, @NonNull OutputStream outputStream) { - Track mainTrack = tracks[0]; try { prepare(outputStream); - writeHeader(mainTrack); - - writeMarkers(mainTrack); + writeHeader(); for (Track track : tracks) { - writeLocations(track); + writeMarkers(track); + } + + for (Track track : tracks) { + writeTrackPoints(track); } writeFooter(); @@ -112,7 +113,7 @@ public class GPXTrackExporter implements TrackExporter { } } - private void writeLocations(Track track) throws InterruptedException { + private void writeTrackPoints(Track track) throws InterruptedException { boolean wroteTrack = false; boolean wroteSegment = false; @@ -183,7 +184,7 @@ public class GPXTrackExporter implements TrackExporter { } - public void writeHeader(Track track) { + public void writeHeader() { if (printWriter != null) { printWriter.println(""); printWriter.println(""); - - printWriter.println(""); - - printWriter.println("" + StringUtils.formatCData(track.getName()) + ""); - printWriter.println("" + StringUtils.formatCData(track.getDescription()) + ""); - printWriter.println(""); } }