Mega Code Archive

 
Categories / Java / Development Class
 

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() {   } }