package forge.properties;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.*;
/**
* A collection of name/value pairs with sorted keys and utility methods.
*
* @author Forge
* @version $Id: Preferences.java 10038 2011-06-25 08:29:06Z jendave.hudson@gmail.com $
*/
public class Preferences {
protected Properties props;
/**
* <p>Constructor for Preferences.</p>
*/
public Preferences() {
props = new Properties();
}
/**
* <p>Constructor for Preferences.</p>
*
* @param prefs a {@link forge.properties.Preferences} object.
*/
public Preferences(Preferences prefs) {
props = prefs.props;
}
/**
* <p>keys.</p>
*
* @return a {@link java.util.Enumeration} object.
*/
public synchronized Enumeration<String> keys() {
@SuppressWarnings({"unchecked", "rawtypes"})
Set<String> keysEnum = (Set) props.keySet();
Vector<String> keyList = new Vector<String>();
keyList.addAll(keysEnum);
Collections.sort(keyList);
return keyList.elements();
}
/**
* <p>getInt.</p>
*
* @param name a {@link java.lang.String} object.
* @param defaultValue a int.
* @return a int.
*/
public int getInt(String name, int defaultValue) {
String value = props.getProperty(name);
if (value == null) return defaultValue;
try {
return Integer.parseInt(value);
} catch (NumberFormatException ex) {
return defaultValue;
}
}
/**
* <p>getBoolean.</p>
*
* @param name a {@link java.lang.String} object.
* @param defaultValue a boolean.
* @return a boolean.
*/
public boolean getBoolean(String name, boolean defaultValue) {
String value = props.getProperty(name);
if (value == null) return defaultValue;
return Boolean.parseBoolean(value);
}
/**
* <p>getLong.</p>
*
* @param name a {@link java.lang.String} object.
* @param defaultValue a long.
* @return a long.
*/
public long getLong(String name, long defaultValue) {
String value = props.getProperty(name);
if (value == null) return defaultValue;
return Long.parseLong(value);
}
/**
* <p>set.</p>
*
* @param key a {@link java.lang.String} object.
* @param value a {@link java.lang.Object} object.
*/
public void set(String key, Object value) {
props.setProperty(key, String.valueOf(value));
}
/**
* <p>get.</p>
*
* @param key a {@link java.lang.String} object.
* @param value a {@link java.lang.Object} object.
* @return a {@link java.lang.String} object.
*/
public String get(String key, Object value) {
String string = null;
if (value != null) string = String.valueOf(value);
return props.getProperty(key, string);
}
/**
* <p>load.</p>
*
* @param stream a {@link java.io.FileInputStream} object.
* @throws java.io.IOException if any.
*/
public void load(FileInputStream stream) throws IOException {
props.load(stream);
}
/**
* <p>store.</p>
*
* @param stream a {@link java.io.FileOutputStream} object.
* @param comments a {@link java.lang.String} object.
* @throws java.io.IOException if any.
*/
public void store(FileOutputStream stream, String comments) throws IOException {
props.store(stream, comments);
}
}