/* * Copyright (C) 2008 Steve Ratcliffe * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License version 2 as * published by the Free Software Foundation. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * * Author: Steve Ratcliffe * Create date: May 17, 2008 */ package uk.me.parabola.util; import java.util.Enumeration; import java.util.Properties; /** * Wrapper that behaves as an enhanced properties class that has getProperty * calls for different data types. * * @author Steve Ratcliffe */ public class EnhancedProperties extends Properties { public EnhancedProperties() { } public EnhancedProperties(Properties defaults) { // We copy values, rather than making them default values so that // we can enumerate all the options. Enumeration<?> en = defaults.propertyNames(); while (en.hasMoreElements()) { String key = (String) en.nextElement(); setProperty(key, defaults.getProperty(key)); } } /** * Get a property as an integer value. If the property does not exist * or the value is not a valid integer, then the default value is returned * instead. * @param key The property name to retrieve. * @param def The Default value to use if the property does not exist or * if the value is not a valid integer. * @return The value of the property as an integer, or the default value. */ public int getProperty(String key, int def) { try { String s = getProperty(key); return s == null ? def : Integer.parseInt(s); } catch (NumberFormatException e) { return def; } } /** * Get a property as a boolean value. If the value of the property * begins with a '1', a 'y' or a 't' (for 1, yes, true) then true is * returned. If the property does not exist then the given default * value is returned. * * @param key The property name to get. * @param def The default value that is returned if property does not * exist. * @return The value of the property as a boolean. If the property does * not exist then the value of 'def'. */ public boolean getProperty(String key, boolean def) { String s = getProperty(key); if (s != null) { if (s.length() == 0) return true; char c = s.toLowerCase().charAt(0); if (c == '1' || c == 'y' || c == 't') return true; else return false; } return def; } /** * Return a property as a double value. If the property does not * exist or is not a valid double, then the given default value * is returned instead. * @param key The property name. * @param def The default value to return if no valid value. * @return The value of the property as a double. */ public double getProperty(String key, double def) { try { String s = getProperty(key); return s == null ? def : Double.parseDouble(s); } catch (NumberFormatException e) { return def; } } }