Skip to content

Commit 7ef5ee3

Browse files
committed
Refactor: Move segment ID database logic from GPSLogger to DataHelper
1 parent 17aaa02 commit 7ef5ee3

File tree

3 files changed

+24
-27
lines changed

3 files changed

+24
-27
lines changed

app/src/main/java/net/osmtracker/db/DataHelper.java

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,8 @@
1717
import net.osmtracker.db.model.TrackPoint;
1818
import net.osmtracker.db.model.WayPoint;
1919

20+
import org.jetbrains.annotations.NotNull;
21+
2022
import java.io.File;
2123
import java.text.SimpleDateFormat;
2224
import java.util.ArrayList;
@@ -408,6 +410,24 @@ public static long getActiveTrackId(ContentResolver cr) {
408410
return currentTrackId;
409411
}
410412

413+
/**
414+
* Find the segment ID for a track
415+
* @param trackId Id of the track
416+
* @param cr {@link ContentResolver} for query
417+
* @return the segment ID for the track, or 0 if not found
418+
*/
419+
public static long getSegmentIdFor(long trackId, @NotNull ContentResolver cr) {
420+
Cursor ca = cr.query(ContentUris.withAppendedId(TrackContentProvider.CONTENT_URI_TRACK,
421+
trackId),null, null, null, null);
422+
423+
if (! ca.moveToFirst()) {
424+
Log.v(TAG, "Track " + trackId + " not found");
425+
return 0; // <--- Early return ---
426+
}
427+
428+
return Track.build(trackId, ca, cr, true).getMaxSegId();
429+
}
430+
411431
/**
412432
* Change the name of this track.
413433
* @param trackId Id of the track

app/src/main/java/net/osmtracker/gpx/ExportTrackTask.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -351,6 +351,7 @@ protected void writeTrackPoints(String trackName, Writer fw, Cursor c, boolean f
351351
int prevSegId=-1;
352352
for(c.moveToFirst(); !c.isAfterLast(); c.moveToNext(),i++) {
353353
StringBuffer out = new StringBuffer();
354+
354355
int segId = c.getInt(c.getColumnIndex(TrackContentProvider.Schema.COL_SEG_ID));
355356
if(prevSegId != -1 && segId != prevSegId) {
356357
fw.write("\t\t" + "</trkseg>" + "\n");
@@ -634,4 +635,4 @@ public String sanitizeTrackName(String trackName){
634635
public String getErrorMsg() {
635636
return errorMsg;
636637
}
637-
}
638+
}

app/src/main/java/net/osmtracker/service/gps/GPSLogger.java

Lines changed: 2 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,6 @@
66
import android.app.NotificationManager;
77
import android.app.PendingIntent;
88
import android.app.Service;
9-
import android.content.ContentResolver;
10-
import android.content.ContentUris;
119
import android.content.BroadcastReceiver;
1210
import android.content.Context;
1311
import android.content.Intent;
@@ -26,14 +24,11 @@
2624
import androidx.core.content.ContextCompat;
2725
import androidx.preference.PreferenceManager;
2826

29-
import android.database.Cursor;
30-
3127
import net.osmtracker.OSMTracker;
3228
import net.osmtracker.R;
3329
import net.osmtracker.activity.TrackLogger;
3430
import net.osmtracker.db.DataHelper;
3531
import net.osmtracker.db.TrackContentProvider;
36-
import net.osmtracker.db.model.Track;
3732
import net.osmtracker.listener.PressureListener;
3833
import net.osmtracker.listener.SensorListener;
3934

@@ -114,7 +109,6 @@ public class GPSLogger extends Service implements LocationListener {
114109
*/
115110
private PressureListener pressureListener = new PressureListener();
116111

117-
118112
/**
119113
* Receives Intent for way point and notes tracking, and stop/start logging.
120114
*/
@@ -324,31 +318,13 @@ public void onDestroy() {
324318
super.onDestroy();
325319
}
326320

327-
private long getSegIdFor(long trackId) {
328-
ContentResolver cr = getContentResolver();
329-
try(Cursor cursor =
330-
cr.query(ContentUris.withAppendedId(TrackContentProvider.CONTENT_URI_TRACK, trackId),
331-
null, null, null, null)) {
332-
333-
if (! cursor.moveToFirst()) {
334-
Log.v(TAG, "Track "+trackId+" not found");
335-
return 0; // <--- Early return ---
336-
}
337-
338-
return Track
339-
.build(trackId, cursor, cr, true)
340-
.getMaxSegId();
341-
}
342-
}
343-
344321
/**
345322
* Start GPS tracking.
346323
*/
347324
private void startTracking(long trackId) {
348325
currentTrackId = trackId;
349-
currentSegmentId = getSegIdFor(trackId)+1;
350-
Log.v(TAG, "Starting track logging for track #" + trackId +
351-
"/" + currentSegmentId);
326+
currentSegmentId = DataHelper.getSegmentIdFor(trackId, getContentResolver()) + 1;
327+
Log.v(TAG, "Starting track logging for track #" + trackId + " segment #" +"/" + currentSegmentId);
352328
// Refresh notification with correct Track ID
353329
NotificationManager nmgr = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
354330
nmgr.notify(NOTIFICATION_ID, getNotification());

0 commit comments

Comments
 (0)