forked from upstream-mirrors/OpenTracks
Cleanup: removed CachedTrackPointsIndexes.
Caching already happens in SQLite.getColumnIndexOrThrow().
This commit is contained in:
@@ -1,47 +0,0 @@
|
|||||||
package de.dennisguse.opentracks.data;
|
|
||||||
|
|
||||||
import android.database.Cursor;
|
|
||||||
|
|
||||||
import de.dennisguse.opentracks.data.tables.TrackPointsColumns;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* A cache of track points indexes.
|
|
||||||
*/
|
|
||||||
//TOOD Check if this actually useful.
|
|
||||||
class CachedTrackPointsIndexes {
|
|
||||||
final int idIndex;
|
|
||||||
final int typeIndex;
|
|
||||||
final int longitudeIndex;
|
|
||||||
final int latitudeIndex;
|
|
||||||
final int timeIndex;
|
|
||||||
final int altitudeIndex;
|
|
||||||
final int accuracyIndex;
|
|
||||||
final int accuracyVerticalIndex;
|
|
||||||
final int speedIndex;
|
|
||||||
final int bearingIndex;
|
|
||||||
final int sensorHeartRateIndex;
|
|
||||||
final int sensorCadenceIndex;
|
|
||||||
final int sensorDistanceIndex;
|
|
||||||
final int sensorPowerIndex;
|
|
||||||
final int altitudeGainIndex;
|
|
||||||
final int altitudeLossIndex;
|
|
||||||
|
|
||||||
CachedTrackPointsIndexes(Cursor cursor) {
|
|
||||||
idIndex = cursor.getColumnIndex(TrackPointsColumns._ID);
|
|
||||||
typeIndex = cursor.getColumnIndex(TrackPointsColumns.TYPE);
|
|
||||||
longitudeIndex = cursor.getColumnIndexOrThrow(TrackPointsColumns.LONGITUDE);
|
|
||||||
latitudeIndex = cursor.getColumnIndexOrThrow(TrackPointsColumns.LATITUDE);
|
|
||||||
timeIndex = cursor.getColumnIndexOrThrow(TrackPointsColumns.TIME);
|
|
||||||
altitudeIndex = cursor.getColumnIndexOrThrow(TrackPointsColumns.ALTITUDE);
|
|
||||||
accuracyIndex = cursor.getColumnIndexOrThrow(TrackPointsColumns.HORIZONTAL_ACCURACY);
|
|
||||||
accuracyVerticalIndex = cursor.getColumnIndexOrThrow(TrackPointsColumns.VERTICAL_ACCURACY);
|
|
||||||
speedIndex = cursor.getColumnIndexOrThrow(TrackPointsColumns.SPEED);
|
|
||||||
bearingIndex = cursor.getColumnIndexOrThrow(TrackPointsColumns.BEARING);
|
|
||||||
sensorHeartRateIndex = cursor.getColumnIndexOrThrow(TrackPointsColumns.SENSOR_HEARTRATE);
|
|
||||||
sensorCadenceIndex = cursor.getColumnIndexOrThrow(TrackPointsColumns.SENSOR_CADENCE);
|
|
||||||
sensorDistanceIndex = cursor.getColumnIndexOrThrow(TrackPointsColumns.SENSOR_DISTANCE);
|
|
||||||
sensorPowerIndex = cursor.getColumnIndexOrThrow(TrackPointsColumns.SENSOR_POWER);
|
|
||||||
altitudeGainIndex = cursor.getColumnIndexOrThrow(TrackPointsColumns.ALTITUDE_GAIN);
|
|
||||||
altitudeLossIndex = cursor.getColumnIndexOrThrow(TrackPointsColumns.ALTITUDE_LOSS);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -526,42 +526,53 @@ public class ContentProviderUtils {
|
|||||||
return new MarkerIterator(this, getMarkerCursor(null, selection, selectionArgs, sortOrder, -1));
|
return new MarkerIterator(this, getMarkerCursor(null, selection, selectionArgs, sortOrder, -1));
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
static TrackPoint fillTrackPoint(Cursor cursor) {
|
||||||
* Fills a {@link TrackPoint} from a cursor.
|
int idIndex = cursor.getColumnIndexOrThrow(TrackPointsColumns._ID);
|
||||||
*
|
int typeIndex = cursor.getColumnIndexOrThrow(TrackPointsColumns.TYPE);
|
||||||
* @param cursor the cursor pointing to a trackPoint.
|
int longitudeIndex = cursor.getColumnIndexOrThrow(TrackPointsColumns.LONGITUDE);
|
||||||
* @param indexes the cached trackPoints indexes
|
int latitudeIndex = cursor.getColumnIndexOrThrow(TrackPointsColumns.LATITUDE);
|
||||||
*/
|
int timeIndex = cursor.getColumnIndexOrThrow(TrackPointsColumns.TIME);
|
||||||
static TrackPoint fillTrackPoint(Cursor cursor, CachedTrackPointsIndexes indexes) {
|
int altitudeIndex = cursor.getColumnIndexOrThrow(TrackPointsColumns.ALTITUDE);
|
||||||
|
int accuracyIndex = cursor.getColumnIndexOrThrow(TrackPointsColumns.HORIZONTAL_ACCURACY);
|
||||||
|
int accuracyVerticalIndex = cursor.getColumnIndexOrThrow(TrackPointsColumns.VERTICAL_ACCURACY);
|
||||||
|
int speedIndex = cursor.getColumnIndexOrThrow(TrackPointsColumns.SPEED);
|
||||||
|
int bearingIndex = cursor.getColumnIndexOrThrow(TrackPointsColumns.BEARING);
|
||||||
|
int sensorHeartRateIndex = cursor.getColumnIndexOrThrow(TrackPointsColumns.SENSOR_HEARTRATE);
|
||||||
|
int sensorCadenceIndex = cursor.getColumnIndexOrThrow(TrackPointsColumns.SENSOR_CADENCE);
|
||||||
|
int sensorDistanceIndex = cursor.getColumnIndexOrThrow(TrackPointsColumns.SENSOR_DISTANCE);
|
||||||
|
int sensorPowerIndex = cursor.getColumnIndexOrThrow(TrackPointsColumns.SENSOR_POWER);
|
||||||
|
int altitudeGainIndex = cursor.getColumnIndexOrThrow(TrackPointsColumns.ALTITUDE_GAIN);
|
||||||
|
int altitudeLossIndex = cursor.getColumnIndexOrThrow(TrackPointsColumns.ALTITUDE_LOSS);
|
||||||
|
|
||||||
TrackPoint trackPoint = new TrackPoint(
|
TrackPoint trackPoint = new TrackPoint(
|
||||||
new TrackPoint.Id(cursor.getInt(indexes.idIndex)),
|
new TrackPoint.Id(cursor.getInt(idIndex)),
|
||||||
TrackPoint.Type.getById(cursor.getInt(indexes.typeIndex)),
|
TrackPoint.Type.getById(cursor.getInt(typeIndex)),
|
||||||
new Position(
|
new Position(
|
||||||
Instant.ofEpochMilli(cursor.getLong(indexes.timeIndex)),
|
Instant.ofEpochMilli(cursor.getLong(timeIndex)),
|
||||||
!cursor.isNull(indexes.latitudeIndex) ? ((double) cursor.getInt(indexes.latitudeIndex)) / 1E6 : null,
|
!cursor.isNull(latitudeIndex) ? ((double) cursor.getInt(latitudeIndex)) / 1E6 : null,
|
||||||
!cursor.isNull(indexes.longitudeIndex) ? ((double) cursor.getInt(indexes.longitudeIndex)) / 1E6 : null,
|
!cursor.isNull(longitudeIndex) ? ((double) cursor.getInt(longitudeIndex)) / 1E6 : null,
|
||||||
!cursor.isNull(indexes.accuracyIndex) ? Distance.of(cursor.getFloat(indexes.accuracyIndex)) : null,
|
!cursor.isNull(accuracyIndex) ? Distance.of(cursor.getFloat(accuracyIndex)) : null,
|
||||||
!cursor.isNull(indexes.altitudeIndex) ? Altitude.WGS84.of(cursor.getFloat(indexes.altitudeIndex)) : null,
|
!cursor.isNull(altitudeIndex) ? Altitude.WGS84.of(cursor.getFloat(altitudeIndex)) : null,
|
||||||
!cursor.isNull(indexes.accuracyVerticalIndex) ? Distance.of(cursor.getFloat(indexes.accuracyVerticalIndex)) : null,
|
!cursor.isNull(accuracyVerticalIndex) ? Distance.of(cursor.getFloat(accuracyVerticalIndex)) : null,
|
||||||
!cursor.isNull(indexes.bearingIndex) ? cursor.getFloat(indexes.bearingIndex) : null,
|
!cursor.isNull(bearingIndex) ? cursor.getFloat(bearingIndex) : null,
|
||||||
!cursor.isNull(indexes.speedIndex) ? Speed.of(cursor.getFloat(indexes.speedIndex)) : null
|
!cursor.isNull(speedIndex) ? Speed.of(cursor.getFloat(speedIndex)) : null
|
||||||
));
|
));
|
||||||
|
|
||||||
if (!cursor.isNull(indexes.sensorHeartRateIndex)) {
|
if (!cursor.isNull(sensorHeartRateIndex)) {
|
||||||
trackPoint.setHeartRate(cursor.getFloat(indexes.sensorHeartRateIndex));
|
trackPoint.setHeartRate(cursor.getFloat(sensorHeartRateIndex));
|
||||||
}
|
}
|
||||||
if (!cursor.isNull(indexes.sensorCadenceIndex)) {
|
if (!cursor.isNull(sensorCadenceIndex)) {
|
||||||
trackPoint.setCadence(cursor.getFloat(indexes.sensorCadenceIndex));
|
trackPoint.setCadence(cursor.getFloat(sensorCadenceIndex));
|
||||||
}
|
}
|
||||||
if (!cursor.isNull(indexes.sensorDistanceIndex)) {
|
if (!cursor.isNull(sensorDistanceIndex)) {
|
||||||
trackPoint.setSensorDistance(Distance.of(cursor.getFloat(indexes.sensorDistanceIndex)));
|
trackPoint.setSensorDistance(Distance.of(cursor.getFloat(sensorDistanceIndex)));
|
||||||
}
|
}
|
||||||
if (!cursor.isNull(indexes.sensorPowerIndex)) {
|
if (!cursor.isNull(sensorPowerIndex)) {
|
||||||
trackPoint.setPower(cursor.getFloat(indexes.sensorPowerIndex));
|
trackPoint.setPower(cursor.getFloat(sensorPowerIndex));
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!cursor.isNull(indexes.altitudeGainIndex) && !cursor.isNull(indexes.altitudeLossIndex)) {
|
if (!cursor.isNull(altitudeGainIndex) && !cursor.isNull(altitudeLossIndex)) {
|
||||||
trackPoint.setAltitudeGainLoss(cursor.getFloat(indexes.altitudeGainIndex), cursor.getFloat(indexes.altitudeLossIndex));
|
trackPoint.setAltitudeGainLoss(cursor.getFloat(altitudeGainIndex), cursor.getFloat(altitudeLossIndex));
|
||||||
}
|
}
|
||||||
|
|
||||||
return trackPoint;
|
return trackPoint;
|
||||||
|
|||||||
@@ -8,16 +8,13 @@ import de.dennisguse.opentracks.util.AutoCloseableIterator;
|
|||||||
|
|
||||||
public class TrackPointIterator extends AutoCloseableIterator<TrackPoint> {
|
public class TrackPointIterator extends AutoCloseableIterator<TrackPoint> {
|
||||||
|
|
||||||
private final CachedTrackPointsIndexes indexes;
|
|
||||||
|
|
||||||
TrackPointIterator(ContentProviderUtils contentProviderUtils, Track.Id trackId, TrackPoint.Id startTrackPointId) {
|
TrackPointIterator(ContentProviderUtils contentProviderUtils, Track.Id trackId, TrackPoint.Id startTrackPointId) {
|
||||||
super(contentProviderUtils.getTrackPointCursor(trackId, startTrackPointId));
|
super(contentProviderUtils.getTrackPointCursor(trackId, startTrackPointId));
|
||||||
indexes = new CachedTrackPointsIndexes(cursor);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@NonNull
|
@NonNull
|
||||||
public TrackPoint get() {
|
public TrackPoint get() {
|
||||||
return ContentProviderUtils.fillTrackPoint(cursor, indexes);
|
return ContentProviderUtils.fillTrackPoint(cursor);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
Reference in New Issue
Block a user