/* (c) 2016 Open Source Geospatial Foundation - all rights reserved
* This code is licensed under the GPL 2.0 license, available at the root
* application directory.
*/
package org.geoserver.web.wicket;
import java.util.ArrayList;
import java.util.List;
import java.util.Locale;
import org.apache.wicket.util.convert.ConversionException;
import org.apache.wicket.util.convert.IConverter;
/**
* A converter for a list of decimals based on {@link DecimalConverter}
* @author Andrea Aime - GeoSolutions
*/
@SuppressWarnings("serial")
public class DecimalListConverter implements IConverter<List<Double>> {
private DecimalConverter converter = new DecimalConverter();
@Override
public List<Double> convertToObject(String value, Locale locale)
throws ConversionException {
List<Double> result = new ArrayList<>();
if(value != null && !"-".equals(value.trim())) {
String[] values = value.split("\\s+");
for (String s : values) {
Double v = converter.convertToObject(s, locale);
if(v != null) {
result.add(v);
}
}
}
return result;
}
@Override
public String convertToString(List<Double> value, Locale locale) {
if(value == null || value.isEmpty()) {
return "-";
} else {
StringBuilder sb = new StringBuilder();
for (int i = 0; i < value.size(); i++) {
String str = converter.convertToString(value.get(i), locale);
sb.append(str);
if(i < value.size() - 1) {
sb.append(" ");
}
}
return sb.toString();
}
}
public void setMaximumFractionDigits(int maximumFractionDigits) {
converter.setMaximumFractionDigits(maximumFractionDigits);
}
}