package com.github.pfichtner.jrunalyser.base.util;
import static com.google.common.base.Preconditions.checkNotNull;
import static com.google.common.base.Preconditions.checkState;
import java.util.Date;
import java.util.List;
import com.github.pfichtner.jrunalyser.base.data.LinkedTrackPoint;
import com.github.pfichtner.jrunalyser.base.data.segment.Segment;
import com.github.pfichtner.jrunalyser.base.data.track.Track;
public final class Validator {
private Validator() {
super();
}
public static Track validate(Track trackArg) {
Track track = checkNotNull(trackArg);
validateSegments(track.getSegments());
validateWaypoints(track.getTrackpoints());
return trackArg;
}
public static List<Segment> validateSegments(List<Segment> segments) {
for (Segment segment : checkNotNull(segments)) {
validateWaypoints(segment.getTrackpoints());
}
return segments;
}
public static List<? extends LinkedTrackPoint> validateWaypoints(
List<? extends LinkedTrackPoint> wps) {
checkState(!checkNotNull(wps).isEmpty());
LinkedTrackPoint old = null;
for (LinkedTrackPoint wp : wps) {
if (old != null) {
checkState(wp.getTime().longValue() >= old.getTime()
.longValue(), "%s < %s (%s %s", new Date(wp.getTime()
.longValue()), new Date(old.getTime().longValue()),
old, wp);
}
old = wp;
}
return wps;
}
}