package org.kroz.activerecord;
import java.lang.ref.WeakReference;
import java.util.HashMap;
import java.util.Map;
import java.util.WeakHashMap;
/**
*
* @author Vladimir Kroz
* @author JEREMYOT
* <p>This project based on and inspired by 'androidactiverecord' project written by JEREMYOT</p>
*/
class EntitiesMap {
private Map<String, WeakReference<ActiveRecordBase>> map = new HashMap<String, WeakReference<ActiveRecordBase>>();
WeakHashMap<ActiveRecordBase, String> _map = new WeakHashMap<ActiveRecordBase, String>();
@SuppressWarnings("unchecked")
<T extends ActiveRecordBase> T get(Class<T> c, long id) {
String key = makeKey(c, id);
WeakReference<ActiveRecordBase> i = map.get(key);
if (i == null)
return null;
return (T) i.get();
}
void set(ActiveRecordBase e) {
String key = makeKey(e.getClass(), e.getID());
map.put(key, new WeakReference<ActiveRecordBase>(e));
}
@SuppressWarnings("unchecked")
private String makeKey(Class entityType, long id) {
StringBuilder sb = new StringBuilder();
sb .append(entityType.getName())
.append(id);
return sb.toString();
}
}