From cb30ad27c39ea3aa099b9b7fc1e9b97199dc35a9 Mon Sep 17 00:00:00 2001 From: Dennis Guse Date: Fri, 20 Mar 2020 19:40:07 +0100 Subject: [PATCH] Removed that tracks store count of the locations. --- .../opentracks/content/data/TestDataUtil.java | 1 - .../provider/CustomContentProviderUtilsTest.java | 16 +++++++--------- .../opentracks/content/data/Track.java | 12 ------------ .../opentracks/content/data/TracksColumns.java | 3 ++- .../content/provider/ContentProviderUtils.java | 6 ------ .../content/provider/TrackPointIterator.java | 9 +++++++++ .../io/file/exporter/FileTrackExporter.java | 2 +- .../file/importer/AbstractFileTrackImporter.java | 1 - .../services/TrackRecordingService.java | 14 ++++---------- 9 files changed, 23 insertions(+), 41 deletions(-) diff --git a/src/androidTest/java/de/dennisguse/opentracks/content/data/TestDataUtil.java b/src/androidTest/java/de/dennisguse/opentracks/content/data/TestDataUtil.java index 44ca74a9a..5791166f9 100644 --- a/src/androidTest/java/de/dennisguse/opentracks/content/data/TestDataUtil.java +++ b/src/androidTest/java/de/dennisguse/opentracks/content/data/TestDataUtil.java @@ -19,7 +19,6 @@ public class TestDataUtil { Track track = new Track(); track.setId(id); track.setName("Test: " + id); - track.setNumberOfPoints(numPoints); for (int i = 0; i < numPoints; i++) { track.addLocation(createLocation(i)); } diff --git a/src/androidTest/java/de/dennisguse/opentracks/content/provider/CustomContentProviderUtilsTest.java b/src/androidTest/java/de/dennisguse/opentracks/content/provider/CustomContentProviderUtilsTest.java index d0ca34d98..5f07e6412 100644 --- a/src/androidTest/java/de/dennisguse/opentracks/content/provider/CustomContentProviderUtilsTest.java +++ b/src/androidTest/java/de/dennisguse/opentracks/content/provider/CustomContentProviderUtilsTest.java @@ -135,7 +135,7 @@ public class CustomContentProviderUtilsTest { private List testIterator(long trackId, int numPoints, int batchSize, boolean descending, TrackPointFactory trackPointFactory) { long lastPointId = initializeTrack(trackId, numPoints); - ((ContentProviderUtils) contentProviderUtils).setDefaultCursorBatchSize(batchSize); + contentProviderUtils.setDefaultCursorBatchSize(batchSize); List locations = new ArrayList(numPoints); try (TrackPointIterator it = contentProviderUtils.getTrackPointLocationIterator(trackId, -1L, descending, trackPointFactory)) { while (it.hasNext()) { @@ -155,7 +155,6 @@ public class CustomContentProviderUtilsTest { Track track = new Track(); track.setId(id); track.setName("Test: " + id); - track.setNumberOfPoints(numPoints); contentProviderUtils.insertTrack(track); track = contentProviderUtils.getTrack(id); Assert.assertNotNull(track); @@ -183,7 +182,6 @@ public class CustomContentProviderUtilsTest { } Assert.assertTrue(numPoints == 0 || lastPointId > 0); - Assert.assertEquals(numPoints, track.getNumberOfPoints()); Assert.assertEquals(numPoints, counter); return lastPointId; @@ -616,8 +614,8 @@ public class CustomContentProviderUtilsTest { when(cursorMock.getBlob(index++)).thenReturn(sensor); Location location = contentProviderUtils.createTrackPoint(cursorMock); - Assert.assertEquals((double) longitude, location.getLongitude(), 0.01); - Assert.assertEquals((double) latitude, location.getLatitude(), 0.01); + Assert.assertEquals(longitude, location.getLongitude(), 0.01); + Assert.assertEquals(latitude, location.getLatitude(), 0.01); Assert.assertEquals(time, location.getTime(), 0.01); Assert.assertEquals(speed, location.getSpeed(), 0.01); } @@ -661,7 +659,7 @@ public class CustomContentProviderUtilsTest { Track track = TestDataUtil.getTrack(trackId, 10); contentProviderUtils.insertTrack(track); - long[] trackpointIds = new long[track.getNumberOfPoints()]; + long[] trackpointIds = new long[track.getLocations().size()]; for (int i = 0; i < trackpointIds.length; i++) { trackpointIds[i] = ContentUris.parseId(contentProviderUtils.insertTrackPoint(track.getLocations().get(i), track.getId())); } @@ -680,7 +678,7 @@ public class CustomContentProviderUtilsTest { Track track = TestDataUtil.getTrack(trackId, 10); contentProviderUtils.insertTrack(track); - long[] trackpointIds = new long[track.getNumberOfPoints()]; + long[] trackpointIds = new long[track.getLocations().size()]; for (int i = 0; i < trackpointIds.length; i++) { trackpointIds[i] = ContentUris.parseId(contentProviderUtils.insertTrackPoint(track.getLocations().get(i), track.getId())); } @@ -699,7 +697,7 @@ public class CustomContentProviderUtilsTest { Track track = TestDataUtil.getTrack(trackId, 10); contentProviderUtils.insertTrack(track); - long[] trackpointIds = new long[track.getNumberOfPoints()]; + long[] trackpointIds = new long[track.getLocations().size()]; for (int i = 0; i < trackpointIds.length; i++) { trackpointIds[i] = ContentUris.parseId(contentProviderUtils.insertTrackPoint(track.getLocations().get(i), track.getId())); } @@ -726,7 +724,7 @@ public class CustomContentProviderUtilsTest { Track track = TestDataUtil.getTrack(trackId, 10); contentProviderUtils.insertTrack(track); - long[] trackpointIds = new long[track.getNumberOfPoints()]; + long[] trackpointIds = new long[track.getLocations().size()]; for (int i = 0; i < trackpointIds.length; i++) { trackpointIds[i] = ContentUris.parseId(contentProviderUtils.insertTrackPoint(track.getLocations().get(i), track.getId())); } diff --git a/src/main/java/de/dennisguse/opentracks/content/data/Track.java b/src/main/java/de/dennisguse/opentracks/content/data/Track.java index 516e9cfa5..60660bacb 100644 --- a/src/main/java/de/dennisguse/opentracks/content/data/Track.java +++ b/src/main/java/de/dennisguse/opentracks/content/data/Track.java @@ -38,10 +38,6 @@ public class Track { private String description = ""; private String category = ""; - /* - * The number of location points (present even if the points themselves are not loaded) - */ - private int numberOfPoints = 0; private String icon = ""; private TripStatistics tripStatistics = new TripStatistics(); @@ -84,14 +80,6 @@ public class Track { this.category = category; } - public int getNumberOfPoints() { - return numberOfPoints; - } - - public void setNumberOfPoints(int numberOfPoints) { - this.numberOfPoints = numberOfPoints; - } - public String getIcon() { return icon; } diff --git a/src/main/java/de/dennisguse/opentracks/content/data/TracksColumns.java b/src/main/java/de/dennisguse/opentracks/content/data/TracksColumns.java index 664e62ac2..ba36ca0a2 100644 --- a/src/main/java/de/dennisguse/opentracks/content/data/TracksColumns.java +++ b/src/main/java/de/dennisguse/opentracks/content/data/TracksColumns.java @@ -40,7 +40,8 @@ public interface TracksColumns extends BaseColumns { String CATEGORY = "category"; // track activity type String STARTTIME = "starttime"; // track start time String STOPTIME = "stoptime"; // track stop time - String NUMPOINTS = "numpoints"; // number of track points + @Deprecated + String NUMPOINTS = "numpoints"; // number of track points //TODO UNUSED String TOTALDISTANCE = "totaldistance"; // total distance String TOTALTIME = "totaltime"; // total time String MOVINGTIME = "movingtime"; // moving time diff --git a/src/main/java/de/dennisguse/opentracks/content/provider/ContentProviderUtils.java b/src/main/java/de/dennisguse/opentracks/content/provider/ContentProviderUtils.java index 0af551de4..8f9b8a254 100644 --- a/src/main/java/de/dennisguse/opentracks/content/provider/ContentProviderUtils.java +++ b/src/main/java/de/dennisguse/opentracks/content/provider/ContentProviderUtils.java @@ -111,7 +111,6 @@ public class ContentProviderUtils { int categoryIndex = cursor.getColumnIndexOrThrow(TracksColumns.CATEGORY); int startTimeIndex = cursor.getColumnIndexOrThrow(TracksColumns.STARTTIME); int stopTimeIndex = cursor.getColumnIndexOrThrow(TracksColumns.STOPTIME); - int numPointsIndex = cursor.getColumnIndexOrThrow(TracksColumns.NUMPOINTS); int totalDistanceIndex = cursor.getColumnIndexOrThrow(TracksColumns.TOTALDISTANCE); int totalTimeIndex = cursor.getColumnIndexOrThrow(TracksColumns.TOTALTIME); int movingTimeIndex = cursor.getColumnIndexOrThrow(TracksColumns.MOVINGTIME); @@ -141,9 +140,6 @@ public class ContentProviderUtils { if (!cursor.isNull(stopTimeIndex)) { tripStatistics.setStopTime(cursor.getLong(stopTimeIndex)); } - if (!cursor.isNull(numPointsIndex)) { - track.setNumberOfPoints(cursor.getInt(numPointsIndex)); - } if (!cursor.isNull(totalDistanceIndex)) { tripStatistics.setTotalDistance(cursor.getFloat(totalDistanceIndex)); } @@ -199,7 +195,6 @@ public class ContentProviderUtils { /** * Deletes track points and waypoints of a track. - * Assumes {@link TracksColumns#NUMPOINTS} will be updated by the caller. * * @param trackId the track id */ @@ -324,7 +319,6 @@ public class ContentProviderUtils { values.put(TracksColumns.CATEGORY, track.getCategory()); values.put(TracksColumns.STARTTIME, tripStatistics.getStartTime()); values.put(TracksColumns.STOPTIME, tripStatistics.getStopTime()); - values.put(TracksColumns.NUMPOINTS, track.getNumberOfPoints()); values.put(TracksColumns.TOTALDISTANCE, tripStatistics.getTotalDistance()); values.put(TracksColumns.TOTALTIME, tripStatistics.getTotalTime()); values.put(TracksColumns.MOVINGTIME, tripStatistics.getMovingTime()); diff --git a/src/main/java/de/dennisguse/opentracks/content/provider/TrackPointIterator.java b/src/main/java/de/dennisguse/opentracks/content/provider/TrackPointIterator.java index 37863f70a..309527560 100644 --- a/src/main/java/de/dennisguse/opentracks/content/provider/TrackPointIterator.java +++ b/src/main/java/de/dennisguse/opentracks/content/provider/TrackPointIterator.java @@ -108,4 +108,13 @@ public class TrackPointIterator implements Iterator, AutoCloseable { public void remove() { throw new UnsupportedOperationException(); } + + public int getCount() { + if (cursor == null) { + return -1; + } + + return cursor.getCount(); + } + } \ No newline at end of file diff --git a/src/main/java/de/dennisguse/opentracks/io/file/exporter/FileTrackExporter.java b/src/main/java/de/dennisguse/opentracks/io/file/exporter/FileTrackExporter.java index 64e725642..d9516e2ee 100644 --- a/src/main/java/de/dennisguse/opentracks/io/file/exporter/FileTrackExporter.java +++ b/src/main/java/de/dennisguse/opentracks/io/file/exporter/FileTrackExporter.java @@ -161,7 +161,7 @@ public class FileTrackExporter implements TrackExporter { // Write the current location trackWriter.writeLocation(location); if (trackExporterListener != null) { - trackExporterListener.onProgressUpdate(locationNumber, track.getNumberOfPoints()); + trackExporterListener.onProgressUpdate(locationNumber, locationIterator.getCount()); } } else { if (wroteSegment) { 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 719081c8d..ac367c075 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 @@ -262,7 +262,6 @@ abstract class AbstractFileTrackImporter extends DefaultHandler implements Track trackData.tripStatisticsUpdater.updateTime(trackData.importTime); } trackData.track.setTripStatistics(trackData.tripStatisticsUpdater.getTripStatistics()); - trackData.track.setNumberOfPoints(trackData.numberOfLocations); contentProviderUtils.updateTrack(trackData.track); } diff --git a/src/main/java/de/dennisguse/opentracks/services/TrackRecordingService.java b/src/main/java/de/dennisguse/opentracks/services/TrackRecordingService.java index 386b0e0e8..9c9b35cb7 100644 --- a/src/main/java/de/dennisguse/opentracks/services/TrackRecordingService.java +++ b/src/main/java/de/dennisguse/opentracks/services/TrackRecordingService.java @@ -439,7 +439,7 @@ public class TrackRecordingService extends Service { insertLocation(track, lastLocation, getLastValidTrackPointInCurrentSegment(trackId)); // Update the recording track time - updateRecordingTrack(track, false); + updateRecordingTrack(track); } String trackName = TrackNameUtils.getTrackName(this, trackId, track.getTripStatistics().getStartTime()); @@ -650,7 +650,7 @@ public class TrackRecordingService extends Service { try { contentProviderUtils.insertTrackPoint(location, track.getId()); trackTripStatisticsUpdater.addLocation(location, recordingDistanceInterval); - updateRecordingTrack(track, LocationUtils.isValidLocation(location)); + updateRecordingTrack(track); } catch (SQLiteException e) { /* * Insert failed, most likely because of SqlLite error code 5 (SQLite_BUSY). @@ -663,16 +663,10 @@ public class TrackRecordingService extends Service { /** * Updates the recording track time. - * Increase the number of points if it is a new and valid track point. * - * @param track the track - * @param increaseNumberOfPoints true to increase the number of points + * @param track the track */ - private void updateRecordingTrack(Track track, boolean increaseNumberOfPoints) { - if (increaseNumberOfPoints) { - track.setNumberOfPoints(track.getNumberOfPoints() + 1); - } - + private void updateRecordingTrack(Track track) { trackTripStatisticsUpdater.updateTime(System.currentTimeMillis()); track.setTripStatistics(trackTripStatisticsUpdater.getTripStatistics()); contentProviderUtils.updateTrack(track);