package com.teotigraphix.caustic.application; import java.util.Map; import java.util.prefs.BackingStoreException; import java.util.prefs.Preferences; import com.google.inject.Singleton; /** * User level preferences, all apps have access to these keys. */ @Singleton public class PreferenceManager implements IPreferenceManager { private Preferences preferences; protected void setupUserNode(String path) { preferences = Preferences.userRoot().node(path); } public PreferenceManager() { // User Preference Node: /com.teotigraphix.caustic.application.PreferenceManager if (getClass().getName().equals("com.teotigraphix.caustic.application.PreferenceManager")) setupUserNode(getClass().getName()); } @Override public Editor edit() { return new PreferenceEditor(preferences); } @Override public boolean contains(String key) { // XXX How to do this? return true; } @Override public Map<String, ?> getAll() { return null; } @Override public boolean getBoolean(String key, boolean defValue) { return preferences.getBoolean(key, defValue); } @Override public float getFloat(String key, float defValue) { return preferences.getFloat(key, defValue); } @Override public int getInt(String key, int defValue) { return preferences.getInt(key, defValue); } @Override public long getLong(String key, long defValue) { return preferences.getLong(key, defValue); } @Override public String getString(String key, String defValue) { return preferences.get(key, defValue); } public static class PreferenceEditor implements Editor { private Preferences proxy; public PreferenceEditor(Preferences prefs) { proxy = prefs; } @Override public void apply() { try { proxy.flush(); } catch (BackingStoreException e) { e.printStackTrace(); } } @Override public Editor clear() { try { proxy.clear(); } catch (BackingStoreException e) { e.printStackTrace(); } return this; } @Override public boolean commit() { try { proxy.flush(); } catch (BackingStoreException e) { e.printStackTrace(); return false; } return true; } @Override public Editor putBoolean(String key, boolean value) { proxy.putBoolean(key, value); return this; } @Override public Editor putFloat(String key, float value) { proxy.putFloat(key, value); return this; } @Override public Editor putInt(String key, int value) { proxy.putInt(key, value); return this; } @Override public Editor putLong(String key, long value) { proxy.putLong(key, value); return this; } @Override public Editor putString(String key, String value) { proxy.put(key, value); return this; } @Override public Editor remove(String key) { proxy.remove(key); return this; } } }