package com.github.pfichtner.jrunalyser.base.showcase; import java.io.File; import java.io.IOException; import java.text.DateFormat; import java.text.NumberFormat; import java.text.SimpleDateFormat; import java.util.concurrent.TimeUnit; import com.github.pfichtner.jrunalyser.base.data.DefaultDistance; import com.github.pfichtner.jrunalyser.base.data.Distance; import com.github.pfichtner.jrunalyser.base.data.DistanceUnit; import com.github.pfichtner.jrunalyser.base.data.Duration; import com.github.pfichtner.jrunalyser.base.data.Pace; import com.github.pfichtner.jrunalyser.base.data.Speed; import com.github.pfichtner.jrunalyser.base.data.StaticFileProvider; import com.github.pfichtner.jrunalyser.base.data.jaxb.GpxUnmarshaller; import com.github.pfichtner.jrunalyser.base.data.segment.Segment; import com.github.pfichtner.jrunalyser.base.data.segmenter.Segmenters; import com.github.pfichtner.jrunalyser.base.data.stat.Statistics; import com.github.pfichtner.jrunalyser.base.data.track.Track; public class Showcase { public static void main(String[] args) throws IOException { File gpxFile = StaticFileProvider.getFixFile(); // gets points from a GPX file Track track = GpxUnmarshaller.loadTrack(gpxFile); DistanceUnit du = DistanceUnit.KILOMETERS; TimeUnit tu = TimeUnit.HOURS; Track segmented = Segmenters.distance(DefaultDistance.of(1, du)) .segment(track); NumberFormat nf = NumberFormat.getNumberInstance(); DateFormat df = new SimpleDateFormat("mm:ss"); int i = 0; Speed avgSpeed = segmented.getStatistics().getAvgSpeed(); Pace avgPace = avgSpeed.toPace(TimeUnit.MINUTES, du); Distance distance = segmented.getStatistics().getDistance() .convertTo(du); Double d = Double.valueOf((long) avgPace.getValue( TimeUnit.MILLISECONDS, avgPace.getDistanceUnit())); System.out.println(gpxFile.getName() + " " + nf.format(distance.getValue(du)) + " " + du + " +" + segmented.getStatistics().getAscent() + "m -" + segmented.getStatistics().getDescent() + "m, Speed " + nf.format(avgSpeed.getValue(du, tu)) + ", Pace " + df.format(d)); for (Segment segment : segmented.getSegments()) { avgSpeed = segment.getStatistics().getAvgSpeed().convert(du, tu); avgPace = avgSpeed.toPace(TimeUnit.MINUTES, du); Statistics stats = segment.getStatistics(); distance = stats.getDistance(); d = Double.valueOf((long) avgPace.getValue(TimeUnit.MILLISECONDS, avgPace.getDistanceUnit())); Duration duration = segment.getStatistics().getDuration(); System.out.println("Segment #" + ++i + " " + nf.format(distance.getValue(du)) + " " + du + " with " + segment.getTrackpoints().size() + " elements +" + stats.getAscent() + "m -" + stats.getDescent() + "m, " + duration.getValue(TimeUnit.SECONDS) + " " + duration.getTimeUnit() + ", Speed " + nf.format(avgSpeed.getValue(du, tu)) + ", Pace " + df.format(d)); } } }