package com.loadimpact.util;
import com.loadimpact.eval.DelayUnit;
import com.loadimpact.eval.LoadTestResult;
import com.loadimpact.eval.Operator;
import com.loadimpact.resource.testresult.StandardMetricResult;
import java.util.Map;
import java.util.Set;
import java.util.TreeMap;
import java.util.TreeSet;
/**
* Container for a set of parameters, plus some convenience methods.
*
* @author jens
*/
public class Parameters {
private Map<String, String> parameters;
private static final String NULL_String = null;
public Parameters() {
this.parameters = new TreeMap<String, String>();
}
public Parameters(Map<String, String> parameters) {
this.parameters = parameters;
}
public int size() {
return parameters.size();
}
/**
* Adds a parameter
*
* @param key its key
* @param value its value
*/
public void add(String key, String value) {
parameters.put(key, value);
}
/**
* Returns all keys.
*
* @return set of keys
*/
public Set<String> keys() {
return parameters.keySet();
}
/**
* Returns all keys matching the given pattern.
*
* @param pattern key pattern
* @return set of keys
*/
public Set<String> keys(String pattern) {
Set<String> result = new TreeSet<String>();
for (String key : keys()) {
if (key.matches(pattern)) result.add(key);
}
return result;
}
/**
* Returns true if key is a member.
*
* @param key key to check
* @return true if member
*/
public boolean has(String key) {
return parameters.containsKey(key);
}
/**
* Returns the value associated with the key, or the given default value.
*
* @param key key to find
* @param defaultValue if not found
* @return value
*/
public String get(String key, String defaultValue) {
String value = parameters.get(key);
return StringUtils.isBlank(value) ? defaultValue : value;
}
public int get(String key, int defaultValue) {
try {
return Integer.parseInt(get(key, NULL_String));
} catch (Exception e) {
return defaultValue;
}
}
public boolean get(String key, boolean defaultValue) {
try {
return Boolean.parseBoolean(get(key, NULL_String));
} catch (Exception e) {
return defaultValue;
}
}
public float get(String key, float defaultValue) {
try {
return Float.parseFloat(get(key, NULL_String));
} catch (Exception e) {
return defaultValue;
}
}
public StandardMetricResult.Metrics get(String key, StandardMetricResult.Metrics defaultValue) {
try {
return StandardMetricResult.Metrics.valueOf(get(key, defaultValue.name()).toUpperCase());
} catch (Exception e) {
e.printStackTrace();
return defaultValue;
}
}
public DelayUnit get(String key, DelayUnit defaultValue) {
return DelayUnit.valueOf(get(key, defaultValue.name()));
}
public Operator get(String key, Operator defaultValue) {
return Operator.valueOf(get(key, defaultValue.name()));
}
public LoadTestResult get(String key, LoadTestResult defaultValue) {
return LoadTestResult.valueOf(get(key, defaultValue.name()));
}
@Override
public String toString() {
StringBuilder buf = new StringBuilder(10000);
buf.append(String.format("--- Load Test Parameters ---%n"));
for (Map.Entry<String, String> e : parameters.entrySet()) {
buf.append(String.format(" %s=%s%n", e.getKey(), e.getValue()));
}
buf.append(String.format("--- END ---%n"));
return buf.toString();
}
}