package au.gov.amsa.animator; import java.io.File; import java.util.Arrays; import au.gov.amsa.risky.format.BinaryFixes; import au.gov.amsa.risky.format.BinaryFixesFormat; import au.gov.amsa.risky.format.Fix; import rx.Observable; import rx.functions.Func2; public class Sources { public static Observable<Fix> singleDay() { File file = new File("/media/an/daily-fixes/2014/2014-02-01.fix"); return BinaryFixes.from(file, true, BinaryFixesFormat.WITH_MMSI); // File file = new File("/media/an/nmea/2014/NMEA_ITU_20140201.gz"); // return Streams.extractFixes(Streams.nmeaFromGzip(file)) // // .filter(fix -> fix.mmsi() == 503433000) // .take(10000000); } public static Observable<Fix> tasmania() { Long[] vessels = new Long[] { 503433000L, 503432000L, 503087000L }; return Observable.from(Arrays.asList(vessels)) .map(mmsi -> new File("/media/an/binary-fixes-5-minute/2015/" + mmsi + ".track")) .flatMap(file -> BinaryFixes.from(file)) .toSortedList(new Func2<Fix, Fix, Integer>() { @Override public Integer call(Fix a, Fix b) { return Long.compare(a.time(), b.time()); } }).doOnNext(list -> System.out.println("sorted")).flatMapIterable(x -> x); } }