1 package au.gov.amsa.geo;
2
3 import java.io.File;
4 import java.util.List;
5 import java.util.regex.Pattern;
6
7 import org.apache.log4j.Logger;
8
9 import rx.Observable;
10 import rx.functions.Func1;
11 import rx.functions.Func2;
12 import au.gov.amsa.risky.format.Fix;
13 import au.gov.amsa.risky.format.HasPosition;
14 import au.gov.amsa.util.Files;
15 import au.gov.amsa.util.navigation.Position;
16
17 public class Util {
18
19 private static Logger log = Logger.getLogger(Util.class);
20
21 public static String memoryUsage() {
22 Runtime r = Runtime.getRuntime();
23 long used = r.totalMemory() - r.freeMemory();
24 return "usedHeap=" + (used / 1000000) + "MB, percent=" + (100.0 * used / r.maxMemory());
25 }
26
27 public static void logMemoryUsage() {
28 log.info(memoryUsage());
29 }
30
31 public static Position toPos(HasPosition a) {
32 return new Position(a.lat(), a.lon());
33 }
34
35 public static Observable<File> getFiles(String directory, final String pattern) {
36 return Observable.from(Files.find(new File(directory), Pattern.compile(pattern)));
37 }
38
39 public static final Func2<Fix, Fix, Integer> COMPARE_FIXES_BY_POSITION_TIME = new Func2<Fix, Fix, Integer>() {
40 @Override
41 public Integer call(Fix a, Fix b) {
42 return Long.compare(a.time(), b.time());
43 }
44 };
45
46 public static final Func1<List<Fix>, Observable<Fix>> TO_OBSERVABLE = new Func1<List<Fix>, Observable<Fix>>() {
47 @Override
48 public Observable<Fix> call(List<Fix> list) {
49 return Observable.from(list);
50 }
51 };
52
53 }