1 package au.gov.amsa.navigation;
2
3 import static com.google.common.base.Optional.of;
4
5 import com.google.common.base.Optional;
6
7 public class Times {
8
9 private final long time1;
10 private final Optional<Long> time2;
11
12 private Times(long time1, Optional<Long> time2) {
13 this.time1 = time1;
14 this.time2 = time2;
15 }
16
17 public Times(long time1) {
18 this(time1, Optional.<Long> absent());
19 }
20
21 public Times(long time1, long time2) {
22 this(time1, Optional.of(time2));
23 }
24
25 public long time1() {
26 return time1;
27 }
28
29 public Optional<Long> time2() {
30 return time2;
31 }
32
33 public Optional<Long> leastPositive() {
34
35 if (time1 >= 0 && time2.isPresent() && time2.get() >= 0)
36 return of(Math.min(time1, time2.get()));
37 else if (time1 >= 0)
38 return of(time1);
39 else if (time2.isPresent() && time2.get() >= 0) {
40 return of(time2.get());
41 } else
42 return Optional.absent();
43 }
44 }