package org.edumips64.utils; import java.util.HashMap; import java.util.Map; import java.util.logging.Logger; /** ConfigStore implementation based on in-memory storage. */ public class InMemoryConfigStore extends ConfigStore { private static final Logger logger = Logger.getLogger(InMemoryConfigStore.class.getName()); private Map<ConfigKey, Object> data; private Map<ConfigKey, Object> defaults; public InMemoryConfigStore(Map<ConfigKey, Object> defaults) { this.defaults = defaults; data = new HashMap<>(); } @Override public void putString(ConfigKey key, String value) { data.put(key, value); } @Override public String getString(ConfigKey key) { if (data.containsKey(key)) { return (String) data.get(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 default_value; } @Override public void putInt(ConfigKey key, int value) { data.put(key, value); } @Override public int getInt(ConfigKey key) { if (data.containsKey(key)) { return (Integer) data.get(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 default_value; } @Override public void putBoolean(ConfigKey key, boolean value) { data.put(key, value); } @Override public boolean getBoolean(ConfigKey key) { if (data.containsKey(key)) { return (Boolean) data.get(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 default_value; } }