forked from upstream-mirrors/OpenTracks
If a GPX file doesn't contain timestamp, use the import
time as the track starting time.
This commit is contained in:
@@ -102,6 +102,9 @@ public class GpxImporter extends DefaultHandler {
|
|||||||
|
|
||||||
// True if the current track has a start time
|
// True if the current track has a start time
|
||||||
private boolean hasStartTime;
|
private boolean hasStartTime;
|
||||||
|
|
||||||
|
// The import time
|
||||||
|
private long importTime;
|
||||||
|
|
||||||
// The current location
|
// The current location
|
||||||
private Location location;
|
private Location location;
|
||||||
@@ -261,8 +264,9 @@ public class GpxImporter extends DefaultHandler {
|
|||||||
private void onTrackElementEnd() {
|
private void onTrackElementEnd() {
|
||||||
flushPoints();
|
flushPoints();
|
||||||
if (tripStatisticsUpdater == null) {
|
if (tripStatisticsUpdater == null) {
|
||||||
tripStatisticsUpdater = new TripStatisticsUpdater(-1L);
|
long now = System.currentTimeMillis();
|
||||||
tripStatisticsUpdater.updateTime(-1L);
|
tripStatisticsUpdater = new TripStatisticsUpdater(now);
|
||||||
|
tripStatisticsUpdater.updateTime(now);
|
||||||
}
|
}
|
||||||
track.setStopId(getLastPointId());
|
track.setStopId(getLastPointId());
|
||||||
track.setTripStatistics(tripStatisticsUpdater.getTripStatistics());
|
track.setTripStatistics(tripStatisticsUpdater.getTripStatistics());
|
||||||
@@ -450,11 +454,13 @@ public class GpxImporter extends DefaultHandler {
|
|||||||
*/
|
*/
|
||||||
private void insertPoint(Location newLocation) {
|
private void insertPoint(Location newLocation) {
|
||||||
if (tripStatisticsUpdater == null) {
|
if (tripStatisticsUpdater == null) {
|
||||||
tripStatisticsUpdater = new TripStatisticsUpdater(newLocation.getTime());
|
|
||||||
hasStartTime = newLocation.getTime() != -1L;
|
hasStartTime = newLocation.getTime() != -1L;
|
||||||
|
importTime = System.currentTimeMillis();
|
||||||
|
tripStatisticsUpdater = new TripStatisticsUpdater(
|
||||||
|
hasStartTime ? newLocation.getTime() : importTime);
|
||||||
}
|
}
|
||||||
if (!hasStartTime) {
|
if (!hasStartTime) {
|
||||||
newLocation.setTime(-1L);
|
newLocation.setTime(importTime);
|
||||||
}
|
}
|
||||||
tripStatisticsUpdater.addLocation(newLocation, minRecordingDistance);
|
tripStatisticsUpdater.addLocation(newLocation, minRecordingDistance);
|
||||||
|
|
||||||
|
|||||||
@@ -247,13 +247,11 @@ public class GpxImporterTest extends AndroidTestCase {
|
|||||||
public void testOneTrackTwoSegmentsNoTime() throws Exception {
|
public void testOneTrackTwoSegmentsNoTime() throws Exception {
|
||||||
Capture<Track> capturedTrack = new Capture<Track>();
|
Capture<Track> capturedTrack = new Capture<Track>();
|
||||||
|
|
||||||
Location location0 = createLocation(0, -1L);
|
|
||||||
|
|
||||||
expect(myTracksProviderUtils.insertTrack((Track) AndroidMock.anyObject()))
|
expect(myTracksProviderUtils.insertTrack((Track) AndroidMock.anyObject()))
|
||||||
.andReturn(TRACK_ID_0_URI);
|
.andReturn(TRACK_ID_0_URI);
|
||||||
// A flush happens before getting the start point ID
|
// A flush happens before getting the start point ID
|
||||||
expect(myTracksProviderUtils.bulkInsertTrackPoint(
|
expect(myTracksProviderUtils.bulkInsertTrackPoint(
|
||||||
LocationsMatcher.eqLoc(location0), eq(1), eq(TRACK_ID_0))).andReturn(1);
|
(Location[]) AndroidMock.anyObject(), eq(1), eq(TRACK_ID_0))).andReturn(1);
|
||||||
expect(myTracksProviderUtils.getFirstTrackPointId(TRACK_ID_0)).andReturn(TRACK_POINT_ID_0);
|
expect(myTracksProviderUtils.getFirstTrackPointId(TRACK_ID_0)).andReturn(TRACK_POINT_ID_0);
|
||||||
|
|
||||||
// A flush happens at the end
|
// A flush happens at the end
|
||||||
@@ -330,7 +328,9 @@ public class GpxImporterTest extends AndroidTestCase {
|
|||||||
private void verifyTrack(Track track, String name, String description, long time) {
|
private void verifyTrack(Track track, String name, String description, long time) {
|
||||||
assertEquals(name, track.getName());
|
assertEquals(name, track.getName());
|
||||||
assertEquals(description, track.getDescription());
|
assertEquals(description, track.getDescription());
|
||||||
assertEquals(time, track.getTripStatistics().getStartTime());
|
if (time != -1L) {
|
||||||
|
assertEquals(time, track.getTripStatistics().getStartTime());
|
||||||
|
}
|
||||||
assertNotSame(-1, track.getStartId());
|
assertNotSame(-1, track.getStartId());
|
||||||
assertNotSame(-1, track.getStopId());
|
assertNotSame(-1, track.getStopId());
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user