package org.caudexorigo.cli; import java.util.ArrayList; import java.util.Arrays; import java.util.List; import org.caudexorigo.cli.ArgumentValidationException.ValidationError.ErrorType; class ValidationErrorBuilderImpl implements ValidationErrorBuilder { private final List<ArgumentValidationException.ValidationError> m_validationException = new ArrayList<ArgumentValidationException.ValidationError>(); public void missingValue(final ArgumentSpecification optionSpecification) { m_validationException.add(ArgumentValidationException.createMissingValueError(optionSpecification)); } public void unexpectedAdditionalValues(final ArgumentSpecification optionSpecification) { m_validationException.add(ArgumentValidationException.createAdditionalValuesError(optionSpecification)); } public void unexpectedOption(final String name) { m_validationException.add(ArgumentValidationException.createUnexpectedOptionError(name)); } public void unexpectedValue(final ArgumentSpecification optionSpecification) { m_validationException.add(ArgumentValidationException.createUnexpectedValueError(optionSpecification)); } public void missingOption(final ArgumentSpecification optionSpecification) { m_validationException.add(ArgumentValidationException.createMissingOptionError(optionSpecification)); } public void invalidValueForType(final ArgumentSpecification optionSpecification, final String message) { m_validationException.add(ArgumentValidationException.createInvalidValueForType(optionSpecification, message)); } public void unableToConstructType(final ArgumentSpecification optionSpecification, final String message) { m_validationException.add(ArgumentValidationException.createUnableToConstructType(optionSpecification, message)); } public void patternMismatch(final ArgumentSpecification optionSpecification, final String value) { m_validationException.add(ArgumentValidationException.createPatternMismatch(optionSpecification, value)); } public void helpRequested(final OptionsSpecification specification) { m_validationException.add(ArgumentValidationException.createhelpRequested(specification)); } public void validate() throws ArgumentValidationException { if (m_validationException.size() > 0) { for (ArgumentValidationException.ValidationError error : m_validationException) { if (ErrorType.HelpRequested.equals(error.getErrorType())) { throw new ArgumentValidationException(Arrays.asList(error)); } } throw new ArgumentValidationException(m_validationException); } } }