diff --git a/src/androidTest/java/de/dennisguse/opentracks/share/DescriptionGeneratorTest.java b/src/androidTest/java/de/dennisguse/opentracks/share/TrackShareSummaryGeneratorTest.java similarity index 51% rename from src/androidTest/java/de/dennisguse/opentracks/share/DescriptionGeneratorTest.java rename to src/androidTest/java/de/dennisguse/opentracks/share/TrackShareSummaryGeneratorTest.java index 14d2dcc5f..b1fcd62da 100644 --- a/src/androidTest/java/de/dennisguse/opentracks/share/DescriptionGeneratorTest.java +++ b/src/androidTest/java/de/dennisguse/opentracks/share/TrackShareSummaryGeneratorTest.java @@ -43,29 +43,26 @@ import de.dennisguse.opentracks.stats.TrackStatistics; import de.dennisguse.opentracks.util.StringUtils; /** - * Tests for {@link DescriptionGenerator}. + * Tests for {@link TrackShareSummaryGenerator}. * * @author Jimmy Shih */ @RunWith(AndroidJUnit4.class) -public class DescriptionGeneratorTest { +public class TrackShareSummaryGeneratorTest { @Rule public final LocaleRule mLocaleRule = new LocaleRule(Locale.ENGLISH); private static final Instant START_TIME = Instant.ofEpochMilli(1288721514000L); - private DescriptionGenerator descriptionGenerator; + private TrackShareSummaryGenerator descriptionGenerator; private final Context context = ApplicationProvider.getApplicationContext(); @Before public void setUp() { - descriptionGenerator = new DescriptionGenerator(ApplicationProvider.getApplicationContext()); + descriptionGenerator = new TrackShareSummaryGenerator(ApplicationProvider.getApplicationContext()); } - /** - * Tests {@link DescriptionGenerator#generateTrackDescription(Track, boolean)}. - */ @Test public void testGenerateTrackDescription() { Track track = new Track(); @@ -82,112 +79,60 @@ public class DescriptionGeneratorTest { track.setTrackStatistics(stats); track.setActivityTypeLocalized("hiking"); String expected = //"Created by" - "OpenTracks (Debug)
"
- + "Name: -
"
- + "Activity type: hiking
"
- + "Description: -
"
- + "Total distance: 20.00 km (12.4 mi)
"
- + "Total time: 10:00
"
- + "Moving time: 05:00
"
- + "Average speed: 120.00 km/h (74.6 mi/h)
"
- + "Average moving speed: 240.00 km/h (149.1 mi/h)
"
- + "Max speed: 360.00 km/h (223.7 mi/h)
"
- + "Average pace: 0:30 min/km (0:48 min/mi)
"
- + "Average moving pace: 0:15 min/km (0:24 min/mi)
"
- + "Fastest pace: 0:10 min/km (0:16 min/mi)
"
- + "Max elevation: 550 m (1804 ft)
"
- + "Min elevation: -500 m (-1640 ft)
"
- + "Elevation gain: 6000 m (19685 ft)
"
- + "Elevation loss: 6000 m (19685 ft)
"
- + "Recorded: " + StringUtils.formatDateTimeWithOffset(OffsetDateTime.ofInstant(START_TIME, ZoneId.systemDefault())) + "
";
+ "OpenTracks (Debug)\n\n"
+ + "Name: -\n"
+ + "Activity type: hiking\n"
+ + "Description: -\n"
+ + "Total distance: 20.00 km (12.4 mi)\n"
+ + "Total time: 10:00\n"
+ + "Moving time: 05:00\n"
+ + "Average speed: 120.00 km/h (74.6 mi/h)\n"
+ + "Average moving speed: 240.00 km/h (149.1 mi/h)\n"
+ + "Max speed: 360.00 km/h (223.7 mi/h)\n"
+ + "Average pace: 0:30 min/km (0:48 min/mi)\n"
+ + "Average moving pace: 0:15 min/km (0:24 min/mi)\n"
+ + "Fastest pace: 0:10 min/km (0:16 min/mi)\n"
+ + "Max elevation: 550 m (1804 ft)\n"
+ + "Min elevation: -500 m (-1640 ft)\n"
+ + "Elevation gain: 6000 m (19685 ft)\n"
+ + "Elevation loss: 6000 m (19685 ft)\n"
+ + "Recorded: " + StringUtils.formatDateTimeWithOffset(OffsetDateTime.ofInstant(START_TIME, ZoneId.systemDefault())) + "\n";
- assertEquals(expected, descriptionGenerator.generateTrackDescription(track, true));
+ assertEquals(expected, descriptionGenerator.generateTrackDescription(track));
}
- @Test
- public void testGenerateTrackDescriptionWithoutMaxMinAltitude() {
- Track track = new Track();
- TrackStatistics stats = new TrackStatistics();
- stats.setTotalDistance(Distance.of(20000));
- stats.setTotalTime(Duration.ofMillis(600000));
- stats.setMovingTime(Duration.ofMillis(300000));
- stats.setMaxSpeed(Speed.of(100));
- stats.setMaxAltitude(Double.POSITIVE_INFINITY);
- stats.setMinAltitude(Double.NEGATIVE_INFINITY);
- stats.setTotalAltitudeGain(6000f);
- stats.setTotalAltitudeLoss(6000f);
- stats.setStartTime(START_TIME);
- track.setTrackStatistics(stats);
- track.setActivityTypeLocalized("hiking");
- String expected = //"Created by"
- "OpenTracks (Debug)
"
- + "Name: -
"
- + "Activity type: hiking
"
- + "Description: -
"
- + "Total distance: 20.00 km (12.4 mi)
"
- + "Total time: 10:00
"
- + "Moving time: 05:00
"
- + "Average speed: 120.00 km/h (74.6 mi/h)
"
- + "Average moving speed: 240.00 km/h (149.1 mi/h)
"
- + "Max speed: 360.00 km/h (223.7 mi/h)
"
- + "Average pace: 0:30 min/km (0:48 min/mi)
"
- + "Average moving pace: 0:15 min/km (0:24 min/mi)
"
- + "Fastest pace: 0:10 min/km (0:16 min/mi)
"
- + "Elevation gain: 6000 m (19685 ft)
"
- + "Elevation loss: 6000 m (19685 ft)
"
- + "Recorded: " + StringUtils.formatDateTimeWithOffset(OffsetDateTime.ofInstant(START_TIME, ZoneId.systemDefault())) + "
";
-
- assertEquals(expected, descriptionGenerator.generateTrackDescription(track, true));
- }
-
-
- /**
- * Tests {@link DescriptionGenerator#writeDistance(Distance, StringBuilder, int, String)}.
- */
@Test
public void testWriteDistance() {
StringBuilder builder = new StringBuilder();
- descriptionGenerator.writeDistance(Distance.of(1100), builder, R.string.description_total_distance, "
");
+ descriptionGenerator.writeDistance(Distance.of(1100), builder, R.string.description_total_distance);
assertEquals("Total distance: 1.10 km (0.7 mi)
", builder.toString());
}
- /**
- * Tests {@link DescriptionGenerator#writeTime(Duration, StringBuilder, int, String)}.
- */
@Test
public void testWriteTime() {
StringBuilder builder = new StringBuilder();
- descriptionGenerator.writeTime(Duration.ofMillis(1000), builder, R.string.description_total_time, "
");
+ descriptionGenerator.writeTime(Duration.ofMillis(1000), builder, R.string.description_total_time);
assertEquals("Total time: 00:01
", builder.toString());
}
- /**
- * Tests {@link DescriptionGenerator#writeSpeed(Speed, StringBuilder, int, String)}.
- */
@Test
public void testWriteSpeed() {
StringBuilder builder = new StringBuilder();
- descriptionGenerator.writeSpeed(Speed.of(1.1), builder, R.string.description_average_speed, "\n");
+ descriptionGenerator.writeSpeed(Speed.of(1.1), builder, R.string.description_average_speed);
assertEquals("Average speed: 3.96 km/h (2.5 mi/h)\n", builder.toString());
}
- /**
- * Tests {@link DescriptionGenerator#writeAltitude(double, StringBuilder, int, String)}.
- */
@Test
public void testWriteAltitude() {
StringBuilder builder = new StringBuilder();
- descriptionGenerator.writeAltitude(4.2, builder, R.string.description_min_altitude, "
");
+ descriptionGenerator.writeAltitude(4.2, builder, R.string.description_min_altitude);
assertEquals("Min elevation: 4 m (14 ft)
", builder.toString());
}
- /**
- * Tests {@link DescriptionGenerator#writePace(Speed, StringBuilder, int, String)}.
- */
@Test
public void testWritePace() {
StringBuilder builder = new StringBuilder();
- descriptionGenerator.writePace(Speed.of(1.1), builder, R.string.description_average_pace_in_minute, "\n");
+ descriptionGenerator.writePace(Speed.of(1.1), builder, R.string.description_average_pace_in_minute);
assertEquals("Average pace: 15:09 min/km (24:23 min/mi)\n", builder.toString());
}
}
diff --git a/src/main/java/de/dennisguse/opentracks/share/ShareUtils.java b/src/main/java/de/dennisguse/opentracks/share/ShareUtils.java
index df803a18e..a386028ec 100644
--- a/src/main/java/de/dennisguse/opentracks/share/ShareUtils.java
+++ b/src/main/java/de/dennisguse/opentracks/share/ShareUtils.java
@@ -42,7 +42,7 @@ public class ShareUtils {
String trackDescription = "";
if (trackIds.length == 1) {
Track track = contentProviderUtils.getTrack(trackIds[0]);
- trackDescription = track == null ? "" : new DescriptionGenerator(context).generateTrackDescription(track, false);
+ trackDescription = track == null ? "" : new TrackShareSummaryGenerator(context).generateTrackDescription(track);
}
String mime = "";
diff --git a/src/main/java/de/dennisguse/opentracks/share/DescriptionGenerator.java b/src/main/java/de/dennisguse/opentracks/share/TrackShareSummaryGenerator.java
similarity index 60%
rename from src/main/java/de/dennisguse/opentracks/share/DescriptionGenerator.java
rename to src/main/java/de/dennisguse/opentracks/share/TrackShareSummaryGenerator.java
index 55faa63cb..1a1039162 100644
--- a/src/main/java/de/dennisguse/opentracks/share/DescriptionGenerator.java
+++ b/src/main/java/de/dennisguse/opentracks/share/TrackShareSummaryGenerator.java
@@ -35,20 +35,17 @@ import de.dennisguse.opentracks.stats.TrackStatistics;
import de.dennisguse.opentracks.util.StringUtils;
/**
- * Generates descriptions for tracks and markers.
+ * Generates descriptions for tracks.
*
* @author Jimmy Shih
*/
-public class DescriptionGenerator {
+public class TrackShareSummaryGenerator {
- private static final String HTML_LINE_BREAK = "
";
- private static final String HTML_PARAGRAPH_SEPARATOR = "
";
private static final String TEXT_LINE_BREAK = "\n";
- private static final String TEXT_PARAGRAPH_SEPARATOR = "\n\n";
private final Context context;
- public DescriptionGenerator(Context context) {
+ public TrackShareSummaryGenerator(Context context) {
this.context = context;
}
@@ -56,156 +53,106 @@ public class DescriptionGenerator {
* Generates a track description.
*
* @param track the track
- * @param html true to output html, false to output plain text
*/
- public String generateTrackDescription(Track track, boolean html) {
- String paragraphSeparator = html ? HTML_PARAGRAPH_SEPARATOR : TEXT_PARAGRAPH_SEPARATOR;
- String lineBreak = html ? HTML_LINE_BREAK : TEXT_LINE_BREAK;
+ public String generateTrackDescription(Track track) {
StringBuilder builder = new StringBuilder();
// Created by
- String creator = html
- ? "" + context.getString(R.string.app_name) + ""
- : context.getString(R.string.app_name);
- builder.append(creator);
+ builder.append(context.getString(R.string.app_name));
+ builder.append(TEXT_LINE_BREAK);
+ builder.append(TEXT_LINE_BREAK);
- builder.append(paragraphSeparator);
-
- writeString(track.getName(), builder, R.string.generic_name_line, lineBreak);
- writeString(track.getActivityTypeLocalized(), builder, R.string.description_activity_type, lineBreak);
- writeString(track.getDescription(), builder, R.string.generic_description_line, lineBreak);
- builder.append(generateTrackStatisticsDescription(track.getTrackStatistics(), html));
+ writeString(track.getName(), builder, R.string.generic_name_line);
+ writeString(track.getActivityTypeLocalized(), builder, R.string.description_activity_type);
+ writeString(track.getDescription(), builder, R.string.generic_description_line);
+ builder.append(generateTrackStatisticsDescription(track.getTrackStatistics()));
return builder.toString();
}
- /**
- * Writes a string to a string builder.
- *
- * @param text the string
- * @param builder the string builder
- * @param resId the resource id containing one string placeholder
- * @param lineBreak the line break
- */
- private void writeString(String text, StringBuilder builder, int resId, String lineBreak) {
+ private void writeString(String text, StringBuilder builder, int resId) {
if (text == null || text.isEmpty()) {
text = context.getString(R.string.value_unknown);
}
builder.append(context.getString(resId, text));
- builder.append(lineBreak);
+ builder.append(TrackShareSummaryGenerator.TEXT_LINE_BREAK);
}
- /**
- * Generates a description for a {@link TrackStatistics}.
- *
- * @param stats the track statistics
- * @param html true to use "
" for line break instead of "\n"
- */
- private String generateTrackStatisticsDescription(TrackStatistics stats, boolean html) {
- String lineBreak = html ? HTML_LINE_BREAK : TEXT_LINE_BREAK;
+ private String generateTrackStatisticsDescription(TrackStatistics stats) {
StringBuilder builder = new StringBuilder();
// Total distance
- writeDistance(stats.getTotalDistance(), builder, R.string.description_total_distance, lineBreak);
+ writeDistance(stats.getTotalDistance(), builder, R.string.description_total_distance);
// Total time
- writeTime(stats.getTotalTime(), builder, R.string.description_total_time, lineBreak);
+ writeTime(stats.getTotalTime(), builder, R.string.description_total_time);
// Moving time
- writeTime(stats.getMovingTime(), builder, R.string.description_moving_time, lineBreak);
+ writeTime(stats.getMovingTime(), builder, R.string.description_moving_time);
// Average speed
- writeSpeed(stats.getAverageSpeed(), builder, R.string.description_average_speed, lineBreak);
+ writeSpeed(stats.getAverageSpeed(), builder, R.string.description_average_speed);
// Average moving speed
- writeSpeed(stats.getAverageMovingSpeed(), builder, R.string.description_average_moving_speed, lineBreak);
+ writeSpeed(stats.getAverageMovingSpeed(), builder, R.string.description_average_moving_speed);
// Max speed
- writeSpeed(stats.getMaxSpeed(), builder, R.string.description_max_speed, lineBreak);
+ writeSpeed(stats.getMaxSpeed(), builder, R.string.description_max_speed);
// Average pace
- writePace(stats.getAverageSpeed(), builder, R.string.description_average_pace_in_minute, lineBreak);
+ writePace(stats.getAverageSpeed(), builder, R.string.description_average_pace_in_minute);
// Average moving pace
- writePace(stats.getAverageMovingSpeed(), builder, R.string.description_average_moving_pace_in_minute, lineBreak);
+ writePace(stats.getAverageMovingSpeed(), builder, R.string.description_average_moving_pace_in_minute);
// Fastest pace
- writePace(stats.getMaxSpeed(), builder, R.string.description_fastest_pace_in_minute, lineBreak);
+ writePace(stats.getMaxSpeed(), builder, R.string.description_fastest_pace_in_minute);
// Min and Max altitude
if (stats.hasAltitudeExtremities()) {
- writeAltitude(stats.getMaxAltitude(), builder, R.string.description_max_altitude, lineBreak);
- writeAltitude(stats.getMinAltitude(), builder, R.string.description_min_altitude, lineBreak);
+ writeAltitude(stats.getMaxAltitude(), builder, R.string.description_max_altitude);
+ writeAltitude(stats.getMinAltitude(), builder, R.string.description_min_altitude);
}
// Altitude gain
if (stats.hasTotalAltitudeGain()) {
- writeAltitude(stats.getTotalAltitudeGain(), builder, R.string.description_altitude_gain, lineBreak);
+ writeAltitude(stats.getTotalAltitudeGain(), builder, R.string.description_altitude_gain);
}
// Altitude loss
if (stats.hasTotalAltitudeLoss()) {
- writeAltitude(stats.getTotalAltitudeLoss(), builder, R.string.description_altitude_loss, lineBreak);
+ writeAltitude(stats.getTotalAltitudeLoss(), builder, R.string.description_altitude_loss);
}
// Recorded time
builder.append(context.getString(R.string.description_recorded_time, StringUtils.formatDateTimeWithOffset(OffsetDateTime.ofInstant(stats.getStartTime(), ZoneId.systemDefault()))));
- builder.append(lineBreak);
+ builder.append(TEXT_LINE_BREAK);
return builder.toString();
}
- /**
- * Writes distance.
- *
- * @param distance distance in meters
- * @param builder StringBuilder to append distance
- * @param resId resource id of distance string
- * @param lineBreak line break string
- */
@VisibleForTesting
- void writeDistance(Distance distance, StringBuilder builder, int resId, String lineBreak) {
+ void writeDistance(Distance distance, StringBuilder builder, int resId) {
double distanceInKm = distance.toKM();
double distanceInMi = distance.toMI();
builder.append(context.getString(resId, distanceInKm, distanceInMi));
- builder.append(lineBreak);
+ builder.append(TEXT_LINE_BREAK);
}
- /**
- * Writes time.
- *
- * @param time time in milliseconds.
- * @param builder StringBuilder to append time
- * @param resId resource id of time string
- * @param lineBreak line break string
- */
@VisibleForTesting
- void writeTime(Duration time, StringBuilder builder, int resId, String lineBreak) {
+ void writeTime(Duration time, StringBuilder builder, int resId) {
builder.append(context.getString(resId, StringUtils.formatElapsedTime(time)));
- builder.append(lineBreak);
+ builder.append(TEXT_LINE_BREAK);
}
- /**
- * Writes speed.
- *
- * @param speed speed in meters per second
- * @param builder StringBuilder to append speed
- * @param resId resource id of speed string
- * @param lineBreak line break string
- */
@VisibleForTesting
- void writeSpeed(Speed speed, StringBuilder builder, int resId, String lineBreak) {
+ void writeSpeed(Speed speed, StringBuilder builder, int resId) {
builder.append(context.getString(resId, speed.toKMH(), speed.toMPH()));
- builder.append(lineBreak);
+ builder.append(TEXT_LINE_BREAK);
}
- /**
- * @param builder StringBuilder to append pace
- * @param resId resource id of pace string
- * @param lineBreak line break string
- */
@VisibleForTesting
- void writePace(Speed speed, StringBuilder builder, int resId, String lineBreak) {
+ void writePace(Speed speed, StringBuilder builder, int resId) {
Pair