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 4e184d801..a2c98c4c4 100644 --- a/src/androidTest/java/de/dennisguse/opentracks/content/data/TestDataUtil.java +++ b/src/androidTest/java/de/dennisguse/opentracks/content/data/TestDataUtil.java @@ -71,6 +71,6 @@ public class TestDataUtil { */ public static void insertTrackWithLocations(ContentProviderUtils contentProviderUtils, Track track, TrackPoint[] trackPoints) { contentProviderUtils.insertTrack(track); - contentProviderUtils.bulkInsertTrackPoint(trackPoints, trackPoints.length, track.getId()); + contentProviderUtils.bulkInsertTrackPoint(trackPoints, track.getId()); } } 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 1f5d4dd48..f0aa1cdae 100644 --- a/src/androidTest/java/de/dennisguse/opentracks/content/provider/CustomContentProviderUtilsTest.java +++ b/src/androidTest/java/de/dennisguse/opentracks/content/provider/CustomContentProviderUtilsTest.java @@ -33,6 +33,7 @@ import org.mockito.Mock; import org.mockito.junit.MockitoJUnitRunner; import java.util.ArrayList; +import java.util.Arrays; import java.util.List; import de.dennisguse.opentracks.content.data.TestDataUtil; @@ -142,7 +143,7 @@ public class CustomContentProviderUtilsTest { loc.setAltitude(i * 2.5); trackPoints[i] = new TrackPoint(loc); } - contentProviderUtils.bulkInsertTrackPoint(trackPoints, numPoints, id); + contentProviderUtils.bulkInsertTrackPoint(trackPoints, id); // Load all inserted trackPoints. long lastPointId = -1; @@ -523,9 +524,9 @@ public class CustomContentProviderUtilsTest { TestDataUtil.insertTrackWithLocations(contentProviderUtils, track.first, track.second); // when / then - contentProviderUtils.bulkInsertTrackPoint(track.second, -1, trackId); + contentProviderUtils.bulkInsertTrackPoint(track.second, trackId); Assert.assertEquals(20, contentProviderUtils.getTrackPointCursor(trackId, -1L, 1000, false).getCount()); - contentProviderUtils.bulkInsertTrackPoint(track.second, 8, trackId); + contentProviderUtils.bulkInsertTrackPoint(Arrays.copyOfRange(track.second, 0, 8), trackId); Assert.assertEquals(28, contentProviderUtils.getTrackPointCursor(trackId, -1L, 1000, false).getCount()); } diff --git a/src/androidTest/java/de/dennisguse/opentracks/io/file/importer/AbstractTestFileTrackImporter.java b/src/androidTest/java/de/dennisguse/opentracks/io/file/importer/AbstractTestFileTrackImporter.java index bb981a9a2..4b5910b34 100644 --- a/src/androidTest/java/de/dennisguse/opentracks/io/file/importer/AbstractTestFileTrackImporter.java +++ b/src/androidTest/java/de/dennisguse/opentracks/io/file/importer/AbstractTestFileTrackImporter.java @@ -101,7 +101,7 @@ public abstract class AbstractTestFileTrackImporter { * @param trackPointId the track point id */ protected void expectFirstTrackPoint(TrackPoint trackPoint, long trackId, long trackPointId) { - when(contentProviderUtils.bulkInsertTrackPoint(trackPoint != null ? (TrackPoint[]) any() : (TrackPoint[]) any(), eq(1), eq(trackId))).thenReturn(1); + when(contentProviderUtils.bulkInsertTrackPoint(trackPoint != null ? (TrackPoint[]) any() : (TrackPoint[]) any(), eq(trackId))).thenReturn(1); } /** diff --git a/src/androidTest/java/de/dennisguse/opentracks/io/file/importer/ExportImportTest.java b/src/androidTest/java/de/dennisguse/opentracks/io/file/importer/ExportImportTest.java index 0a989dfdf..4983546fa 100644 --- a/src/androidTest/java/de/dennisguse/opentracks/io/file/importer/ExportImportTest.java +++ b/src/androidTest/java/de/dennisguse/opentracks/io/file/importer/ExportImportTest.java @@ -59,7 +59,7 @@ public class ExportImportTest { track.first.setCategory(TRACK_CATEGORY); track.first.setDescription(TRACK_DESCRIPTION); contentProviderUtils.insertTrack(track.first); - contentProviderUtils.bulkInsertTrackPoint(track.second, track.second.length, track.first.getId()); + contentProviderUtils.bulkInsertTrackPoint(track.second, track.first.getId()); for (int i = 0; i < 3; i++) { Waypoint waypoint = new Waypoint(track.second[i].getLocation()); diff --git a/src/androidTest/java/de/dennisguse/opentracks/io/file/importer/GpxFileTrackImporterTest.java b/src/androidTest/java/de/dennisguse/opentracks/io/file/importer/GpxFileTrackImporterTest.java index da1c20750..a217da5ae 100644 --- a/src/androidTest/java/de/dennisguse/opentracks/io/file/importer/GpxFileTrackImporterTest.java +++ b/src/androidTest/java/de/dennisguse/opentracks/io/file/importer/GpxFileTrackImporterTest.java @@ -30,7 +30,6 @@ import de.dennisguse.opentracks.content.data.TrackPoint; import de.dennisguse.opentracks.util.PreferencesUtils; import static org.mockito.Mockito.any; -import static org.mockito.Mockito.anyInt; import static org.mockito.Mockito.anyLong; import static org.mockito.Mockito.atLeastOnce; import static org.mockito.Mockito.eq; @@ -91,7 +90,7 @@ public class GpxFileTrackImporterTest extends AbstractTestFileTrackImporter { expectFirstTrackPoint(trackPoint0, TRACK_ID_0, TRACK_POINT_ID_0); // A flush happens at the end - when(contentProviderUtils.bulkInsertTrackPoint((TrackPoint[]) any(), eq(1), eq(TRACK_ID_0))).thenReturn(1); + when(contentProviderUtils.bulkInsertTrackPoint((TrackPoint[]) any(), eq(TRACK_ID_0))).thenReturn(1); when(contentProviderUtils.getLastTrackPointId(TRACK_ID_0)).thenReturn(TRACK_POINT_ID_1); when(contentProviderUtils.getTrack(PreferencesUtils.getRecordingTrackId(context))).thenReturn(null); ArgumentCaptor trackCaptor = ArgumentCaptor.forClass(Track.class); @@ -120,7 +119,7 @@ public class GpxFileTrackImporterTest extends AbstractTestFileTrackImporter { when(contentProviderUtils.insertTrack((Track) any())).thenReturn(TRACK_ID_0_URI); expectFirstTrackPoint(trackPoint0, TRACK_ID_0, TRACK_POINT_ID_0); // A flush happens at the end - when(contentProviderUtils.bulkInsertTrackPoint((TrackPoint[]) any(), eq(5), eq(TRACK_ID_0))).thenReturn(5); + when(contentProviderUtils.bulkInsertTrackPoint((TrackPoint[]) any(), eq(TRACK_ID_0))).thenReturn(5); when(contentProviderUtils.getLastTrackPointId(TRACK_ID_0)).thenReturn(TRACK_POINT_ID_3); when(contentProviderUtils.getTrack(PreferencesUtils.getRecordingTrackId(context))).thenReturn(null); @@ -152,7 +151,7 @@ public class GpxFileTrackImporterTest extends AbstractTestFileTrackImporter { expectFirstTrackPoint(null, TRACK_ID_0, TRACK_POINT_ID_0); // A flush happens at the end - when(contentProviderUtils.bulkInsertTrackPoint((TrackPoint[]) any(), eq(5), eq(TRACK_ID_0))).thenReturn(5); + when(contentProviderUtils.bulkInsertTrackPoint((TrackPoint[]) any(), eq(TRACK_ID_0))).thenReturn(5); when(contentProviderUtils.getLastTrackPointId(TRACK_ID_0)).thenReturn(TRACK_POINT_ID_3); when(contentProviderUtils.getTrack(PreferencesUtils.getRecordingTrackId(context))).thenReturn(null); @@ -206,7 +205,7 @@ public class GpxFileTrackImporterTest extends AbstractTestFileTrackImporter { when(contentProviderUtils.insertTrack((Track) any())).thenReturn(TRACK_ID_0_URI); // For the following, use StubReturn since we don't care whether they are invoked or not. - when(contentProviderUtils.bulkInsertTrackPoint((TrackPoint[]) any(), anyInt(), anyLong())).thenReturn(1); + when(contentProviderUtils.bulkInsertTrackPoint((TrackPoint[]) any(), anyLong())).thenReturn(1); when(contentProviderUtils.getTrack(PreferencesUtils.getRecordingTrackId(context))).thenReturn(null); contentProviderUtils.deleteTrack(context, TRACK_ID_0); diff --git a/src/androidTest/java/de/dennisguse/opentracks/io/file/importer/KmlFileTrackImporterTest.java b/src/androidTest/java/de/dennisguse/opentracks/io/file/importer/KmlFileTrackImporterTest.java index 4687089f8..bed02385e 100644 --- a/src/androidTest/java/de/dennisguse/opentracks/io/file/importer/KmlFileTrackImporterTest.java +++ b/src/androidTest/java/de/dennisguse/opentracks/io/file/importer/KmlFileTrackImporterTest.java @@ -75,7 +75,7 @@ public class KmlFileTrackImporterTest extends AbstractTestFileTrackImporter { expectFirstTrackPoint(trackPoint0, TRACK_ID_0, TRACK_POINT_ID_0); // A flush happens at the end - when(contentProviderUtils.bulkInsertTrackPoint((TrackPoint[]) any(), eq(1), eq(TRACK_ID_0))).thenReturn(1); + when(contentProviderUtils.bulkInsertTrackPoint((TrackPoint[]) any(), eq(TRACK_ID_0))).thenReturn(1); when(contentProviderUtils.getLastTrackPointId(TRACK_ID_0)).thenReturn(TRACK_POINT_ID_1); when(contentProviderUtils.getTrack(PreferencesUtils.getRecordingTrackId(context))).thenReturn(null); @@ -106,7 +106,7 @@ public class KmlFileTrackImporterTest extends AbstractTestFileTrackImporter { expectFirstTrackPoint(trackPoint0, TRACK_ID_0, TRACK_POINT_ID_0); // A flush happens at the end - when(contentProviderUtils.bulkInsertTrackPoint((TrackPoint[]) any(), eq(5), eq(TRACK_ID_0))).thenReturn(5); + when(contentProviderUtils.bulkInsertTrackPoint((TrackPoint[]) any(), eq(TRACK_ID_0))).thenReturn(5); when(contentProviderUtils.getLastTrackPointId(TRACK_ID_0)).thenReturn(TRACK_POINT_ID_3); when(contentProviderUtils.getTrack(PreferencesUtils.getRecordingTrackId(context))).thenReturn(null); 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 967889805..bb7abc936 100644 --- a/src/main/java/de/dennisguse/opentracks/content/provider/ContentProviderUtils.java +++ b/src/main/java/de/dennisguse/opentracks/content/provider/ContentProviderUtils.java @@ -634,17 +634,13 @@ public class ContentProviderUtils { * Inserts multiple trackPoints. * * @param trackPoints an array of trackPoints - * @param length the number of trackPoints (from the beginning of the array) to insert, or -1 for all of them * @param trackId the trackPoints id * @return the number of trackPoints inserted */ - //TODO Only used for testing and file import; might be better to replace it; in any case remove length. - public int bulkInsertTrackPoint(TrackPoint[] trackPoints, int length, long trackId) { - if (length == -1) { - length = trackPoints.length; - } - ContentValues[] values = new ContentValues[length]; - for (int i = 0; i < length; i++) { + //TODO Only used for testing and file import; might be better to replace it. + public int bulkInsertTrackPoint(TrackPoint[] trackPoints, long trackId) { + ContentValues[] values = new ContentValues[trackPoints.length]; + for (int i = 0; i < values.length; i++) { values[i] = createContentValues(trackPoints[i], trackId); } return contentResolver.bulkInsert(TrackPointsColumns.CONTENT_URI_BY_ID, values); 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 b897dac0e..9c056342e 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 @@ -28,6 +28,7 @@ import java.io.File; import java.io.IOException; import java.io.InputStream; import java.util.ArrayList; +import java.util.Arrays; import java.util.List; import java.util.Locale; @@ -446,11 +447,11 @@ abstract class AbstractFileTrackImporter extends DefaultHandler implements Track } trackData.trackStatisticsUpdater.addTrackPoint(trackPoint, recordingDistanceInterval); - trackData.bufferedTrackPoints[trackData.numBufferedLocations] = trackPoint; - trackData.numBufferedLocations++; + trackData.bufferedTrackPoints[trackData.numBufferedTrackPoints] = trackPoint; + trackData.numBufferedTrackPoints++; trackData.numberOfLocations++; - if (trackData.numBufferedLocations >= MAX_BUFFERED_LOCATIONS) { + if (trackData.numBufferedTrackPoints >= MAX_BUFFERED_LOCATIONS) { flushLocations(trackData); } } @@ -461,11 +462,11 @@ abstract class AbstractFileTrackImporter extends DefaultHandler implements Track * @param data the track data */ private void flushLocations(TrackData data) { - if (data.numBufferedLocations <= 0) { + if (data.numBufferedTrackPoints <= 0) { return; } - contentProviderUtils.bulkInsertTrackPoint(data.bufferedTrackPoints, data.numBufferedLocations, data.track.getId()); - data.numBufferedLocations = 0; + contentProviderUtils.bulkInsertTrackPoint(Arrays.copyOfRange(data.bufferedTrackPoints, 0, data.numBufferedTrackPoints), data.track.getId()); + data.numBufferedTrackPoints = 0; } /** @@ -506,6 +507,6 @@ abstract class AbstractFileTrackImporter extends DefaultHandler implements Track final TrackPoint[] bufferedTrackPoints = new TrackPoint[MAX_BUFFERED_LOCATIONS]; // The number of buffered locations - int numBufferedLocations = 0; + int numBufferedTrackPoints = 0; } }