1 package au.gov.amsa.navigation.ais;
2
3 import java.util.HashMap;
4 import java.util.Map;
5 import java.util.concurrent.ConcurrentHashMap;
6
7 import au.gov.amsa.navigation.Identifier;
8
9 import com.google.common.base.Optional;
10
11 public class VesselProperties {
12
13 public static enum Key {
14 DESTINATION;
15 }
16
17 private Map<Identifier, Map<Key, ValueAndTime>> map = new ConcurrentHashMap<Identifier, Map<Key, ValueAndTime>>();
18
19 public synchronized void add(Identifier id, Key key, Object value, long time) {
20 Optional<Map<Key, ValueAndTime>> props = Optional.fromNullable(map.get(id));
21 HashMap<Key, ValueAndTime> p;
22 if (!props.isPresent())
23 p = new HashMap<Key,ValueAndTime>();
24 else
25 p = new HashMap<Key,ValueAndTime>(props.get());
26 Optional<ValueAndTime> v = Optional.fromNullable(p.get(key));
27 if (!v.isPresent() || v.get().getTime() <time) {
28 p.put(key,new ValueAndTime(value, time));
29 map.put(id, p);
30 }
31 }
32
33
34 }