package aliview.not_used.hacks;
import java.io.File;
import java.util.logging.Logger;
import java.util.prefs.Preferences;
import java.util.prefs.PreferencesFactory;
import java.util.prefs.BackingStoreException;
/**
* PreferencesFactory implementation that stores the preferences in a user-defined file. To use it,
* set the system property <tt>java.util.prefs.PreferencesFactory</tt> to
* <tt>net.infotrek.util.prefs.FilePreferencesFactory</tt>
* <p/>
* The file defaults to [user.home]/.fileprefs, but may be overridden with the system property
* <tt>net.infotrek.util.prefs.FilePreferencesFactory.file</tt>
*
* @author David Croft (<a href="http://www.davidc.net">www.davidc.net</a>)
* @version $Id: FilePreferencesFactory.java 282 2009-06-18 17:05:18Z david $
*/
public class FilePreferencesFactory implements PreferencesFactory
{
private static final Logger log = Logger.getLogger(FilePreferencesFactory.class.getName());
Preferences rootPreferences;
public static final String SYSTEM_PROPERTY_FILE =
"net.infotrek.util.prefs.FilePreferencesFactory.file";
public Preferences systemRoot()
{
return userRoot();
}
public Preferences userRoot()
{
if (rootPreferences == null) {
log.finer("Instantiating root preferences");
rootPreferences = new FilePreferences(null, "");
}
return rootPreferences;
}
private static File preferencesFile;
public static File getPreferencesFile()
{
if (preferencesFile == null) {
String prefsFile = System.getProperty(SYSTEM_PROPERTY_FILE);
if (prefsFile == null || prefsFile.length() == 0) {
prefsFile = System.getProperty("user.home") + File.separator + ".fileprefs";
}
preferencesFile = new File(prefsFile).getAbsoluteFile();
log.finer("Preferences file is " + preferencesFile);
}
return preferencesFile;
}
public static void main(String[] args) throws BackingStoreException
{
/*
Preferences p = Preferences.userNodeForPackage(Settings.class);
for (String s : p.keys()) {
System.out.println("p[" + s + "]=" + p.get(s, null));
}
p.putBoolean("hi", true);
p.put("Number", String.valueOf(System.currentTimeMillis()));
*/
}
}