package com.github.pfichtner.jrunalyser.base.showcase;
import java.util.Comparator;
import java.util.List;
import com.github.pfichtner.jrunalyser.base.data.Coordinate;
import com.github.pfichtner.jrunalyser.base.data.GeoUtil;
import com.github.pfichtner.jrunalyser.base.data.track.Track;
import com.github.pfichtner.jrunalyser.base.data.track.comparator.TrackComparators.FBC;
import com.github.pfichtner.jrunalyser.base.util.format.LatLonFormatter;
public final class Util {
private Util() {
super();
}
public static void dumpComparators(final Track ta, final Track tb,
List<Comparator<Track>> comparators) {
for (Comparator<Track> comparator : comparators) {
dumpComparator(ta, tb, comparator);
}
}
public static void dumpComparator(final Track ta, final Track tb,
Comparator<Track> comparator) {
String add = "";
if (comparator instanceof FBC) {
FBC<?> fbc = ((FBC<?>) comparator);
Object oa = fbc.applyA(ta);
Object ob = fbc.applyB(tb);
if (oa instanceof Coordinate && ob instanceof Coordinate) {
Coordinate ca = (Coordinate) oa;
Coordinate cb = (Coordinate) ob;
add = " (" + LatLonFormatter.instance.format(ca) + " vs. "
+ LatLonFormatter.instance.format(cb) + " (diff: "
+ GeoUtil.calcDistance(ca, cb) + "))";
} else {
add = " (" + oa + " vs. " + ob + ")";
}
}
System.out
.println(comparator + ": " + comparator.compare(ta, tb) + add);
}
}