/*
 * Copyright (c) Siemens AG 2008 
 *           (c) Universität Paderborn 2008 
 * Licensed under EUPL 1.1. 
 */
package vkc.util;

import java.util.Properties;

/**
 * Methode stellt Komfortmethoden für den Zugriff
 * auf java.lang.Properties bereit
 * <p>
 * @author Hardy Höfer
 */
public final class PropertyUtils {

	private PropertyUtils() {
	}

	/**
	 * Methode liefert den Wert einer Eigenschaft aus dem
	 * Properties-Argument falls vorhanden. Falls unter
	 * dem Key kein Wert vorhanden ist, wird der Vorgabewert
	 * zurückgegeben
	 */	
	public final static String getValue( Properties props, 
								  		 String name, 
								  		 String defaultValue ) {
		
		if ( props==null || props.containsKey( name )==false ) {
			return defaultValue;
		} 

		return StringUtils.normalize( props.getProperty( name ) );
	}

	/**
	 * Methode liefert den Wert einer Eigenschaft aus dem
	 * Properties-Argument als int-Wert falls vorhanden. Falls 
	 * unter dem Key kein Wert vorhanden ist oder der Wert nicht
	 * als int geparst werden kann, wird der Vorgabewert
	 * zurückgegeben.
	 */	
	public static final int getValue( Properties props, 
							   		  String name, 
							   		  int defaultValue ) {
		if ( props==null || props.containsKey( name )==false ) {
			return defaultValue;
		} 

		try {
            return Integer.parseInt( StringUtils.normalize( props.getProperty( name ) ) );
        } catch (Exception e) {
			return defaultValue;
        }
	}

	/**
	 * Methode liefert den Wert einer Eigenschaft aus dem
	 * Properties-Argument als boolean-Wert falls vorhanden. Falls 
	 * unter dem Key kein Wert vorhanden ist oder der Wert nicht
	 * als boolean geparst werden kann, wird der Vorgabewert
	 * zurückgegeben.
	 */	
	public static final boolean getValue( Properties props, 
									  	  String name, 
									  	  boolean defaultValue ) {
		if ( props==null || props.containsKey( name )==false ) {
			return defaultValue;
		} 

		try {
			return Boolean.valueOf( StringUtils.normalize( props.getProperty( name ) ) ).booleanValue();
		} catch (Exception e) {
			return defaultValue;
		}
	}
}