package org.wikipedia.miner.web.util.xjsfParameters; import java.util.ArrayList; import javax.servlet.http.HttpServletRequest; import org.dmilne.xjsf.param.Parameter; public class StringListParameter extends Parameter<String[]> { private final boolean caseSensitive ; /** * Initialises a new (case sensitive) StringListParameter * * @param name the name of the parameter * @param description a short description of what this parameter does * @param defaultValue the value to use when requests do not specify a value * for this parameter (may be null) */ public StringListParameter(String name, String description, String[] defaultValue) { super(name, description, defaultValue, "string list"); caseSensitive = true; } /** * Initialises a new StringListParameter * * @param name the name of the parameter * @param description a short description of what this parameter does * @param defaultValue the value to use when requests do not specify a value * for this parameter (may be null) * @param caseSensitive true if you care about capitalisation of values */ public StringListParameter(String name, String description, String[] defaultValue, boolean caseSensitive) { super(name, description, defaultValue, "string"); this.caseSensitive = caseSensitive; } @Override public String getValueForDescription(String[] val) { if (val.length == 0) { return "empty list"; } StringBuilder sb = new StringBuilder(); for (String v : val) { sb.append(v); sb.append(","); } sb.deleteCharAt(sb.length() - 1); return sb.toString(); } @Override public String[] getValue(HttpServletRequest request) throws IllegalArgumentException { String s = request.getParameter(getName()); if (s == null) { return getDefaultValue(); } ArrayList<String> values = new ArrayList<String>(); for (String val : s.split("[,;:]")) { values.add((val.trim())); } return values.toArray(new String[values.size()]); } }