package au.gov.amsa.geo;
import java.io.File;
import java.util.List;
import java.util.regex.Pattern;
import org.apache.log4j.Logger;
import rx.Observable;
import rx.functions.Func1;
import rx.functions.Func2;
import au.gov.amsa.risky.format.Fix;
import au.gov.amsa.risky.format.HasPosition;
import au.gov.amsa.util.Files;
import au.gov.amsa.util.navigation.Position;
public class Util {
private static Logger log = Logger.getLogger(Util.class);
public static String memoryUsage() {
Runtime r = Runtime.getRuntime();
long used = r.totalMemory() - r.freeMemory();
return "usedHeap=" + (used / 1000000) + "MB, percent=" + (100.0 * used / r.maxMemory());
}
public static void logMemoryUsage() {
log.info(memoryUsage());
}
public static Position toPos(HasPosition a) {
return new Position(a.lat(), a.lon());
}
public static Observable<File> getFiles(String directory, final String pattern) {
return Observable.from(Files.find(new File(directory), Pattern.compile(pattern)));
}
public static final Func2<Fix, Fix, Integer> COMPARE_FIXES_BY_POSITION_TIME = new Func2<Fix, Fix, Integer>() {
@Override
public Integer call(Fix a, Fix b) {
return Long.compare(a.time(), b.time());
}
};
public static final Func1<List<Fix>, Observable<Fix>> TO_OBSERVABLE = new Func1<List<Fix>, Observable<Fix>>() {
@Override
public Observable<Fix> call(List<Fix> list) {
return Observable.from(list);
}
};
}