package com.sijobe.spc.validation; import java.util.ArrayList; import java.util.List; public class ParameterString extends Parameter { private List<String> validValues; private String expected; public ParameterString(String label, boolean optional) { this(label,optional,false,null); } public ParameterString(String label, boolean optional, boolean variableLength) { this(label,optional,variableLength,null); } public ParameterString(String label, boolean optional, String validValues[]) { super(label, optional, false); List<String> values = new ArrayList<String>(); for (String value : validValues) { values.add(value); } initialise(label, optional, false, values); } public ParameterString(String label, boolean optional, List<String> validValues) { this(label,optional,false,validValues); } public ParameterString(String label, boolean optional, boolean variableLength, List<String> validValues) { super(label, optional, variableLength); initialise(label, optional, variableLength, validValues); } private void initialise(String label, boolean optional, boolean variableLength, List<String> validValues) { this.validValues = validValues; if (validValues == null) { validValues = new ArrayList<String>(); } for (int i = 0; i < validValues.size(); i++) { validValues.set(i, validValues.get(i).toLowerCase()); if (i == 0) { expected = validValues.get(i); } else { expected = expected + ", " + validValues.get(i); } } } /** * @see com.sijobe.spc.validation.Parameter#validate(java.lang.String) */ @Override public Object validate(String parameter) throws ValidationException { if (validValues == null) { return parameter; } if (validValues.contains(parameter.toLowerCase())) { return parameter; } throw new ValidationException("Parameter " + parameter + " is an unexpected value (" + expected + ")"); } }