package com.github.pfichtner.jrunalyser.base.data.segmenter;
import java.util.List;
import com.github.pfichtner.jrunalyser.base.data.LinkedTrackPoint;
import com.github.pfichtner.jrunalyser.base.data.segment.DefaultSegment;
import com.github.pfichtner.jrunalyser.base.data.segment.Segment;
import com.github.pfichtner.jrunalyser.base.data.stat.DefaultStatistics;
import com.github.pfichtner.jrunalyser.base.data.track.DefaultTrack;
import com.github.pfichtner.jrunalyser.base.data.track.Track;
import com.google.common.collect.ImmutableList;
import com.google.common.collect.Lists;
public interface Segmenter {
Segmenter NULL_SEGMENTER = new Segmenter() {
@Override
public Track segment(Track track) {
return track.getSegments().size() <= 1 ? track
: combineSegments(track);
}
private Track combineSegments(Track track) {
List<LinkedTrackPoint> trkpts = Lists.newArrayList();
for (Segment segment : track.getSegments()) {
trkpts.addAll(segment.getTrackpoints());
}
return new DefaultTrack(track.getId(), track.getMetadata(),
track.getWaypoints(), ImmutableList.of(new DefaultSegment(
trkpts, DefaultStatistics.ofWaypoints(trkpts))),
track.getStatistics());
}
};
Track segment(Track track);
}