package org.stagemonitor.configuration.converter;
import org.stagemonitor.util.StringUtils;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import static java.util.Collections.emptyList;
public class ListValueConverter<T> implements ValueConverter<List<T>> {
public static final ListValueConverter<String> STRINGS_VALUE_CONVERTER =
new ListValueConverter<String>(StringValueConverter.INSTANCE);
public static final ListValueConverter<String> LOWER_STRINGS_VALUE_CONVERTER =
new ListValueConverter<String>(StringValueConverter.LOWER_CASE);
public static final ValueConverter<List<Integer>> INTEGERS =
new ListValueConverter<Integer>(IntegerValueConverter.INSTANCE);
private final ValueConverter<T> valueConverter;
public ListValueConverter(ValueConverter<T> valueConverter) {
this.valueConverter = valueConverter;
}
@Override
public List<T> convert(String s) {
if (s != null && s.length() > 0) {
final ArrayList<T> result = new ArrayList<T>();
for (String split : s.split(",")) {
result.add(valueConverter.convert(split.trim()));
}
return Collections.unmodifiableList(result);
}
return emptyList();
}
@Override
public String toString(List<T> value) {
return StringUtils.asCsv(value);
}
}