package com.github.pfichtner.jrunalyser.base.datasource; import com.github.pfichtner.jrunalyser.base.data.Distance; import com.github.pfichtner.jrunalyser.base.data.Duration; import com.github.pfichtner.jrunalyser.base.data.LinkedTrackPoint; import com.github.pfichtner.jrunalyser.base.data.Speed; import com.github.pfichtner.jrunalyser.base.data.WayPoint; import com.github.pfichtner.jrunalyser.base.data.stat.Statistics; import com.github.pfichtner.jrunalyser.base.util.FixedDistance; import com.github.pfichtner.jrunalyser.base.util.FixedDuration; public class FixedStatistics implements Statistics { private final Statistics delegate; private final Distance distance; private final Duration duration; public FixedStatistics(Duration duration, Statistics delegate) { this.duration = duration; this.delegate = delegate; this.distance = new FixedDuration(duration).getDistance( delegate.getDistance(), delegate.getDuration()); } public FixedStatistics(Distance distance, Statistics delegate) { this.distance = distance; this.delegate = delegate; this.duration = new FixedDistance(distance).getDuration( delegate.getDistance(), delegate.getDuration()); } @Override public Distance getDistance() { return this.distance; } @Override public Duration getDuration() { return this.duration; } @Override public WayPoint getMinElevation() { return this.delegate.getMinElevation(); } @Override public WayPoint getMaxElevation() { return this.delegate.getMaxElevation(); } @Override public int getAscent() { return this.delegate.getAscent(); } @Override public int getDescent() { return this.delegate.getDescent(); } @Override public LinkedTrackPoint getMinSpeed() { return this.delegate.getMinSpeed(); } @Override public LinkedTrackPoint getMaxSpeed() { return this.delegate.getMaxSpeed(); } @Override public Speed getAvgSpeed() { return this.delegate.getAvgSpeed(); } }