]> WPIA git - gigi.git/blob - src/club/wpia/gigi/dbObjects/ObjectCache.java
upd: rename package name and all references to it
[gigi.git] / src / club / wpia / gigi / dbObjects / ObjectCache.java
1 package club.wpia.gigi.dbObjects;
2
3 import java.lang.ref.WeakReference;
4 import java.util.HashMap;
5 import java.util.HashSet;
6
7 public class ObjectCache<T extends IdCachable> {
8
9     private final HashMap<Integer, WeakReference<T>> hashmap = new HashMap<>();
10
11     private static final HashSet<ObjectCache<? extends IdCachable>> caches = new HashSet<>();
12
13     protected ObjectCache() {
14         caches.add(this);
15     }
16
17     public T put(T c) {
18         hashmap.put(c.getId(), new WeakReference<T>(c));
19         return c;
20     }
21
22     public T get(int id) {
23         WeakReference<T> res = hashmap.get(id);
24         if (res != null) {
25             return res.get();
26         }
27         return null;
28     }
29
30     public static void clearAllCaches() {
31         for (ObjectCache<? extends IdCachable> objectCache : caches) {
32             objectCache.hashmap.clear();
33         }
34     }
35
36     public void remove(T toRm) {
37         hashmap.remove(toRm.getId());
38     }
39 }