/**
* <p>
* Gets a property value from given properties.
* </p>
*
* @param properties
* the given properties.
* @param key
* the property key.
* @param defaultValue
* the default value.
* @param required
* the flag indicates whether the property is required.
* @param canEmpty
* the flag indicates whether the property can be empty.
*
* @return the retrieved property value or the default value if the optional property is not present.
*
* @throws ReportRetrievalToolConfigurationException
* if the property is missing when required is <code>true</code> or an empty string when canEmpty is
* <code>false</code>.
*/
public static String getProperty(Properties properties, String key, String defaultValue, boolean required,
boolean canEmpty) {
String value = properties.getProperty(key);
if (value == null) {
// The value is null
if (required) {
throw new ReportRetrievalToolConfigurationException("The property '" + key + "' is required.");
}
return defaultValue;
}
// Trim the value
value = value.trim();
if ((value.length() == 0) && (!canEmpty)) {
// The value is empty
throw new ReportRetrievalToolConfigurationException("The property '" + key + "' can not be empty.");
}
return value;
}