Package ucar.util.prefs
Class XMLStore
java.lang.Object
ucar.util.prefs.XMLStore
This implements an XML-based backing store for PreferencesExt.
XMLStores can be chained together to provide independent collections of
"stored defaults", eg store1 -> store2 -> store3. In this case, a call to getXXX( key)
first looks in store1, and if not found, then in store2, etc. A call to
putXXX(key, value) first checks to see if the (key, value) pair already exists in any of
the chained stores; if not, then it is added to store1.
Normally, only store1 would be changed and saved.
A chain of stored defaults might look like:
try {
XMLStore store3 = XMLStore.createFromResource("/auxdata/system.xml", null);
XMLStore store2 = XMLStore.createFromFile("/usr/local/metapps/GDV/site.xml", store3);
XMLStore store1 = XMLStore.createFromFile("/home/username/.GDV/user.xml", store2);
PreferencesExt prefs = store1.getPreferences();
} catch (IOException e) {
System.out.println("XMLStore Creation failed " + e);
}
If you plan to call Preferences.userRoot(), you must explicilty set it, eg:
PreferencesExt.setUserRoot(prefs);
Before exiting the application, in order to save changes, you must call:
try {
store1.save();
} catch (IOException e) {
System.out.println("XMLStore Save failed " + e);
}
- See Also:
-
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionstatic XMLStorecreateFromFile(String fileName, XMLStore storedDefaults) Create an XMLStore reading from the specified filename.static XMLStorecreateFromInputStream(InputStream is1, InputStream is2, XMLStore storedDefaults) Create an XMLStore reading from an input stream.static XMLStorecreateFromResource(String resourceName, XMLStore storedDefaults) Create a read-only XMLStore reading from the specified resource, opened as a Resource stream using the XMLStore ClassLoader.Get the root Preferences node.static StringmakeStandardFilename(String appName, String storeName) Convenience routine for creating an XMLStore file in a standard place.voidsave()Save the current state of the Preferences tree to disk, using the original filename.voidsave(OutputStream out) Save the current state of the Preferences tree to the given OutputStream.
-
Constructor Details
-
XMLStore
public XMLStore()
-
-
Method Details
-
createFromFile
Create an XMLStore reading from the specified filename.- Parameters:
fileName- The XMLStore is stored in this files.storedDefaults- This contains the "stored defaults", or null if none.- Returns:
- new XMLStore object
- Throws:
IOException- on error
-
createFromInputStream
public static XMLStore createFromInputStream(InputStream is1, InputStream is2, XMLStore storedDefaults) throws IOException Create an XMLStore reading from an input stream. Because of some peculiariteis, you must open the input stream wtice, and pass both in.- Parameters:
is1- the first copy of the input stream.is2- the second copy of the input stream.storedDefaults- This contains the "stored defaults", or null if none.- Returns:
- new XMLStore object
- Throws:
IOException- on error
-
createFromResource
public static XMLStore createFromResource(String resourceName, XMLStore storedDefaults) throws IOException Create a read-only XMLStore reading from the specified resource, opened as a Resource stream using the XMLStore ClassLoader. This allows you to find files that are in jar files on the application CLASSPATH.- Parameters:
resourceName- The XMLStore is stored in this resource. By convention it has .xml suffix.storedDefaults- This contains the "stored defaults", or null if none.- Returns:
- new XMLStore object
- Throws:
IOException- if Resource not found or error reading it
-
makeStandardFilename
Convenience routine for creating an XMLStore file in a standard place.Initialize:
- $user.home = System.getProperty("user.home"), if not exist, use "."
- create directory "$(user_home)/appName/" , if not exist, create it
- return "$(user_home)/appName/storeName" for use in createFromFile()
- Parameters:
appName- application namestoreName- store name- Returns:
- standard file name
-
getPreferences
Get the root Preferences node. All manipulation is done through it. -
save
Save the current state of the Preferences tree to disk, using the original filename. The XMLStore must have been constructed from a writeable XML file.- Throws:
IOException- on read error
-
save
Save the current state of the Preferences tree to the given OutputStream.- Throws:
IOException
-