mirror of
https://github.com/mitb-archive/filebot
synced 2024-08-13 17:03:45 -04:00
52 lines
1.4 KiB
Java
52 lines
1.4 KiB
Java
package net.filebot.util.prefs;
|
|
|
|
import java.nio.file.Path;
|
|
import java.nio.file.Paths;
|
|
import java.util.logging.Level;
|
|
import java.util.logging.Logger;
|
|
import java.util.prefs.BackingStoreException;
|
|
import java.util.prefs.Preferences;
|
|
import java.util.prefs.PreferencesFactory;
|
|
|
|
public class FilePreferencesFactory implements PreferencesFactory {
|
|
|
|
private final static FilePreferences userRoot = createRootNode(getBackingStoreFile());
|
|
|
|
@Override
|
|
public Preferences systemRoot() {
|
|
return userRoot;
|
|
}
|
|
|
|
@Override
|
|
public Preferences userRoot() {
|
|
return userRoot;
|
|
}
|
|
|
|
public static FilePreferences createRootNode(Path backingStoreFile) {
|
|
FilePreferences node = new FilePreferences(new PropertyFileBackingStore(backingStoreFile));
|
|
|
|
// restore preferences
|
|
try {
|
|
node.sync();
|
|
} catch (Exception e) {
|
|
Logger.getLogger(FilePreferences.class.getName()).log(Level.WARNING, "Failed to load preferences: " + backingStoreFile, e);
|
|
}
|
|
|
|
// store preferences on exit
|
|
Runtime.getRuntime().addShutdownHook(new Thread(() -> {
|
|
try {
|
|
userRoot.flush();
|
|
} catch (BackingStoreException e) {
|
|
Logger.getLogger(FilePreferences.class.getName()).log(Level.WARNING, "Failed to save preferences: " + backingStoreFile, e);
|
|
}
|
|
}));
|
|
|
|
return node;
|
|
}
|
|
|
|
public static Path getBackingStoreFile() {
|
|
return Paths.get(System.getProperty("net.filebot.util.prefs.file", "prefs.properties"));
|
|
}
|
|
|
|
}
|