package games.strategy.engine.chat;
import java.util.Collections;
import java.util.HashSet;
import java.util.Set;
import java.util.logging.Level;
import java.util.logging.Logger;
import java.util.prefs.BackingStoreException;
import java.util.prefs.Preferences;
public class ChatIgnoreList {
private static final Logger log = Logger.getLogger(ChatIgnoreList.class.getName());
private final Object lock = new Object();
private final Set<String> ignore = new HashSet<>();
public ChatIgnoreList() {
final Preferences prefs = getPrefNode();
try {
Collections.addAll(ignore, prefs.keys());
} catch (final BackingStoreException e) {
log.log(Level.FINE, e.getMessage(), e);
}
}
public void add(final String name) {
synchronized (lock) {
ignore.add(name);
final Preferences prefs = getPrefNode();
prefs.put(name, "true");
try {
prefs.flush();
} catch (final BackingStoreException e) {
log.log(Level.FINE, e.getMessage(), e);
}
}
}
protected static Preferences getPrefNode() {
return Preferences.userNodeForPackage(ChatIgnoreList.class);
}
public void remove(final String name) {
synchronized (lock) {
ignore.remove(name);
final Preferences prefs = getPrefNode();
prefs.remove(name);
try {
prefs.flush();
} catch (final BackingStoreException e) {
log.log(Level.FINE, e.getMessage(), e);
}
}
}
public boolean shouldIgnore(final String name) {
synchronized (lock) {
return ignore.contains(name);
}
}
}