package eu.dnetlib.iis.common;
import java.util.Map;
import org.apache.commons.lang.StringUtils;
import org.apache.hadoop.conf.Configuration;
/**
* Utility class holding parameter names and method simplifying access to parameters from hadoop context.
* @author mhorst
*
*/
public final class WorkflowRuntimeParameters {
public static final String OOZIE_ACTION_OUTPUT_FILENAME = "oozie.action.output.properties";
public static final char DEFAULT_CSV_DELIMITER = ',';
public static final String UNDEFINED_NONEMPTY_VALUE = "$UNDEFINED$";
// default values
public static final String DNET_SERVICE_READ_TIMEOUT_DEFAULT_VALUE = "60000";
public static final String DNET_SERVICE_CONNECTION_TIMEOUT_DEFAULT_VALUE = "60000";
// parameter names
public static final String DNET_SERVICE_CLIENT_READ_TIMEOUT = "dnet.service.client.read.timeout";
public static final String DNET_SERVICE_CLIENT_CONNECTION_TIMEOUT = "dnet.service.client.connection.timeout";
// ----------------- CONSTRUCTORS -----------------------------
private WorkflowRuntimeParameters() {}
/**
* Retrieves parameter from hadoop context configuration when set to value different than {@link WorkflowRuntimeParameters#UNDEFINED_NONEMPTY_VALUE}.
*/
public static String getParamValue(String paramName, Configuration configuration) {
String paramValue = configuration.get(paramName);
if (StringUtils.isNotBlank(paramValue) && !UNDEFINED_NONEMPTY_VALUE.equals(paramValue)) {
return paramValue;
} else {
return null;
}
}
/**
* Retrieves {@link Integer} parameter from hadoop context configuration when set to non-empty value different than {@link WorkflowRuntimeParameters#UNDEFINED_NONEMPTY_VALUE}.
* Null is returned when parameter was not set.
* @throws {@link NumberFormatException} if parameter value does not contain a parsable integer
*/
public static Integer getIntegerParamValue(String paramName, Configuration configuration) throws NumberFormatException {
String paramValue = getParamValue(paramName, configuration);
return paramValue!=null?Integer.valueOf(paramValue):null;
}
/**
* Retrieves parameter from hadoop context configuration when set to value different than {@link WorkflowRuntimeParameters#UNDEFINED_NONEMPTY_VALUE}.
* If requested parameter was not set, fallback parameter is retrieved using the same logic.
*/
public static String getParamValue(String paramName, String fallbackParamName, Configuration configuration) {
String resultCandidate = getParamValue(paramName, configuration);
return resultCandidate!=null?resultCandidate:getParamValue(fallbackParamName, configuration);
}
/**
* Provides parameter value. Returns default value when entry not found among parameters.
*
* @param paramName parameter name
* @param defaultValue parameter default value to be returned when entry not found among parameters
* @param parameters map of parameters
*/
public static String getParamValue(String paramName, String defaultValue, Map<String, String> parameters) {
return parameters.containsKey(paramName)?parameters.get(paramName):defaultValue;
}
}