package org.edumips64.utils;
import java.util.Map;
import java.util.logging.Logger;
import java.util.prefs.Preferences;
/** ConfigStore implementation based on the Java Preferences API */
public class JavaPrefsConfigStore extends ConfigStore {
private static final Logger logger = Logger.getLogger(JavaPrefsConfigStore.class.getName());
private Preferences prefs;
private Map<ConfigKey, Object> defaults;
public JavaPrefsConfigStore(Map<ConfigKey, Object> defaults) {
prefs = Preferences.userRoot().node("edumips64.config");
this.defaults = defaults;
}
@Override
public void putString(ConfigKey key, String value) {
prefs.put(String.valueOf(key), value);
}
@Override
public String getString(ConfigKey key) {
String default_value = "";
if (defaults.containsKey(key)) {
default_value = (String) defaults.get(key);
} else {
logger.warning("No default value for string configuration key " + key + ", using empty string.");
}
return prefs.get(String.valueOf(key), default_value);
}
@Override
public void putInt(ConfigKey key, int value) {
prefs.putInt(String.valueOf(key), value);
}
@Override
public int getInt(ConfigKey key) {
int default_value = 0;
if (defaults.containsKey(key)) {
default_value = (Integer) defaults.get(key);
} else {
logger.warning("No default value for integer configuration key " + key + ", using 0.");
}
return prefs.getInt(String.valueOf(key), default_value);
}
@Override
public void putBoolean(ConfigKey key, boolean value) {
prefs.putBoolean(String.valueOf(key), value);
}
@Override
public boolean getBoolean(ConfigKey key) {
boolean default_value = false;
if (defaults.containsKey(key)) {
default_value = (Boolean) defaults.get(key);
} else {
logger.warning("No default value for boolean configuration key " + key + ", using false.");
}
return prefs.getBoolean(String.valueOf(key), default_value);
}
}