package org.gambi.tapestry5.cli.services.impl;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import org.apache.tapestry5.ioc.annotations.Inject;
import org.apache.tapestry5.ioc.services.TypeCoercer;
import org.gambi.tapestry5.cli.data.CLIOption;
import org.gambi.tapestry5.cli.services.CLIValidator;
import org.slf4j.Logger;
/**
* Sample validator to check if the sum of the first two inputs (not options !)
* is greater than 100.
*
* Being a CLIValidator, this service is invoked as the last step before ending
* the parsing.
*
* @author alessiogambi
*
*/
public class SumValidator implements CLIValidator {
@Inject
private Logger logger;
@Inject
private TypeCoercer typeCoercer;
public void validate(Map<CLIOption, String> options, List<String> inputs,
List<String> accumulator) {
List<String> failedValidation = new ArrayList<String>();
try {
Integer a = typeCoercer.coerce(inputs.get(0), Integer.class);
Integer b = typeCoercer.coerce(inputs.get(1), Integer.class);
if (a + b > 100) {
failedValidation.add("SumValidation Failed ! a+b > 100");
}
} catch (Throwable e) {
logger.warn("Error during validation ", e);
failedValidation.add("SumValidation Failed!");
}
if (failedValidation.size() > 0) {
logger.debug("Validation Failed: " + failedValidation);
}
accumulator.addAll(failedValidation);
}
}