package droidkit.content; import android.content.SharedPreferences; import android.os.Parcelable; import android.support.annotation.NonNull; import java.util.Collections; import java.util.List; import java.util.Set; /** * @author Daniel Serdyukov */ class PreferenceDelegate implements KeyValueDelegate { private final SharedPreferences mPrefs; PreferenceDelegate(@NonNull SharedPreferences prefs) { mPrefs = prefs; } @Override public int getInt(@NonNull String key, int defaultValue) { return mPrefs.getInt(key, defaultValue); } @Override public void putInt(@NonNull String key, int value) { mPrefs.edit().putInt(key, value).apply(); } @NonNull @Override public String getString(@NonNull String key, @NonNull String defaultValue) { return mPrefs.getString(key, defaultValue); } @Override public void putString(@NonNull String key, @NonNull String value) { mPrefs.edit().putString(key, value).apply(); } @Override public boolean getBoolean(@NonNull String key, boolean defaultValue) { return mPrefs.getBoolean(key, defaultValue); } @Override public void putBoolean(@NonNull String key, boolean value) { mPrefs.edit().putBoolean(key, value).apply(); } @Override public long getLong(@NonNull String key, long defaultValue) { return mPrefs.getLong(key, defaultValue); } @Override public void putLong(@NonNull String key, long value) { mPrefs.edit().putLong(key, value).apply(); } @Override public double getDouble(@NonNull String key, double defaultValue) { throw new IllegalArgumentException("Unsupported type 'double'"); } @Override public void putDouble(@NonNull String key, double value) { throw new IllegalArgumentException("Unsupported type 'double'"); } @Override public float getFloat(@NonNull String key, float defaultValue) { return mPrefs.getFloat(key, defaultValue); } @Override public void putFloat(@NonNull String key, float value) { mPrefs.edit().putFloat(key, value).apply(); } @NonNull @Override public Set<String> getStringSet(@NonNull String key) { return mPrefs.getStringSet(key, Collections.<String>emptySet()); } @Override public void putStringSet(@NonNull String key, @NonNull Set<String> value) { mPrefs.edit().putStringSet(key, value).apply(); } @NonNull @Override public List<String> getStringList(@NonNull String key) { throw new IllegalArgumentException("Unsupported type 'List<String>'"); } @Override public void putStringList(@NonNull String key, @NonNull List<String> value) { throw new IllegalArgumentException("Unsupported type 'List<String>'"); } @Override public <T extends Parcelable> T getParcelable(@NonNull String key) { throw new IllegalArgumentException("Unsupported type 'Parcelable'"); } @Override public <T extends Parcelable> void putParcelable(@NonNull String key, @NonNull T value) { throw new IllegalArgumentException("Unsupported type 'Parcelable'"); } @Override public void remove(String key) { mPrefs.edit().remove(key).apply(); } @Override public void clear() { mPrefs.edit().clear().apply(); } }