package com.horstmann.violet.framework;
import java.util.prefs.Preferences;
/**
* A service for storing and loading user preferences.
* This service uses either the standard Java preferences API or the WebStart
* persistence service ("muffins").
*/
public abstract class PreferencesService
{
/**
* Gets an instance of the service, suitable for the package of the given class.
* @param appClass the main application class (only the package name is used as the path to
* app-specific preferences storage)
* @return an instance of the service
*/
public static PreferencesService getInstance(Class appClass)
{
if (service != null) return service;
try
{
service = new DefaultPreferencesService(appClass);
return service;
}
catch (SecurityException exception)
{
// that happens when we run under Web Start
}
/* try
{
// we load this lazily so that the JAR can load without WebStart
service = (PreferencesService) Class.forName("com.horstmann.violet.framework.JNLPPreferencesService").newInstance();
return service;
}
catch (Exception exception)
{
exception.printStackTrace();
}
*/
return null;
}
/**
* Gets a previously stored string from the service.
* @param key the key of the string
* @param defval the value to return if no matching value was found
* @return the value stored with the given key, or defval if none was found
*/
public abstract String get(String key, String defval);
/**
* Saves a key/value pair for later retrieval.
* @param key the key of the string to be stored
* @param value the value to to be stored
*/
public abstract void put(String key, String value);
/**
* Tests whether the service is provided by WebStart
* @return true if this service is provided by WebStart
*/
public abstract boolean isWebStart();
private static PreferencesService service;
}