From b4fee2de94538ba748a618df5ee5fa34cc66511f Mon Sep 17 00:00:00 2001 From: Jimmy Shih Date: Wed, 13 Jun 2012 12:49:28 -0700 Subject: [PATCH] Add a category icon in Track.java and TracksColumns.java. Clean up Track.java and TracksColumns.java. --- .../mytracks/AggregatedStatsActivity.java | 4 +- .../apps/mytracks/SearchListActivity.java | 2 +- .../content/DescriptionGeneratorImpl.java | 2 +- .../apps/mytracks/content/SearchEngine.java | 2 +- .../mytracks/fragments/ChartFragment.java | 4 +- .../apps/mytracks/fragments/MapFragment.java | 2 +- .../mytracks/fragments/StatsFragment.java | 6 +- .../apps/mytracks/io/docs/SendDocsUtils.java | 2 +- .../apps/mytracks/io/file/GpxImporter.java | 2 +- .../apps/mytracks/io/file/TcxTrackWriter.java | 7 +- .../SendFusionTablesAsyncTask.java | 2 +- .../fusiontables/SendFusionTablesUtils.java | 4 +- .../mytracks/io/maps/SendMapsAsyncTask.java | 2 +- .../io/sendtogoogle/SendToGoogleUtils.java | 8 +- .../maps/DynamicSpeedTrackPathDescriptor.java | 2 +- .../services/TrackRecordingService.java | 8 +- .../apps/mytracks/util/ChartURLGenerator.java | 4 +- .../apps/mytracks/util/LocationUtils.java | 3 +- .../mytracks/widgets/TrackWidgetProvider.java | 2 +- .../content/MyTracksProviderUtilsImpl.java | 4 +- .../android/apps/mytracks/content/Track.java | 176 +++++++++--------- .../apps/mytracks/content/TracksColumns.java | 85 +++++---- .../content/DescriptionGeneratorImplTest.java | 2 +- .../mytracks/content/SearchEngineTest.java | 2 +- .../mytracks/io/docs/SendDocsUtilsTest.java | 2 +- .../mytracks/io/file/GpxImporterTest.java | 5 +- .../SendFusionTablesUtilsTest.java | 6 +- .../sendtogoogle/SendToGoogleUtilsTest.java | 9 +- .../services/TrackRecordingServiceTest.java | 4 +- .../mytracks/util/ChartURLGeneratorTest.java | 2 +- 30 files changed, 190 insertions(+), 175 deletions(-) diff --git a/MyTracks/src/com/google/android/apps/mytracks/AggregatedStatsActivity.java b/MyTracks/src/com/google/android/apps/mytracks/AggregatedStatsActivity.java index 70edb2f37..872175807 100644 --- a/MyTracks/src/com/google/android/apps/mytracks/AggregatedStatsActivity.java +++ b/MyTracks/src/com/google/android/apps/mytracks/AggregatedStatsActivity.java @@ -49,9 +49,9 @@ public class AggregatedStatsActivity extends AbstractMyTracksActivity { List tracks = MyTracksProviderUtils.Factory.get(this).getAllTracks(); TripStatistics tripStatistics = null; if (!tracks.isEmpty()) { - tripStatistics = new TripStatistics(tracks.iterator().next().getStatistics()); + tripStatistics = new TripStatistics(tracks.iterator().next().getTripStatistics()); for (int i = 1; i < tracks.size(); i++) { - tripStatistics.merge(tracks.get(i).getStatistics()); + tripStatistics.merge(tracks.get(i).getTripStatistics()); } } return tripStatistics; diff --git a/MyTracks/src/com/google/android/apps/mytracks/SearchListActivity.java b/MyTracks/src/com/google/android/apps/mytracks/SearchListActivity.java index 4863c3195..0d2c580e9 100644 --- a/MyTracks/src/com/google/android/apps/mytracks/SearchListActivity.java +++ b/MyTracks/src/com/google/android/apps/mytracks/SearchListActivity.java @@ -419,7 +419,7 @@ public class SearchListActivity extends AbstractMyTracksActivity implements Dele */ private void prepareTrackForDisplay(Track track, Map resultMap) { boolean isRecording = track.getId() == recordingTrackId; - TripStatistics tripStatitics = track.getStatistics(); + TripStatistics tripStatitics = track.getTripStatistics(); resultMap.put(NAME_FIELD, track.getName()); resultMap.put(ICON_FIELD, isRecording ? R.drawable.menu_record_track : R.drawable.track); resultMap.put(ICON_CONTENT_DESCRIPTION_FIELD, getString(isRecording ? R.string.icon_recording diff --git a/MyTracks/src/com/google/android/apps/mytracks/content/DescriptionGeneratorImpl.java b/MyTracks/src/com/google/android/apps/mytracks/content/DescriptionGeneratorImpl.java index 0263800d1..1320d9a22 100644 --- a/MyTracks/src/com/google/android/apps/mytracks/content/DescriptionGeneratorImpl.java +++ b/MyTracks/src/com/google/android/apps/mytracks/content/DescriptionGeneratorImpl.java @@ -64,7 +64,7 @@ public class DescriptionGeneratorImpl implements DescriptionGenerator { writeString(track.getName(), builder, R.string.generic_name_line, lineBreak); writeString(track.getCategory(), builder, R.string.description_activity_type, lineBreak); writeString(track.getDescription(), builder, R.string.generic_description_line, lineBreak); - builder.append(generateTripStatisticsDescription(track.getStatistics(), html)); + builder.append(generateTripStatisticsDescription(track.getTripStatistics(), html)); // Elevation chart if (html && distances != null && elevations != null) { diff --git a/MyTracks/src/com/google/android/apps/mytracks/content/SearchEngine.java b/MyTracks/src/com/google/android/apps/mytracks/content/SearchEngine.java index a963ded80..46fd69172 100644 --- a/MyTracks/src/com/google/android/apps/mytracks/content/SearchEngine.java +++ b/MyTracks/src/com/google/android/apps/mytracks/content/SearchEngine.java @@ -261,7 +261,7 @@ public class SearchEngine { score *= getTitleBoost(query, track.getName(), track.getDescription(), track.getCategory()); - TripStatistics statistics = track.getStatistics(); + TripStatistics statistics = track.getTripStatistics(); // TODO: Also boost for proximity to the currently-centered position on the map. score *= getDistanceBoost(query, statistics.getMeanLatitude(), statistics.getMeanLongitude()); diff --git a/MyTracks/src/com/google/android/apps/mytracks/fragments/ChartFragment.java b/MyTracks/src/com/google/android/apps/mytracks/fragments/ChartFragment.java index fb8d108dd..be9c1ff28 100644 --- a/MyTracks/src/com/google/android/apps/mytracks/fragments/ChartFragment.java +++ b/MyTracks/src/com/google/android/apps/mytracks/fragments/ChartFragment.java @@ -185,11 +185,11 @@ public class ChartFragment extends Fragment implements TrackDataListener { @Override public void onTrackUpdated(Track track) { - if (track == null || track.getStatistics() == null) { + if (track == null || track.getTripStatistics() == null) { trackMaxSpeed = 0.0; return; } - trackMaxSpeed = track.getStatistics().getMaxSpeed(); + trackMaxSpeed = track.getTripStatistics().getMaxSpeed(); } @Override diff --git a/MyTracks/src/com/google/android/apps/mytracks/fragments/MapFragment.java b/MyTracks/src/com/google/android/apps/mytracks/fragments/MapFragment.java index 3b02a22ac..5ce7b4a28 100644 --- a/MyTracks/src/com/google/android/apps/mytracks/fragments/MapFragment.java +++ b/MyTracks/src/com/google/android/apps/mytracks/fragments/MapFragment.java @@ -522,7 +522,7 @@ public class MapFragment extends Fragment return; } - TripStatistics tripStatistics = track.getStatistics(); + TripStatistics tripStatistics = track.getTripStatistics(); int bottom = tripStatistics.getBottom(); int left = tripStatistics.getLeft(); int latitudeSpanE6 = tripStatistics.getTop() - bottom; diff --git a/MyTracks/src/com/google/android/apps/mytracks/fragments/StatsFragment.java b/MyTracks/src/com/google/android/apps/mytracks/fragments/StatsFragment.java index 49b7b374d..f87c5f832 100644 --- a/MyTracks/src/com/google/android/apps/mytracks/fragments/StatsFragment.java +++ b/MyTracks/src/com/google/android/apps/mytracks/fragments/StatsFragment.java @@ -163,15 +163,15 @@ public class StatsFragment extends Fragment implements TrackDataListener { getActivity().runOnUiThread(new Runnable() { @Override public void run() { - if (track == null || track.getStatistics() == null) { + if (track == null || track.getTripStatistics() == null) { lastLocation = null; lastTripStatistics = null; updateUi(); return; } - lastTripStatistics = track.getStatistics(); + lastTripStatistics = track.getTripStatistics(); - startTime = track.getStatistics().getStartTime(); + startTime = track.getTripStatistics().getStartTime(); if (!isRecording()) { lastLocation = null; } diff --git a/MyTracks/src/com/google/android/apps/mytracks/io/docs/SendDocsUtils.java b/MyTracks/src/com/google/android/apps/mytracks/io/docs/SendDocsUtils.java index 568c48002..87cd2e6e4 100644 --- a/MyTracks/src/com/google/android/apps/mytracks/io/docs/SendDocsUtils.java +++ b/MyTracks/src/com/google/android/apps/mytracks/io/docs/SendDocsUtils.java @@ -284,7 +284,7 @@ public class SendDocsUtils { */ @VisibleForTesting static String getRowContent(Track track, boolean metricUnits, Context context) { - TripStatistics stats = track.getStatistics(); + TripStatistics stats = track.getTripStatistics(); String distanceUnit = context.getString( metricUnits ? R.string.unit_kilometer : R.string.unit_mile); diff --git a/MyTracks/src/com/google/android/apps/mytracks/io/file/GpxImporter.java b/MyTracks/src/com/google/android/apps/mytracks/io/file/GpxImporter.java index 0092dcb36..7fe573a8d 100644 --- a/MyTracks/src/com/google/android/apps/mytracks/io/file/GpxImporter.java +++ b/MyTracks/src/com/google/android/apps/mytracks/io/file/GpxImporter.java @@ -422,7 +422,7 @@ public class GpxImporter extends DefaultHandler { statsBuilder.pauseAt(lastLocation.getTime()); track.setStopId(getLastPointId()); track.setNumberOfPoints(numberOfLocations); - track.setStatistics(statsBuilder.getStatistics()); + track.setTripStatistics(statsBuilder.getStatistics()); providerUtils.updateTrack(track); tracksWritten.add(track.getId()); isCurrentTrackRollbackable = false; diff --git a/MyTracks/src/com/google/android/apps/mytracks/io/file/TcxTrackWriter.java b/MyTracks/src/com/google/android/apps/mytracks/io/file/TcxTrackWriter.java index f1b0ca8d6..e2c12a9de 100644 --- a/MyTracks/src/com/google/android/apps/mytracks/io/file/TcxTrackWriter.java +++ b/MyTracks/src/com/google/android/apps/mytracks/io/file/TcxTrackWriter.java @@ -147,15 +147,16 @@ public class TcxTrackWriter implements TrackFormatWriter { @Override public void writeBeginTrack(Location firstPoint) { if (printWriter != null) { - String startTime = StringUtils.formatDateTimeIso8601(track.getStatistics().getStartTime()); - long totalTimeInSeconds = track.getStatistics().getTotalTime() / 1000; + String startTime = StringUtils.formatDateTimeIso8601( + track.getTripStatistics().getStartTime()); + long totalTimeInSeconds = track.getTripStatistics().getTotalTime() / 1000; printWriter.println(""); printWriter.println(""); printWriter.println("" + startTime + ""); printWriter.println(""); printWriter.println("" + totalTimeInSeconds + ""); - printWriter.println("" + track.getStatistics().getTotalDistance() + printWriter.println("" + track.getTripStatistics().getTotalDistance() + ""); // is required, just put in 0. printWriter.println("0"); diff --git a/MyTracks/src/com/google/android/apps/mytracks/io/fusiontables/SendFusionTablesAsyncTask.java b/MyTracks/src/com/google/android/apps/mytracks/io/fusiontables/SendFusionTablesAsyncTask.java index f921a2452..cf2958ce7 100644 --- a/MyTracks/src/com/google/android/apps/mytracks/io/fusiontables/SendFusionTablesAsyncTask.java +++ b/MyTracks/src/com/google/android/apps/mytracks/io/fusiontables/SendFusionTablesAsyncTask.java @@ -221,7 +221,7 @@ public class SendFusionTablesAsyncTask extends AbstractSendAsyncTask { // For chart server, limit the number of elevation readings to 250. int elevationSamplingFrequency = Math.max(1, (int) (locationsCount / 250.0)); TripStatisticsBuilder tripStatisticsBuilder = new TripStatisticsBuilder( - track.getStatistics().getStartTime()); + track.getTripStatistics().getStartTime()); DoubleBuffer elevationBuffer = new DoubleBuffer(Constants.ELEVATION_SMOOTHING_FACTOR); Vector distances = new Vector(); Vector elevations = new Vector(); diff --git a/MyTracks/src/com/google/android/apps/mytracks/io/fusiontables/SendFusionTablesUtils.java b/MyTracks/src/com/google/android/apps/mytracks/io/fusiontables/SendFusionTablesUtils.java index aaea51691..1c12cf27e 100644 --- a/MyTracks/src/com/google/android/apps/mytracks/io/fusiontables/SendFusionTablesUtils.java +++ b/MyTracks/src/com/google/android/apps/mytracks/io/fusiontables/SendFusionTablesUtils.java @@ -52,14 +52,14 @@ public class SendFusionTablesUtils { * @return the url. */ public static String getMapUrl(Track track) { - if (track == null || track.getStatistics() == null || track.getTableId() == null) { + if (track == null || track.getTripStatistics() == null || track.getTableId() == null) { Log.e(TAG, "Invalid track"); return null; } // TODO(jshih): Determine the correct bounding box and zoom level that // will show the entire track. - TripStatistics stats = track.getStatistics(); + TripStatistics stats = track.getTripStatistics(); double latE6 = stats.getBottom() + (stats.getTop() - stats.getBottom()) / 2; double lonE6 = stats.getLeft() + (stats.getRight() - stats.getLeft()) / 2; int z = 15; diff --git a/MyTracks/src/com/google/android/apps/mytracks/io/maps/SendMapsAsyncTask.java b/MyTracks/src/com/google/android/apps/mytracks/io/maps/SendMapsAsyncTask.java index 789e03491..660e0ead4 100644 --- a/MyTracks/src/com/google/android/apps/mytracks/io/maps/SendMapsAsyncTask.java +++ b/MyTracks/src/com/google/android/apps/mytracks/io/maps/SendMapsAsyncTask.java @@ -270,7 +270,7 @@ public class SendMapsAsyncTask extends AbstractSendAsyncTask { // For chart server, limit the number of elevation readings to 250. int elevationSamplingFrequency = Math.max(1, (int) (locationsCount / 250.0)); TripStatisticsBuilder tripStatisticsBuilder = new TripStatisticsBuilder( - track.getStatistics().getStartTime()); + track.getTripStatistics().getStartTime()); DoubleBuffer elevationBuffer = new DoubleBuffer(Constants.ELEVATION_SMOOTHING_FACTOR); Vector distances = new Vector(); Vector elevations = new Vector(); diff --git a/MyTracks/src/com/google/android/apps/mytracks/io/sendtogoogle/SendToGoogleUtils.java b/MyTracks/src/com/google/android/apps/mytracks/io/sendtogoogle/SendToGoogleUtils.java index 142c20813..431fb1b50 100644 --- a/MyTracks/src/com/google/android/apps/mytracks/io/sendtogoogle/SendToGoogleUtils.java +++ b/MyTracks/src/com/google/android/apps/mytracks/io/sendtogoogle/SendToGoogleUtils.java @@ -56,8 +56,8 @@ public class SendToGoogleUtils { segment.setDescription(""); segment.setCategory(track.getCategory()); - TripStatistics segmentStats = segment.getStatistics(); - TripStatistics trackStats = track.getStatistics(); + TripStatistics segmentStats = segment.getTripStatistics(); + TripStatistics trackStats = track.getTripStatistics(); segmentStats.setStartTime(trackStats.getStartTime()); segmentStats.setStopTime(trackStats.getStopTime()); boolean startNewTrackSegment = false; @@ -78,7 +78,7 @@ public class SendToGoogleUtils { segment.setName(track.getName()); segment.setDescription(""); segment.setCategory(track.getCategory()); - segmentStats = segment.getStatistics(); + segmentStats = segment.getTripStatistics(); } if (loc.getLatitude() <= 90) { @@ -119,7 +119,7 @@ public class SendToGoogleUtils { } // For a new segment, sets it stop time - TripStatistics segmentStats = segment.getStatistics(); + TripStatistics segmentStats = segment.getTripStatistics(); if (segmentStats.getStopTime() < 0) { Location lastLocation = segment.getLocations().get(segment.getLocations().size() - 1); segmentStats.setStopTime(lastLocation.getTime()); diff --git a/MyTracks/src/com/google/android/apps/mytracks/maps/DynamicSpeedTrackPathDescriptor.java b/MyTracks/src/com/google/android/apps/mytracks/maps/DynamicSpeedTrackPathDescriptor.java index 13520ee78..6e636ce6f 100644 --- a/MyTracks/src/com/google/android/apps/mytracks/maps/DynamicSpeedTrackPathDescriptor.java +++ b/MyTracks/src/com/google/android/apps/mytracks/maps/DynamicSpeedTrackPathDescriptor.java @@ -97,7 +97,7 @@ public class DynamicSpeedTrackPathDescriptor implements TrackPathDescriptor, Log.d(TAG, "No track for " + selectedTrackId); return false; } - TripStatistics stats = track.getStatistics(); + TripStatistics stats = track.getTripStatistics(); double newAverageMovingSpeed = (int) Math.floor( stats.getAverageMovingSpeed() * UnitConversions.MS_TO_KMH); diff --git a/MyTracks/src/com/google/android/apps/mytracks/services/TrackRecordingService.java b/MyTracks/src/com/google/android/apps/mytracks/services/TrackRecordingService.java index aab3955c1..e0c47d701 100644 --- a/MyTracks/src/com/google/android/apps/mytracks/services/TrackRecordingService.java +++ b/MyTracks/src/com/google/android/apps/mytracks/services/TrackRecordingService.java @@ -420,7 +420,7 @@ public class TrackRecordingService extends Service { // Check if the last modified time is within the acceptable range. long lastModified = - track.getStatistics() != null ? track.getStatistics().getStopTime() : 0; + track.getTripStatistics() != null ? track.getTripStatistics().getStopTime() : 0; Log.d(TAG, "shouldResumeTrack: lastModified = " + lastModified + ", autoResumeTrackTimeout: " + autoResumeTrackTimeout); @@ -579,7 +579,7 @@ public class TrackRecordingService extends Service { acquireWakeLock(); Track track = new Track(); - TripStatistics trackStats = track.getStatistics(); + TripStatistics trackStats = track.getTripStatistics(); trackStats.setStartTime(startTime); track.setStartId(-1); Uri trackUri = providerUtils.insertTrack(track); @@ -620,7 +620,7 @@ public class TrackRecordingService extends Service { Log.d(TAG, "Restoring stats of track with ID: " + track.getId()); - TripStatistics stats = track.getStatistics(); + TripStatistics stats = track.getTripStatistics(); statsBuilder = new TripStatisticsBuilder(stats.getStartTime()); statsBuilder.setMinRecordingDistance(minRecordingDistance); @@ -1031,7 +1031,7 @@ public class TrackRecordingService extends Service { isRecording = false; Track recordedTrack = providerUtils.getTrack(recordingTrackId); if (recordedTrack != null) { - TripStatistics stats = recordedTrack.getStatistics(); + TripStatistics stats = recordedTrack.getTripStatistics(); stats.setStopTime(System.currentTimeMillis()); stats.setTotalTime(stats.getStopTime() - stats.getStartTime()); long lastRecordedLocationId = diff --git a/MyTracks/src/com/google/android/apps/mytracks/util/ChartURLGenerator.java b/MyTracks/src/com/google/android/apps/mytracks/util/ChartURLGenerator.java index 469dfd45f..91f3a03cc 100644 --- a/MyTracks/src/com/google/android/apps/mytracks/util/ChartURLGenerator.java +++ b/MyTracks/src/com/google/android/apps/mytracks/util/ChartURLGenerator.java @@ -75,7 +75,7 @@ public class ChartURLGenerator { } // Round it up. - TripStatistics stats = track.getStatistics(); + TripStatistics stats = track.getTripStatistics(); double effectiveMaxY = metricUnits ? stats.getMaxElevation() : stats.getMaxElevation() * UnitConversions.M_TO_FT; @@ -155,7 +155,7 @@ public class ChartURLGenerator { } private static double getNormalizedDistance(double d, Track track) { - return d / track.getStatistics().getTotalDistance(); + return d / track.getTripStatistics().getTotalDistance(); } private static double getNormalizedElevation( diff --git a/MyTracks/src/com/google/android/apps/mytracks/util/LocationUtils.java b/MyTracks/src/com/google/android/apps/mytracks/util/LocationUtils.java index 6ee4eee41..8107ca8c7 100644 --- a/MyTracks/src/com/google/android/apps/mytracks/util/LocationUtils.java +++ b/MyTracks/src/com/google/android/apps/mytracks/util/LocationUtils.java @@ -18,7 +18,6 @@ package com.google.android.apps.mytracks.util; import com.google.android.apps.mytracks.Constants; import com.google.android.apps.mytracks.content.Track; import com.google.android.apps.mytracks.stats.TripStatistics; - import com.google.android.maps.GeoPoint; import android.location.Location; @@ -181,7 +180,7 @@ public class LocationUtils { Track piece = null; do { piece = new Track(); - TripStatistics pieceStats = piece.getStatistics(); + TripStatistics pieceStats = piece.getTripStatistics(); piece.setId(track.getId()); piece.setName(track.getName()); piece.setDescription(track.getDescription()); diff --git a/MyTracks/src/com/google/android/apps/mytracks/widgets/TrackWidgetProvider.java b/MyTracks/src/com/google/android/apps/mytracks/widgets/TrackWidgetProvider.java index c3d3f19f8..514903268 100644 --- a/MyTracks/src/com/google/android/apps/mytracks/widgets/TrackWidgetProvider.java +++ b/MyTracks/src/com/google/android/apps/mytracks/widgets/TrackWidgetProvider.java @@ -216,7 +216,7 @@ public class TrackWidgetProvider extends AppWidgetProvider private void updateStatistics(RemoteViews remoteViews) { Track track = selectedTrackId != PreferencesUtils.SELECTED_TRACK_ID_DEFAULT ? myTracksProviderUtils.getTrack(selectedTrackId) : myTracksProviderUtils.getLastTrack(); - TripStatistics tripStatistics = track == null ? null : track.getStatistics(); + TripStatistics tripStatistics = track == null ? null : track.getTripStatistics(); String distance = tripStatistics == null ? unknown : StringUtils.formatDistance(context, tripStatistics.getTotalDistance(), metricUnits); int timeLabelId = useTotalTime ? R.string.stats_total_time : R.string.stats_moving_time; diff --git a/MyTracksLib/src/com/google/android/apps/mytracks/content/MyTracksProviderUtilsImpl.java b/MyTracksLib/src/com/google/android/apps/mytracks/content/MyTracksProviderUtilsImpl.java index 57a1f12d9..78320f6a8 100644 --- a/MyTracksLib/src/com/google/android/apps/mytracks/content/MyTracksProviderUtilsImpl.java +++ b/MyTracksLib/src/com/google/android/apps/mytracks/content/MyTracksProviderUtilsImpl.java @@ -92,7 +92,7 @@ public class MyTracksProviderUtilsImpl implements MyTracksProviderUtils { @Override public ContentValues createContentValues(Track track) { ContentValues values = new ContentValues(); - TripStatistics stats = track.getStatistics(); + TripStatistics stats = track.getTripStatistics(); // Values id < 0 indicate no id is available: if (track.getId() >= 0) { @@ -297,7 +297,7 @@ public class MyTracksProviderUtilsImpl implements MyTracksProviderUtils { int idxMaxGrade = cursor.getColumnIndexOrThrow(TracksColumns.MAXGRADE); Track track = new Track(); - TripStatistics stats = track.getStatistics(); + TripStatistics stats = track.getTripStatistics(); if (!cursor.isNull(idxId)) { track.setId(cursor.getLong(idxId)); } diff --git a/MyTracksLib/src/com/google/android/apps/mytracks/content/Track.java b/MyTracksLib/src/com/google/android/apps/mytracks/content/Track.java index ecb1cb629..90923853f 100644 --- a/MyTracksLib/src/com/google/android/apps/mytracks/content/Track.java +++ b/MyTracksLib/src/com/google/android/apps/mytracks/content/Track.java @@ -13,6 +13,7 @@ * License for the specific language governing permissions and limitations under * the License. */ + package com.google.android.apps.mytracks.content; import com.google.android.apps.mytracks.stats.TripStatistics; @@ -24,98 +25,89 @@ import android.os.Parcelable; import java.util.ArrayList; /** - * A class representing a (GPS) Track. - * - * TODO: hashCode and equals - * + * A track. + * * @author Leif Hendrik Wilden * @author Rodrigo Damazio */ public class Track implements Parcelable { - /** - * Creator for a Track object. - */ - public static class Creator implements Parcelable.Creator { - - public Track createFromParcel(Parcel source) { - ClassLoader classLoader = getClass().getClassLoader(); - Track track = new Track(); - track.id = source.readLong(); - track.name = source.readString(); - track.description = source.readString(); - track.mapId = source.readString(); - track.category = source.readString(); - track.startId = source.readLong(); - track.stopId = source.readLong(); - track.stats = source.readParcelable(classLoader); - - track.numberOfPoints = source.readInt(); - for (int i = 0; i < track.numberOfPoints; ++i) { - Location loc = source.readParcelable(classLoader); - track.locations.add(loc); - } - - track.tableId = source.readString(); - return track; - } - - public Track[] newArray(int size) { - return new Track[size]; - } - } - - public static final Creator CREATOR = new Creator(); - - /** - * The track points (which may not have been loaded). - */ - private ArrayList locations = new ArrayList(); - - /** - * The number of location points (present even if the points themselves were - * not loaded). - */ - private int numberOfPoints = 0; - private long id = -1; private String name = ""; private String description = ""; - private String mapId = ""; - private String tableId = ""; + private String category = ""; + private String categoryIcon = ""; private long startId = -1; private long stopId = -1; - private String category = ""; - private TripStatistics stats = new TripStatistics(); + // The number of location points (present even if the points themselves are + // not loaded) + private int numberOfPoints = 0; + private String mapId = ""; + private String tableId = ""; - public Track() { + private TripStatistics tripStatistics = new TripStatistics(); + + // Location points (which may not have been loaded) + private ArrayList locations = new ArrayList(); + + public Track() {} + + private Track(Parcel in) { + id = in.readLong(); + name = in.readString(); + description = in.readString(); + category = in.readString(); + categoryIcon = in.readString(); + startId = in.readLong(); + stopId = in.readLong(); + numberOfPoints = in.readInt(); + mapId = in.readString(); + tableId = in.readString(); + + ClassLoader classLoader = getClass().getClassLoader(); + for (int i = 0; i < numberOfPoints; ++i) { + Location loc = in.readParcelable(classLoader); + locations.add(loc); + } + + tripStatistics = in.readParcelable(classLoader); } + @Override + public int describeContents() { + return 0; + } + + @Override public void writeToParcel(Parcel dest, int flags) { dest.writeLong(id); dest.writeString(name); dest.writeString(description); - dest.writeString(mapId); dest.writeString(category); + dest.writeString(categoryIcon); dest.writeLong(startId); dest.writeLong(stopId); - dest.writeParcelable(stats, 0); - dest.writeInt(numberOfPoints); + dest.writeString(mapId); + dest.writeString(tableId); for (int i = 0; i < numberOfPoints; ++i) { dest.writeParcelable(locations.get(i), 0); } - - dest.writeString(tableId); + dest.writeParcelable(tripStatistics, 0); } - // Getters and setters: - //--------------------- + public static final Parcelable.Creator CREATOR = new Parcelable.Creator() { + @Override + public Track createFromParcel(Parcel in) { + return new Track(in); + } - public int describeContents() { - return 0; - } + @Override + public Track[] newArray(int size) { + return new Track[size]; + } + }; public long getId() { return id; @@ -133,6 +125,30 @@ public class Track implements Parcelable { this.name = name; } + public String getDescription() { + return description; + } + + public void setDescription(String description) { + this.description = description; + } + + public String getCategory() { + return category; + } + + public void setCategory(String category) { + this.category = category; + } + + public String getCategoryIcon() { + return categoryIcon; + } + + public void setCategoryIcon(String categoryIcon) { + this.categoryIcon = categoryIcon; + } + public long getStartId() { return startId; } @@ -149,12 +165,12 @@ public class Track implements Parcelable { this.stopId = stopId; } - public String getDescription() { - return description; + public int getNumberOfPoints() { + return numberOfPoints; } - public void setDescription(String description) { - this.description = description; + public void setNumberOfPoints(int numberOfPoints) { + this.numberOfPoints = numberOfPoints; } public String getMapId() { @@ -173,22 +189,6 @@ public class Track implements Parcelable { this.tableId = tableId; } - public String getCategory() { - return category; - } - - public void setCategory(String category) { - this.category = category; - } - - public int getNumberOfPoints() { - return numberOfPoints; - } - - public void setNumberOfPoints(int numberOfPoints) { - this.numberOfPoints = numberOfPoints; - } - public void addLocation(Location l) { locations.add(l); } @@ -201,11 +201,11 @@ public class Track implements Parcelable { this.locations = locations; } - public TripStatistics getStatistics() { - return stats; + public TripStatistics getTripStatistics() { + return tripStatistics; } - public void setStatistics(TripStatistics stats) { - this.stats = stats; + public void setTripStatistics(TripStatistics tripStatistics) { + this.tripStatistics = tripStatistics; } } diff --git a/MyTracksLib/src/com/google/android/apps/mytracks/content/TracksColumns.java b/MyTracksLib/src/com/google/android/apps/mytracks/content/TracksColumns.java index d3e0fae4d..f34b686c7 100644 --- a/MyTracksLib/src/com/google/android/apps/mytracks/content/TracksColumns.java +++ b/MyTracksLib/src/com/google/android/apps/mytracks/content/TracksColumns.java @@ -13,51 +13,66 @@ * License for the specific language governing permissions and limitations under * the License. */ + package com.google.android.apps.mytracks.content; import android.net.Uri; import android.provider.BaseColumns; /** - * Defines the URI for the tracks provider and the available column names - * and content types. - * + * Constants for track table. + * * @author Leif Hendrik Wilden */ public interface TracksColumns extends BaseColumns { - public static final Uri CONTENT_URI = - Uri.parse("content://com.google.android.maps.mytracks/tracks"); - public static final String CONTENT_TYPE = - "vnd.android.cursor.dir/vnd.google.track"; - public static final String CONTENT_ITEMTYPE = - "vnd.android.cursor.item/vnd.google.track"; + /** + * Tracks provider uri. + */ + public static final Uri CONTENT_URI = Uri.parse( + "content://com.google.android.maps.mytracks/tracks"); + + /** + * Track content type. + */ + public static final String CONTENT_TYPE = "vnd.android.cursor.dir/vnd.google.track"; + + /** + * Track id content type. + */ + public static final String CONTENT_ITEMTYPE = "vnd.android.cursor.item/vnd.google.track"; + + /** + * Tracks table default sort order. + */ public static final String DEFAULT_SORT_ORDER = "_id"; - /* All columns */ - public static final String NAME = "name"; - public static final String DESCRIPTION = "description"; - public static final String CATEGORY = "category"; - public static final String STARTID = "startid"; - public static final String STOPID = "stopid"; - public static final String STARTTIME = "starttime"; - public static final String STOPTIME = "stoptime"; - public static final String NUMPOINTS = "numpoints"; - public static final String TOTALDISTANCE = "totaldistance"; - public static final String TOTALTIME = "totaltime"; - public static final String MOVINGTIME = "movingtime"; - public static final String AVGSPEED = "avgspeed"; - public static final String AVGMOVINGSPEED = "avgmovingspeed"; - public static final String MAXSPEED = "maxspeed"; - public static final String MINELEVATION = "minelevation"; - public static final String MAXELEVATION = "maxelevation"; - public static final String ELEVATIONGAIN = "elevationgain"; - public static final String MINGRADE = "mingrade"; - public static final String MAXGRADE = "maxgrade"; - public static final String MINLAT = "minlat"; - public static final String MAXLAT = "maxlat"; - public static final String MINLON = "minlon"; - public static final String MAXLON = "maxlon"; - public static final String MAPID = "mapid"; - public static final String TABLEID = "tableid"; + // Tracks table columns + public static final String NAME = "name"; // track name + public static final String DESCRIPTION = "description"; // track description + public static final String CATEGORY = "category"; // track activity type + public static final String CATEGORY_ICON = "categoryicon"; // track activity type icon + public static final String STARTID = "startid"; // first track point id + public static final String STOPID = "stopid"; // last track point id + public static final String STARTTIME = "starttime"; // track start time + public static final String STOPTIME = "stoptime"; // track stop time + public static final String NUMPOINTS = "numpoints"; // number of track points + public static final String TOTALDISTANCE = "totaldistance"; // total distance + public static final String TOTALTIME = "totaltime"; // total time + public static final String MOVINGTIME = "movingtime"; // moving time + public static final String AVGSPEED = "avgspeed"; // average speed + public static final String AVGMOVINGSPEED = "avgmovingspeed"; // average + // moving speed + public static final String MAXSPEED = "maxspeed"; // maximum speed + public static final String MINELEVATION = "minelevation"; // minimum elevation + public static final String MAXELEVATION = "maxelevation"; // maximum elevation + public static final String ELEVATIONGAIN = "elevationgain"; // elevation gain + public static final String MINGRADE = "mingrade"; // minimum grade + public static final String MAXGRADE = "maxgrade"; // maximum grade + public static final String MINLAT = "minlat"; // minimum latitude + public static final String MAXLAT = "maxlat"; // maximum latitude + public static final String MINLON = "minlon"; // minimum longitude + public static final String MAXLON = "maxlon"; // maximum longitude + public static final String MAPID = "mapid"; // Google Maps id + public static final String TABLEID = "tableid"; // Google Fusion Tables id } diff --git a/MyTracksTest/src/com/google/android/apps/mytracks/content/DescriptionGeneratorImplTest.java b/MyTracksTest/src/com/google/android/apps/mytracks/content/DescriptionGeneratorImplTest.java index b3ca5a08c..4a3399c0c 100644 --- a/MyTracksTest/src/com/google/android/apps/mytracks/content/DescriptionGeneratorImplTest.java +++ b/MyTracksTest/src/com/google/android/apps/mytracks/content/DescriptionGeneratorImplTest.java @@ -55,7 +55,7 @@ public class DescriptionGeneratorImplTest extends AndroidTestCase { stats.setMaxGrade(0.42); stats.setMinGrade(0.11); stats.setStartTime(START_TIME); - track.setStatistics(stats); + track.setTripStatistics(stats); track.setCategory("hiking"); String expected = "Created by" + " My Tracks on Android.

" diff --git a/MyTracksTest/src/com/google/android/apps/mytracks/content/SearchEngineTest.java b/MyTracksTest/src/com/google/android/apps/mytracks/content/SearchEngineTest.java index 84c127c1d..9eec03a72 100644 --- a/MyTracksTest/src/com/google/android/apps/mytracks/content/SearchEngineTest.java +++ b/MyTracksTest/src/com/google/android/apps/mytracks/content/SearchEngineTest.java @@ -77,7 +77,7 @@ public class SearchEngineTest extends AndroidTestCase { track.setDescription(description); track.setCategory(category); - TripStatistics stats = track.getStatistics(); + TripStatistics stats = track.getTripStatistics(); if (hoursAgo > 0) { // Started twice hoursAgo, so the average time is hoursAgo. stats.setStartTime(NOW - hoursAgo * 1000L * 60L * 60L * 2); diff --git a/MyTracksTest/src/com/google/android/apps/mytracks/io/docs/SendDocsUtilsTest.java b/MyTracksTest/src/com/google/android/apps/mytracks/io/docs/SendDocsUtilsTest.java index 00b9caee6..0be066b4d 100644 --- a/MyTracksTest/src/com/google/android/apps/mytracks/io/docs/SendDocsUtilsTest.java +++ b/MyTracksTest/src/com/google/android/apps/mytracks/io/docs/SendDocsUtilsTest.java @@ -180,7 +180,7 @@ public class SendDocsUtilsTest extends AndroidTestCase { track.setName("trackName"); track.setDescription("trackDescription"); track.setMapId("trackMapId"); - track.setStatistics(stats); + track.setTripStatistics(stats); return track; } diff --git a/MyTracksTest/src/com/google/android/apps/mytracks/io/file/GpxImporterTest.java b/MyTracksTest/src/com/google/android/apps/mytracks/io/file/GpxImporterTest.java index 7b9b0398e..b833b0d28 100644 --- a/MyTracksTest/src/com/google/android/apps/mytracks/io/file/GpxImporterTest.java +++ b/MyTracksTest/src/com/google/android/apps/mytracks/io/file/GpxImporterTest.java @@ -19,10 +19,9 @@ import static com.google.android.testing.mocking.AndroidMock.eq; import static com.google.android.testing.mocking.AndroidMock.expect; import com.google.android.apps.mytracks.content.MyTracksProviderUtils; +import com.google.android.apps.mytracks.content.MyTracksProviderUtils.Factory; import com.google.android.apps.mytracks.content.Track; import com.google.android.apps.mytracks.content.TracksColumns; -import com.google.android.apps.mytracks.content.MyTracksProviderUtils.Factory; -import com.google.android.apps.mytracks.io.file.GpxImporter; import com.google.android.apps.mytracks.testing.TestingProviderUtilsFactory; import com.google.android.testing.mocking.AndroidMock; import com.google.android.testing.mocking.UsesMocks; @@ -171,7 +170,7 @@ public class GpxImporterTest extends AndroidTestCase { Track track = trackParam.getValue(); assertEquals(TRACK_NAME, track.getName()); assertEquals(TRACK_DESC, track.getDescription()); - assertEquals(DATE_FORMAT2.parse(TRACK_TIME_1).getTime(), track.getStatistics() + assertEquals(DATE_FORMAT2.parse(TRACK_TIME_1).getTime(), track.getTripStatistics() .getStartTime()); assertNotSame(-1, track.getStartId()); assertNotSame(-1, track.getStopId()); diff --git a/MyTracksTest/src/com/google/android/apps/mytracks/io/fusiontables/SendFusionTablesUtilsTest.java b/MyTracksTest/src/com/google/android/apps/mytracks/io/fusiontables/SendFusionTablesUtilsTest.java index 01590997d..d20d5e96b 100644 --- a/MyTracksTest/src/com/google/android/apps/mytracks/io/fusiontables/SendFusionTablesUtilsTest.java +++ b/MyTracksTest/src/com/google/android/apps/mytracks/io/fusiontables/SendFusionTablesUtilsTest.java @@ -47,7 +47,7 @@ public class SendFusionTablesUtilsTest extends TestCase { Track track = new Track(); TripStatistics stats = new TripStatistics(); stats.setBounds((int) 100.E6, (int) 10.E6, (int) 50.E6, (int) 5.E6); - track.setStatistics(stats); + track.setTripStatistics(stats); track.setTableId(null); assertEquals(null, SendFusionTablesUtils.getMapUrl(track)); } @@ -57,7 +57,7 @@ public class SendFusionTablesUtilsTest extends TestCase { */ public void testGetMapUrl_null_stats() { Track track = new Track(); - track.setStatistics(null); + track.setTripStatistics(null); track.setTableId("123"); assertEquals(null, SendFusionTablesUtils.getMapUrl(track)); } @@ -69,7 +69,7 @@ public class SendFusionTablesUtilsTest extends TestCase { Track track = new Track(); TripStatistics stats = new TripStatistics(); stats.setBounds((int) 100.E6, (int) 10.E6, (int) 50.E6, (int) 5.E6); - track.setStatistics(stats); + track.setTripStatistics(stats); track.setTableId("123"); assertEquals( "https://www.google.com/fusiontables/embedviz?" diff --git a/MyTracksTest/src/com/google/android/apps/mytracks/io/sendtogoogle/SendToGoogleUtilsTest.java b/MyTracksTest/src/com/google/android/apps/mytracks/io/sendtogoogle/SendToGoogleUtilsTest.java index fa4629122..3038bd8e8 100644 --- a/MyTracksTest/src/com/google/android/apps/mytracks/io/sendtogoogle/SendToGoogleUtilsTest.java +++ b/MyTracksTest/src/com/google/android/apps/mytracks/io/sendtogoogle/SendToGoogleUtilsTest.java @@ -56,13 +56,14 @@ public class SendToGoogleUtilsTest extends TestCase { */ public void testPrepareTrackSegment_noStopTime() { Track trackStub = TrackStubUtils.createTrack(2); - assertEquals(-1L, trackStub.getStatistics().getStopTime()); + assertEquals(-1L, trackStub.getTripStatistics().getStopTime()); ArrayList tracksArray = new ArrayList(); assertTrue(SendToGoogleUtils.prepareTrackSegment(trackStub, tracksArray)); assertEquals(trackStub, tracksArray.get(0)); // The stop time should be the time of last location - assertEquals(trackStub.getLocations().get(1).getTime(), trackStub.getStatistics().getStopTime()); + assertEquals( + trackStub.getLocations().get(1).getTime(), trackStub.getTripStatistics().getStopTime()); } /** @@ -75,12 +76,12 @@ public class SendToGoogleUtilsTest extends TestCase { // Gives a margin to make sure the this time will be not same with the last // location in the track. long stopTime = System.currentTimeMillis() + 1000; - trackStub.getStatistics().setStopTime(stopTime); + trackStub.getTripStatistics().setStopTime(stopTime); ArrayList tracksArray = new ArrayList(); SendToGoogleUtils.prepareTrackSegment(trackStub, tracksArray); assertEquals(trackStub, tracksArray.get(0)); - assertEquals(stopTime, trackStub.getStatistics().getStopTime()); + assertEquals(stopTime, trackStub.getTripStatistics().getStopTime()); } /** diff --git a/MyTracksTest/src/com/google/android/apps/mytracks/services/TrackRecordingServiceTest.java b/MyTracksTest/src/com/google/android/apps/mytracks/services/TrackRecordingServiceTest.java index a795b3b04..5a9f3ce77 100644 --- a/MyTracksTest/src/com/google/android/apps/mytracks/services/TrackRecordingServiceTest.java +++ b/MyTracksTest/src/com/google/android/apps/mytracks/services/TrackRecordingServiceTest.java @@ -676,7 +676,7 @@ public class TrackRecordingServiceTest extends ServiceTestCase 0); assertTrue(tripStatistics.getStopTime() >= tripStatistics.getStartTime()); diff --git a/MyTracksTest/src/com/google/android/apps/mytracks/util/ChartURLGeneratorTest.java b/MyTracksTest/src/com/google/android/apps/mytracks/util/ChartURLGeneratorTest.java index ea0c9f582..176018b17 100644 --- a/MyTracksTest/src/com/google/android/apps/mytracks/util/ChartURLGeneratorTest.java +++ b/MyTracksTest/src/com/google/android/apps/mytracks/util/ChartURLGeneratorTest.java @@ -33,7 +33,7 @@ public class ChartURLGeneratorTest extends TestCase { Vector distances = new Vector(); Vector elevations = new Vector(); Track t = new Track(); - TripStatistics stats = t.getStatistics(); + TripStatistics stats = t.getTripStatistics(); stats.setMinElevation(0); stats.setMaxElevation(2000); stats.setTotalDistance(100);