PropertiesUtil.java
/*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*
*/
package org.esigate.util;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Properties;
import org.esigate.ConfigurationException;
/**
* Utility methods for loading configuration parameters.
*
* @author Francois-Xavier Bonnet
* @author Nicolas Richeton
*
*/
public final class PropertiesUtil {
private PropertiesUtil() {
}
/**
* Retrieves a property containing a comma separated list of values, trim them and return them as a Collection of
* String.
*
* @param properties
* @param propertyName
* @param defaultValue
* @return the values
*/
public static Collection<String> getPropertyValue(Properties properties, String propertyName,
Collection<String> defaultValue) {
Collection<String> result = defaultValue;
String propertyValue = properties.getProperty(propertyName);
if (propertyValue != null) {
result = toCollection(propertyValue);
if (result.contains("*") && result.size() > 1) {
throw new ConfigurationException(propertyName + " must be a comma-separated list or *");
}
}
return result;
}
/**
* Return the provided comma-separated String as a collection. Order is maintained.
*
* @param list
* @return Ordered collection
*/
static Collection<String> toCollection(String list) {
Collection<String> result = new ArrayList<>();
if (list != null) {
String[] values = list.split(",");
for (String value : values) {
String trimmed = value.trim();
if (!trimmed.isEmpty()) {
result.add(trimmed);
}
}
}
return result;
}
public static int getPropertyValue(Properties props, String name, int defaultValue) {
String value = props.getProperty(name);
int result = defaultValue;
if (value != null) {
result = Integer.parseInt(value);
}
return result;
}
public static boolean getPropertyValue(Properties props, String name, boolean defaultValue) {
String value = props.getProperty(name);
boolean result = defaultValue;
if (value != null) {
result = Boolean.parseBoolean(value);
}
return result;
}
public static float getPropertyValue(Properties properties, String name, float defaultValue) {
String value = properties.getProperty(name);
float result = defaultValue;
if (value != null) {
result = Float.parseFloat(value);
}
return result;
}
public static long getPropertyValue(Properties properties, String name, long defaultValue) {
String value = properties.getProperty(name);
long result = defaultValue;
if (value != null) {
result = Long.parseLong(value);
}
return result;
}
}