package jonathanfinerty.once;
import android.content.Context;
import android.content.SharedPreferences;
import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;
class PersistedMap {
private static final long KEY_NOT_FOUND_VALUE = -1;
private final SharedPreferences preferences;
private Map<String, Long> map = new ConcurrentHashMap<String, Long>();
public PersistedMap(Context context, String mapName) {
preferences = context.getSharedPreferences(PersistedMap.class.getSimpleName() + mapName, Context.MODE_PRIVATE);
Map<String, ?> allPreferences = preferences.getAll();
for (String key : allPreferences.keySet()) {
long value = preferences.getLong(key, KEY_NOT_FOUND_VALUE);
if (value != KEY_NOT_FOUND_VALUE) {
map.put(key, value);
}
}
}
public Long get(String tag) {
return map.get(tag);
}
public void put(String tag, long timeSeen) {
map.put(tag, timeSeen);
SharedPreferences.Editor edit = preferences.edit();
edit.putLong(tag, timeSeen);
edit.apply();
}
public void remove(String tag) {
map.remove(tag);
SharedPreferences.Editor edit = preferences.edit();
edit.remove(tag);
edit.apply();
}
public void clear() {
map.clear();
SharedPreferences.Editor edit = preferences.edit();
edit.clear();
edit.apply();
}
}