Skip to content

Commit ee86a04

Browse files
authored
Merge pull request #232 from xsaco07/fix_gpx_filename
Fix gpx filename
2 parents 6db9101 + 8578a23 commit ee86a04

File tree

4 files changed

+44
-31
lines changed

4 files changed

+44
-31
lines changed

app/src/main/java/net/osmtracker/activity/TrackDetailEditor.java

+31-6
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,22 @@
11
package net.osmtracker.activity;
22

3-
import net.osmtracker.R;
4-
import net.osmtracker.db.TrackContentProvider;
5-
import net.osmtracker.db.model.Track;
6-
73
import android.app.Activity;
84
import android.content.ContentUris;
95
import android.content.ContentValues;
6+
import android.database.Cursor;
107
import android.net.Uri;
118
import android.os.Bundle;
129
import android.widget.ArrayAdapter;
1310
import android.widget.EditText;
1411
import android.widget.Spinner;
1512

13+
import net.osmtracker.R;
14+
import net.osmtracker.db.DataHelper;
15+
import net.osmtracker.db.TrackContentProvider;
16+
import net.osmtracker.db.model.Track;
17+
18+
import java.util.Date;
19+
1620
/**
1721
* Base class for activities that edit track details.
1822
*
@@ -86,11 +90,32 @@ protected boolean save() {
8690

8791
Uri trackUri = ContentUris.withAppendedId(TrackContentProvider.CONTENT_URI_TRACK, trackId);
8892
ContentValues values = new ContentValues();
89-
93+
94+
Cursor cursor = getContentResolver().query(trackUri, null, null,
95+
null, null);
96+
97+
long startDateLong = 0;
98+
String tname = "";
99+
if (cursor != null && cursor.moveToFirst()) {
100+
startDateLong = cursor.getLong(cursor.getColumnIndex(TrackContentProvider.Schema.COL_START_DATE));
101+
tname = cursor.getString(cursor.getColumnIndex(TrackContentProvider.Schema.COL_NAME));
102+
cursor.close();
103+
}
104+
105+
// Saved track startDate
106+
Date startDate = new Date(startDateLong);
107+
90108
// Save name field, if changed, to db.
91109
// String class required for equals to work, and for trim().
92110
String enteredName = etName.getText().toString().trim();
93-
if ((enteredName.length() > 0)) {
111+
112+
// Get default track name
113+
String defaultDate = DataHelper.FILENAME_FORMATTER.format(startDate);
114+
115+
// If no changes were made don't append the date
116+
if ((enteredName.length() > 0 && !enteredName.equals(tname))) {
117+
// Append date to avoid duplicated tracks names
118+
enteredName += "_" + defaultDate;
94119
values.put(TrackContentProvider.Schema.COL_NAME, enteredName);
95120
}
96121

app/src/main/java/net/osmtracker/activity/TrackManager.java

-2
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,6 @@
3838

3939
import java.io.File;
4040
import java.text.DateFormat;
41-
import java.text.SimpleDateFormat;
4241
import java.util.Date;
4342

4443
/**
@@ -523,7 +522,6 @@ private long createNewTrack() throws CreateTrackException {
523522

524523
// Create entry in TRACK table
525524
ContentValues values = new ContentValues();
526-
//values.put(TrackContentProvider.Schema.COL_NAME, DATE_FORMAT.format(new Date(startDate.getTime())));
527525
values.put(TrackContentProvider.Schema.COL_NAME, DataHelper.FILENAME_FORMATTER.format(new Date()));
528526
values.put(TrackContentProvider.Schema.COL_START_DATE, startDate.getTime());
529527
values.put(TrackContentProvider.Schema.COL_ACTIVE, TrackContentProvider.Schema.VAL_TRACK_ACTIVE);

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

+2-7
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,6 @@
99

1010
import net.osmtracker.OSMTracker;
1111
import net.osmtracker.R;
12-
import net.osmtracker.db.DataHelper;
1312
import net.osmtracker.db.TrackContentProvider;
1413
import net.osmtracker.exception.ExportTrackException;
1514

@@ -49,8 +48,6 @@ protected File getExportDirectory(Date startDate) throws ExportTrackException {
4948

5049
if (directoryPerTrack) {
5150

52-
// At least use the start date as the folder name
53-
String trackIsoDate = DataHelper.FILENAME_FORMATTER.format(startDate);
5451
String trackName = "";
5552

5653
// Get the name of the track with the received start date
@@ -59,17 +56,15 @@ protected File getExportDirectory(Date startDate) throws ExportTrackException {
5956

6057
Cursor c = context.getContentResolver().query(
6158
TrackContentProvider.CONTENT_URI_TRACK, null, selection, args, null);
62-
59+
6360
if(c != null && c.moveToFirst()){
6461
int i = c.getColumnIndex(TrackContentProvider.Schema.COL_NAME);
6562
trackName = c.getString(i);
6663
}
6764
if(trackName != null && trackName.length() >= 1) {
6865
trackName = trackName.replace("/", "_");
69-
perTrackDirectory = File.separator + trackName.trim() + "_" + trackIsoDate;
66+
perTrackDirectory = File.separator + trackName.trim();
7067
}
71-
else
72-
perTrackDirectory = File.separator + trackIsoDate;
7368

7469
}
7570

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

+11-16
Original file line numberDiff line numberDiff line change
@@ -234,7 +234,6 @@ private void exportTrackAsGpx(long trackId) throws ExportTrackException {
234234

235235
File trackFile = new File(trackGPXExportDirectory, filenameBase);
236236

237-
238237
Cursor cTrackPoints = cr.query(TrackContentProvider.trackPointsUri(trackId), null,
239238
null, null, TrackContentProvider.Schema.COL_TIMESTAMP + " asc");
240239
Cursor cWayPoints = cr.query(TrackContentProvider.waypointsUri(trackId), null, null,
@@ -539,25 +538,21 @@ protected String buildGPXFilename(Cursor c) {
539538
final String filenameOutput = PreferenceManager.getDefaultSharedPreferences(context).getString(
540539
OSMTracker.Preferences.KEY_OUTPUT_FILENAME,
541540
OSMTracker.Preferences.VAL_OUTPUT_FILENAME);
542-
StringBuffer filenameBase = new StringBuffer();
541+
542+
StringBuilder filenameBase = new StringBuilder();
543543
final int colName = c.getColumnIndexOrThrow(TrackContentProvider.Schema.COL_NAME);
544+
545+
String tname = c.getString(colName);
546+
544547
if ((! c.isNull(colName))
545-
&& (! filenameOutput.equals(OSMTracker.Preferences.VAL_OUTPUT_FILENAME_DATE)))
546-
{
547-
final String tname_raw =
548-
c.getString(colName).trim().replace(':', ';');
549-
final String sanitized =
550-
FILENAME_CHARS_BLACKLIST_PATTERN.matcher(tname_raw).replaceAll("_");
548+
&& (! filenameOutput.equals(OSMTracker.Preferences.VAL_OUTPUT_FILENAME_DATE))) {
549+
550+
final String tname_raw = tname.trim().replace(':', ';');
551+
final String sanitized = FILENAME_CHARS_BLACKLIST_PATTERN.matcher(tname_raw).replaceAll("_");
552+
551553
filenameBase.append(sanitized);
552554
}
553-
if ((filenameBase.length() == 0)
554-
|| ! filenameOutput.equals(OSMTracker.Preferences.VAL_OUTPUT_FILENAME_NAME))
555-
{
556-
final long startDate = c.getLong(c.getColumnIndex(TrackContentProvider.Schema.COL_START_DATE));
557-
if (filenameBase.length() > 0)
558-
filenameBase.append('_');
559-
filenameBase.append(DataHelper.FILENAME_FORMATTER.format(new Date(startDate)));
560-
}
555+
561556
filenameBase.append(DataHelper.EXTENSION_GPX);
562557
return filenameBase.toString();
563558
}

0 commit comments

Comments
 (0)