From 3b92303511ce855d54c2f22324ec005e181c8e2e Mon Sep 17 00:00:00 2001 From: Dennis Guse Date: Fri, 30 Apr 2021 22:32:42 +0200 Subject: [PATCH] Cleanup: move GPX-specific importer code to GPX importer. --- .../importer/AbstractFileTrackImporter.java | 58 +---------------- .../file/importer/GpxFileTrackImporter.java | 64 +++++++++++++++++++ .../file/importer/KmlFileTrackImporter.java | 1 - 3 files changed, 66 insertions(+), 57 deletions(-) diff --git a/src/main/java/de/dennisguse/opentracks/io/file/importer/AbstractFileTrackImporter.java b/src/main/java/de/dennisguse/opentracks/io/file/importer/AbstractFileTrackImporter.java index 8a9483544..b5854987d 100644 --- a/src/main/java/de/dennisguse/opentracks/io/file/importer/AbstractFileTrackImporter.java +++ b/src/main/java/de/dennisguse/opentracks/io/file/importer/AbstractFileTrackImporter.java @@ -430,7 +430,7 @@ abstract class AbstractFileTrackImporter extends DefaultHandler implements Track return null; } - private TrackPoint createTrackPoint() throws ParsingException { + protected TrackPoint createTrackPoint() throws ParsingException { TrackPoint trackPoint = new TrackPoint(TrackPoint.Type.TRACKPOINT); try { @@ -450,7 +450,6 @@ abstract class AbstractFileTrackImporter extends DefaultHandler implements Track throw new ParsingException(createErrorMessage(String.format(Locale.US, "Unable to parse latitude longitude: %s %s", latitude, longitude)), e); } - if (altitude != null) { try { trackPoint.setAltitude(Double.parseDouble(altitude)); @@ -459,59 +458,6 @@ abstract class AbstractFileTrackImporter extends DefaultHandler implements Track } } - if (speed != null) { - try { - trackPoint.setSpeed(Speed.of(speed)); - } catch (Exception e) { - throw new ParsingException(createErrorMessage(String.format(Locale.US, "Unable to parse speed: %s", speed)), e); - } - } - if (heartrate != null) { - try { - trackPoint.setHeartRate_bpm(Float.parseFloat(heartrate)); - } catch (Exception e) { - throw new ParsingException(createErrorMessage(String.format(Locale.US, "Unable to parse heart rate: %s", heartrate)), e); - } - } - - if (cadence != null) { - try { - trackPoint.setCyclingCadence_rpm(Float.parseFloat(cadence)); - } catch (Exception e) { - throw new ParsingException(createErrorMessage(String.format(Locale.US, "Unable to parse cadence: %s", cadence)), e); - } - } - - if (power != null) { - try { - trackPoint.setPower(Float.parseFloat(power)); - } catch (Exception e) { - throw new ParsingException(createErrorMessage(String.format(Locale.US, "Unable to parse power: %s", power)), e); - } - } - - if (gain != null) { - try { - trackPoint.setAltitudeGain(Float.parseFloat(gain)); - } catch (Exception e) { - throw new ParsingException(createErrorMessage(String.format(Locale.US, "Unable to parse altitude gain: %s", gain)), e); - } - } - if (loss != null) { - try { - trackPoint.setAltitudeLoss(Float.parseFloat(loss)); - } catch (Exception e) { - throw new ParsingException(createErrorMessage(String.format(Locale.US, "Unable to parse altitude loss: %s", loss)), e); - } - } - if (distance != null) { - try { - trackPoint.setSensorDistance(Distance.of(distance)); - } catch (Exception e) { - throw new ParsingException(createErrorMessage(String.format(Locale.US, "Unable to parse distance: %s", distance)), e); - } - } - return trackPoint; } @@ -571,7 +517,7 @@ abstract class AbstractFileTrackImporter extends DefaultHandler implements Track super(message); } - private ParsingException(@NonNull String message, Exception cause) { + protected ParsingException(@NonNull String message, Exception cause) { super(message, cause); } diff --git a/src/main/java/de/dennisguse/opentracks/io/file/importer/GpxFileTrackImporter.java b/src/main/java/de/dennisguse/opentracks/io/file/importer/GpxFileTrackImporter.java index 543299c07..1877384d3 100644 --- a/src/main/java/de/dennisguse/opentracks/io/file/importer/GpxFileTrackImporter.java +++ b/src/main/java/de/dennisguse/opentracks/io/file/importer/GpxFileTrackImporter.java @@ -23,6 +23,10 @@ import androidx.annotation.VisibleForTesting; import org.xml.sax.Attributes; import org.xml.sax.SAXException; +import java.util.Locale; + +import de.dennisguse.opentracks.content.data.Distance; +import de.dennisguse.opentracks.content.data.Speed; import de.dennisguse.opentracks.content.data.TrackPoint; import de.dennisguse.opentracks.content.provider.ContentProviderUtils; @@ -199,6 +203,66 @@ public class GpxFileTrackImporter extends AbstractFileTrackImporter { category = null; } + @Override + protected TrackPoint createTrackPoint() throws ParsingException { + TrackPoint trackPoint = super.createTrackPoint(); + + if (speed != null) { + try { + trackPoint.setSpeed(Speed.of(speed)); + } catch (Exception e) { + throw new ParsingException(createErrorMessage(String.format(Locale.US, "Unable to parse speed: %s", speed)), e); + } + } + if (heartrate != null) { + try { + trackPoint.setHeartRate_bpm(Float.parseFloat(heartrate)); + } catch (Exception e) { + throw new ParsingException(createErrorMessage(String.format(Locale.US, "Unable to parse heart rate: %s", heartrate)), e); + } + } + + if (cadence != null) { + try { + trackPoint.setCyclingCadence_rpm(Float.parseFloat(cadence)); + } catch (Exception e) { + throw new ParsingException(createErrorMessage(String.format(Locale.US, "Unable to parse cadence: %s", cadence)), e); + } + } + + if (power != null) { + try { + trackPoint.setPower(Float.parseFloat(power)); + } catch (Exception e) { + throw new ParsingException(createErrorMessage(String.format(Locale.US, "Unable to parse power: %s", power)), e); + } + } + + if (gain != null) { + try { + trackPoint.setAltitudeGain(Float.parseFloat(gain)); + } catch (Exception e) { + throw new ParsingException(createErrorMessage(String.format(Locale.US, "Unable to parse altitude gain: %s", gain)), e); + } + } + if (loss != null) { + try { + trackPoint.setAltitudeLoss(Float.parseFloat(loss)); + } catch (Exception e) { + throw new ParsingException(createErrorMessage(String.format(Locale.US, "Unable to parse altitude loss: %s", loss)), e); + } + } + if (distance != null) { + try { + trackPoint.setSensorDistance(Distance.of(distance)); + } catch (Exception e) { + throw new ParsingException(createErrorMessage(String.format(Locale.US, "Unable to parse distance: %s", distance)), e); + } + } + + return trackPoint; + } + /** * On track point start. * diff --git a/src/main/java/de/dennisguse/opentracks/io/file/importer/KmlFileTrackImporter.java b/src/main/java/de/dennisguse/opentracks/io/file/importer/KmlFileTrackImporter.java index 8733affe7..559d81396 100644 --- a/src/main/java/de/dennisguse/opentracks/io/file/importer/KmlFileTrackImporter.java +++ b/src/main/java/de/dennisguse/opentracks/io/file/importer/KmlFileTrackImporter.java @@ -37,7 +37,6 @@ import de.dennisguse.opentracks.io.file.exporter.KMLTrackExporter; * * @author Jimmy Shih */ -//TODO Do not use AbstractFileTrackImporter as TrackPoint sensor generation is done differently here. public class KmlFileTrackImporter extends AbstractFileTrackImporter { private static final String TAG = KmlFileTrackImporter.class.getSimpleName();