1 package com.lexicalscope.jewel.cli; 2 3 import java.util.ArrayList; 4 import java.util.List; 5 6 import com.lexicalscope.jewel.cli.specification.OptionSpecification; 7 8 public class ValidationErrorBuilderImpl implements ValidationErrorBuilder 9 { 10 private final List<ValidationFailure> validationExceptions = 11 new ArrayList<ValidationFailure>(); 12 13 public void missingValue(final OptionSpecification optionSpecification) 14 { 15 validationExceptions.add(new ValidationFailureMissingValue(optionSpecification)); 16 } 17 18 public void wrongNumberOfValues(final OptionSpecification optionSpecification, final List<String> excessValues) 19 { 20 validationExceptions.add(new ValidationFailureWrongNumberOfValues(optionSpecification, excessValues)); 21 } 22 23 public void unexpectedOption(final String name) 24 { 25 validationExceptions.add(ArgumentValidationExceptionFactory.createUnexpectedOptionError(name)); 26 } 27 28 public void unexpectedValue(final OptionSpecification optionSpecification, final List<String> values) 29 { 30 validationExceptions.add(ArgumentValidationExceptionFactory.createUnexpectedValueError(optionSpecification, values)); 31 } 32 33 @Override public void unexpectedTrailingValue(final List<String> unparsedArguments) { 34 validationExceptions.add(ArgumentValidationExceptionFactory.createUnexpectedTrailingValues(unparsedArguments)); 35 } 36 37 public void missingOption(final OptionSpecification optionSpecification) 38 { 39 validationExceptions.add(ArgumentValidationExceptionFactory.createMissingOptionError(optionSpecification)); 40 } 41 42 public void invalidValueForType(final OptionSpecification optionSpecification, final String message) 43 { 44 validationExceptions.add(ArgumentValidationExceptionFactory.createInvalidValueForType( 45 optionSpecification, 46 message)); 47 } 48 49 public void unableToConstructType(final OptionSpecification optionSpecification, final String message) 50 { 51 validationExceptions 52 .add(ArgumentValidationExceptionFactory.createUnableToConstructType(optionSpecification, message)); 53 } 54 55 public void patternMismatch(final OptionSpecification optionSpecification, final String value) 56 { 57 validationExceptions.add(ArgumentValidationExceptionFactory.createPatternMismatch(optionSpecification, value)); 58 } 59 60 public void validate() throws ArgumentValidationException 61 { 62 if (validationExceptions.size() > 0) 63 { 64 throw new ArgumentValidationException(validationExceptions); 65 } 66 } 67 }