This class contains a collection of static utility methods for creating, retrieving, saving and loading properties.
//package com.javadocking.util;
import java.awt.Color;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import java.util.NoSuchElementException;
import java.util.Properties;
import java.util.StringTokenizer;
/**
* This class contains a collection of static utility methods for creating,
* retrieving, saving and loading properties.
*
* @author Heidi Rakels.
*/
public class PropertiesUtil {
// Static fields.
/** The string representation for the boolean TRUE value. */
public static final String TRUE = "true";
/** The string representation for the boolean FALSE value. */
public static final String FALSE = "false";
/** The char ','. */
private static final char COMMA = ',';
// Public static methods.
/**
* Reads the file with the given name into a java.util.Properties object.
*
* @param sourceName
* The name of the source file for the properties.
* @return The properties that are retrieved from the source file.
* @throws IOException
* If creating the input stream, reading the property list from
* the input stream or closing the input stream throws an
* IOException.
*/
public static Properties loadProperties(String sourceName)
throws IOException {
Properties result = new Properties();
FileInputStream inputStream = new FileInputStream(sourceName);
result.load(inputStream);
inputStream.close();
return result;
}
/**
* Saves the given java.util.Properties object in a destination file with
* the given name.
*
* @param properties
* The properties that have to be saved in the destination file.
* @param destinationName
* The name of the destination file for the properties.
* @param comment
* The saved file will start with the given text as comment.
* @throws NullPointerException
* If the given properties are null.
* @throws IOException
* If creating the output stream, writing this property list to
* the output stream or closing the output stream throws an
* IOException.
*/
public static void saveProperties(Properties properties,
String destinationName, String comment) throws IOException {
// Check that the given properties are not null.
if (properties == null) {
throw new NullPointerException("Properties null.");
}
FileOutputStream outputStream = new FileOutputStream(destinationName);
properties.store(outputStream, comment);
outputStream.close();
}
/**
* Gets the boolean property with the given name. If the property is not
* found, the default value is returned.
*
* @param properties
* The given properties where the property is searched.
* @param name
* The name of the property.
* @param defaultValue
* The default value of the property.
* @return The boolean property with the given name. If the property is not
* found, the default value is returned.
*/
public static boolean getBoolean(Properties properties, String name,
boolean defaultValue) {
// Get the property from the given properties list.
String stringValue = properties.getProperty(name);
// Return the default value if the value is invalid.
if ((stringValue == null) || (stringValue.length() == 0)) {
return defaultValue;
}
// Trim the string value.
stringValue = stringValue.trim();
// Return true if the string starts with 'true'.
return stringValue.startsWith(TRUE);
}
/**
* Adds the boolean property with the given name and value to the given
* properties.
*
* @param properties
* The given properties to which the property is added.
* @param name
* The name of the property.
* @param value
* The default value of the property.
*/
public static void setBoolean(Properties properties, String name,
boolean value) {
properties.put(name, (new Boolean(value)).toString());
}
/**
* Gets the string property with the given name. If the property is not
* found, the default value is returned.
*
* @param properties
* The given properties where the property is searched.
* @param name
* The name of the property.
* @param defaultValue
* The default value of the property.
* @return The string property with the given name. If the property is not
* found, the default value is returned.
*/
public static String getString(Properties properties, String name,
String defaultValue) {
// Get the property from the given properties list.
String stringValue = properties.getProperty(name);
// Return the default value if the value is invalid.
if ((stringValue == null) || (stringValue.length() == 0)) {
return defaultValue;
}
return stringValue;
}
/**
* Adds the string property with the given name and value to the given
* properties.
*
* @param properties
* The given properties to which the property is added.
* @param name
* The name of the property.
* @param value
* The default value of the property.
*/
public static void setString(Properties properties, String name,
String value) {
if (value != null) {
properties.put(name, value);
}
}
/**
* Gets the integer property with the given name. If the property is not
* found, the default value is returned.
*
* @param properties
* The given properties where the property is searched.
* @param name
* The name of the property.
* @param defaultValue
* The default value of the property.
* @return The integer property with the given name. If the property is not
* found, the default value is returned.
*/
public static int getInteger(Properties properties, String name,
int defaultValue) {
// Get the property from the given properties list.
String stringValue = properties.getProperty(name);
// Return the default value if the value is invalid.
if ((stringValue == null) || (stringValue.length() == 0)) {
return defaultValue;
}
try {
// Trim the string value.
stringValue = stringValue.trim();
// Try to parse the string to an integer.
return Integer.parseInt(stringValue);
} catch (NumberFormatException numberFormatException) {
return defaultValue;
}
}
/**
* Adds the integer property with the given name and value to the given
* properties.
*
* @param properties
* The given properties to which the property is added.
* @param name
* The name of the property.
* @param value
* The default value of the property.
*/
public static void setInteger(Properties properties, String name, int value) {
properties.put(name, (new Integer(value)).toString());
}
/**
* Gets the double property with the given name. If the property is not
* found, the default value is returned.
*
* @param properties
* The given properties where the property is searched.
* @param name
* The name of the property.
* @param defaultValue
* The default value of the property.
* @return The double property with the given name. If the property is not
* found, the default value is returned.
*/
public static double getDouble(Properties properties, String name,
double defaultValue) {
// Get the property from the given properties list.
String stringValue = properties.getProperty(name);
// Return the default value if the value is invalid.
if ((stringValue == null) || (stringValue.length() == 0)) {
return defaultValue;
}
try {
// Trim the string value.
stringValue = stringValue.trim();
// Try to parse the string to an double.
return Double.parseDouble(stringValue);
} catch (NumberFormatException numberFormatException) {
return defaultValue;
}
}
/**
* Adds the double property with the given name and value to the given
* properties.
*
* @param properties
* The given properties to which the property is added.
* @param name
* The name of the property.
* @param value
* The default value of the property.
*/
public static void setDouble(Properties properties, String name,
double value) {
properties.put(name, (new Double(value)).toString());
}
/**
* Gets the color property with the given name. If the property is not
* found, the default value is returned.
*
* @param properties
* The given properties where the property is searched.
* @param name
* The name of the property.
* @param defaultValue
* The default value of the property.
* @return The color property with the given name. If the property is not
* found, the default value is returned.
*/
public static Color getColor(Properties properties, String name,
Color defaultValue) {
// Get the property from the given properties list.
String stringValue = properties.getProperty(name);
// Return the default value if the value is invalid.
if ((stringValue == null) || (stringValue.length() == 0)) {
return defaultValue;
}
try {
// Trim the string value.
stringValue = stringValue.trim();
// Get red, green and blue strings.
StringTokenizer tokenizer = new StringTokenizer(stringValue,
"[{(,/)}]");
String red = tokenizer.nextToken();
String green = tokenizer.nextToken();
String blue = tokenizer.nextToken();
// Parse the strings to integers.
int redValue = Integer.parseInt(red);
int greenValue = Integer.parseInt(green);
int blueValue = Integer.parseInt(blue);
// Do we have an alfa?
if (tokenizer.hasMoreTokens()) {
// Get the alfa string and parse it to an integer value.
String alfa = tokenizer.nextToken();
int alfaValue = Integer.parseInt(alfa);
// Try to make the color with an alfa.
return new Color(redValue, greenValue, blueValue, alfaValue);
}
// Try to make the color without alfa.
return new Color(redValue, greenValue, blueValue);
} catch (NumberFormatException numberFormatException) {
// Exception while parsing the integers.
return defaultValue;
} catch (NoSuchElementException noSuchElementException) {
// Exception in the StringTokenizer.
return defaultValue;
} catch (IllegalArgumentException illegalArgumentException) {
// Exception while creating the color.
return defaultValue;
}
}
/**
* Adds the color property with the given name and value to the given
* properties.
*
* @param properties
* The given properties to which the property is added.
* @param name
* The name of the property.
* @param value
* The default value of the property.
*/
public static void setColor(Properties properties, String name, Color value) {
// Check if the color is not null.
if (value != null) {
// Create the string for the color.
String colorString = "(" + value.getRed() + COMMA
+ value.getGreen() + COMMA + value.getBlue() + COMMA
+ value.getAlpha() + ")";
// Add the property.
properties.put(name, colorString);
}
}
/**
* Gets the string array property with the given name. If the property is
* not found, the default value is returned.
*
* @param properties
* The given properties where the property is searched.
* @param name
* The name of the property.
* @param defaultValue
* The default value of the property.
* @return The string array property with the given name. If the property is
* not found, the default value is returned.
*/
public static String[] getStringArray(Properties properties, String name,
String[] defaultValue) {
// Get the property from the given properties list.
String stringValue = properties.getProperty(name);
// Return the default value if the value is invalid.
if ((stringValue == null) || (stringValue.length() == 0)) {
return defaultValue;
}
// Trim the string value.
stringValue = stringValue.trim();
// Get the strings in a list.
StringTokenizer tokenizer = new StringTokenizer(stringValue, "(,)");
List stringList = new ArrayList();
while (tokenizer.hasMoreElements()) {
stringList.add(tokenizer.nextElement());
}
// Create an array of strings.
String[] stringArray = new String[stringList.size()];
for (int index = 0; index < stringArray.length; index++) {
stringArray[index] = (String) stringList.get(index);
}
return stringArray;
}
/**
* Adds the string array property with the given name and value to the given
* properties.
*
* @param properties
* The given properties to which the property is added.
* @param name
* The name of the property.
* @param value
* The default value of the property.
*/
public static void setStringArray(Properties properties, String name,
String[] value) {
// Check if the array is not null or if the size is 0.
if ((value != null) && (value.length > 0)) {
// Create the string for the string array.
StringBuffer totalString = new StringBuffer(value[0]);
for (int index = 1; index < value.length; index++) {
// Separate the strings with a comma.
totalString.append(COMMA);
// Add the next string.
totalString.append(value[index]);
}
// Add the property and its value.
properties.put(name, totalString.toString());
}
}
/**
* Gets the integer array property with the given name. If the property is
* not found, the default value is returned.
*
* @param properties
* The given properties where the property is searched.
* @param name
* The name of the property.
* @param defaultValue
* The default value of the property.
* @return The integer array property with the given name. If the property
* is not found, the default value is returned.
*/
public static int[] getIntegerArray(Properties properties, String name,
int[] defaultValue) {
// Get the property from the given properties list.
String stringValue = properties.getProperty(name);
// Return the default value if the value is invalid.
if ((stringValue == null) || (stringValue.length() == 0)) {
return defaultValue;
}
// Trim the string value.
stringValue = stringValue.trim();
// Get the strings of the integers in a list.
StringTokenizer tokenizer = new StringTokenizer(stringValue, "[{(,/)}]");
List intList = new ArrayList();
while (tokenizer.hasMoreElements()) {
intList.add(tokenizer.nextElement());
}
// Create an array of integers.
int[] intArray = new int[intList.size()];
for (int index = 0; index < intArray.length; index++) {
try {
intArray[index] = Integer.parseInt((String) intList.get(index));
} catch (NumberFormatException numberFormatException) {
return defaultValue;
}
}
return intArray;
}
/**
* Adds the integer array property with the given name and value to the
* given properties.
*
* @param properties
* The given properties to which the property is added.
* @param name
* The name of the property.
* @param value
* The default value of the property.
*/
public static void setIntegerArray(Properties properties, String name,
int[] value) {
// Check if the array is not null or if the size is 0.
if ((value != null) && (value.length > 0)) {
// Create the string for the integer array.
StringBuffer totalString = new StringBuffer();
totalString.append(value[0]);
for (int index = 1; index < value.length; index++) {
// Separate the strings with a comma.
totalString.append(COMMA);
// Add the next integer.
totalString.append(value[index]);
}
// Add the property and its value.
properties.put(name, totalString.toString());
}
}
/**
* Gets the double array property with the given name. If the property is
* not found, the default value is returned.
*
* @param properties
* The given properties where the property is searched.
* @param name
* The name of the property.
* @param defaultValue
* The default value of the property.
* @return The double array property with the given name. If the property is
* not found, the default value is returned.
*/
public static double[] getDoubleArray(Properties properties, String name,
double[] defaultValue) {
// Get the property from the given properties list.
String stringValue = properties.getProperty(name);
// Return the default value if the value is invalid.
if ((stringValue == null) || (stringValue.length() == 0)) {
return defaultValue;
}
// Trim the string value.
stringValue = stringValue.trim();
// Get the strings of the doubles in a list.
StringTokenizer tokenizer = new StringTokenizer(stringValue, "[{(,/)}]");
List doubleList = new ArrayList();
while (tokenizer.hasMoreElements()) {
doubleList.add(tokenizer.nextElement());
}
// Create an array of doubles.
double[] doubleArray = new double[doubleList.size()];
for (int index = 0; index < doubleArray.length; index++) {
try {
doubleArray[index] = Integer.parseInt((String) doubleList
.get(index));
} catch (NumberFormatException numberFormatException) {
return defaultValue;
}
}
return doubleArray;
}
/**
* Adds the double array property with the given name and value to the given
* properties.
*
* @param properties
* The given properties to which the property is added.
* @param name
* The name of the property.
* @param value
* The default value of the property.
*/
public static void setDoubleArray(Properties properties, String name,
double[] value) {
// Check if the array is not null or if the size is 0.
if ((value != null) && (value.length > 0)) {
// Create the string for the double array.
StringBuffer totalString = new StringBuffer("" + value[0]);
for (int index = 1; index < value.length; index++) {
// Separate the strings with a comma.
totalString.append(COMMA);
// Add the next double.
totalString.append(value[index]);
}
// Add the property and its value.
properties.put(name, totalString.toString());
}
}
// /**
// * Tests the static methods of this class.
// *
// * @param arguments
// */
// public static void main(String[] arguments)
// {
// // Test 1.
// System.out.println("TEST 1");
// Properties prop = new Properties();
// prop.put("mycolor", "(0,0,0)");
// prop.put("booltrue", "true");
// prop.put("boolfalse", "false");
// prop.put("mydouble", "0.1");
// prop.put("myinteger", "1");
// prop.put("myintegerarray", "1,2,3");
// prop.put("mystringarray", "Ik,ben,blij");
//
// int[] myintegerarraydefault = {1000,2000};
// String[] mystringarraydefault = {"Hallo","Haai"};
// Color mycolor = getColor(prop, "mycolor", null);
// boolean booltrue = getBoolean(prop, "booltrue", false);
// boolean boolfalse = getBoolean(prop, "boolfalse", true);
// double mydouble = getDouble(prop, "mydouble", 100000);
// int myinteger = getInteger(prop, "myinteger", 100000);
// int[] myintegerarray = getIntegerArray(prop, "myintegerarray",
// myintegerarraydefault);
// String[] mystringarray = getStringArray(prop, "mystringarray",
// mystringarraydefault);
//
// System.out.println("mycolor " + mycolor.getRed() + " " +
// mycolor.getGreen() + " " + mycolor.getBlue());
// System.out.println("booltrue " + booltrue);
// System.out.println("boolfalse " + boolfalse);
// System.out.println("mydouble " + mydouble);
// System.out.println("myinteger " + myinteger);
// System.out.println("myinteger array 0 " + myintegerarray[0]);
// System.out.println("myinteger array 1 " + myintegerarray[1]);
// System.out.println("myinteger array 2 " + myintegerarray[2]);
//
// System.out.println("TEST 2");
// Color mynewcolor = new Color(0,0,0);
// boolean boolnewtrue = true;
// boolean boolnewfalse = false;
// double mynewdouble = 0.1;
// int mynewinteger = 1;
// int[] mynewintegerarray = {1,2,3};
// String[] mynewstringarray = {"Ik","ben","blij"};
// System.out.println(mynewcolor.getRed()==mycolor.getRed());
// System.out.println(mynewcolor.getGreen()==mycolor.getGreen());
// System.out.println(boolnewtrue==booltrue);
// System.out.println(boolnewfalse==boolfalse);
// System.out.println(mynewdouble==mydouble);
// System.out.println(mynewinteger==myinteger);
// System.out.println(mynewintegerarray[0]==myintegerarray[0]);
// System.out.println(mynewstringarray[0].equalsIgnoreCase(mystringarray[0]));
// System.out.println(mystringarray[0]);
//
// }
// Private constructor.
private PropertiesUtil() {
}
}
Related examples in the same category