package au.gov.amsa.geo.adhoc;
import java.io.File;
import java.util.regex.Pattern;
import rx.Observable;
import rx.functions.Func2;
import rx.schedulers.Schedulers;
import au.gov.amsa.risky.format.BinaryFixes;
import au.gov.amsa.util.Files;
import au.gov.amsa.util.Pair;
public class GeoffHosackAdhocMain {
public static void main(String[] args) {
int option = 1;
if (option == 1) {
String filename = "/home/dxm/temp/235099876.track";
// String filename =
// "/media/an/binary-fixes-5-minute/2014/235099876.track";
File file = new File(filename);
BinaryFixes.from(file).doOnNext(System.out::println)
.toSortedList((a, b) -> Long.compare(a.time(), b.time()))
.flatMap(Observable::from).doOnCompleted(() -> System.out.println("complete"))
.subscribe();
} else if (option == 2) {
Observable<File> files = Observable.from(Files.find(new File(
"/media/an/binary-fixes-5-minute/2014"), Pattern.compile("\\d+\\.track")));
Func2<Pair<File, Long>, Pair<File, Long>, Pair<File, Long>> earliest = (p1, p2) -> {
if (p1.b() <= p2.b())
return p1;
else
return p2;
};
files.filter(file -> !file.getName().equals("0.track"))
// read fixes from file
.flatMap(
file -> BinaryFixes.from(file)
.<Pair<File, Long>> map(fix -> Pair.create(file, fix.time()))
.reduce(earliest)
.doOnNext(p -> System.out.println(file + ": " + p))
.subscribeOn(Schedulers.computation()))
//
.reduce(earliest)
// print answer
.doOnNext(System.out::println)
// go
.toBlocking().single();
}
}
}