/******************************************************************************* * Copyright 2017 Ivan Shubin http://galenframework.com * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. ******************************************************************************/ package com.galenframework.validation; import com.galenframework.specs.Spec; import java.util.LinkedList; import java.util.List; import static java.util.Arrays.asList; public class ValidationErrorException extends Exception { private List<String> errorMessages; private ImageComparison imageComparison; private List<ValidationObject> validationObjects; private List<ValidationResult> childValidationResults; public ValidationErrorException() { super(); } public ValidationErrorException(List<ValidationObject> validationObjects, List<String> errorMessages) { this.validationObjects = validationObjects; this.errorMessages = errorMessages; } public ValidationErrorException(String paramString, Throwable paramThrowable) { super(paramString, paramThrowable); withMessage(paramString); } public ValidationErrorException withMessage(String message) { if (errorMessages == null) { errorMessages = new LinkedList<>(); } errorMessages.add(message); return this; } public ValidationErrorException withValidationObject(ValidationObject validationObject) { if (this.validationObjects== null) { this.validationObjects = new LinkedList<>(); } this.validationObjects.add(validationObject); return this; } public ValidationErrorException(String paramString) { super(paramString); withMessage(paramString); } public ValidationErrorException(Throwable paramThrowable) { super(paramThrowable); setErrorMessages(asList(paramThrowable.getClass().getName() + ": " + paramThrowable.getMessage())); } public List<String> getErrorMessages() { return errorMessages; } public void setErrorMessages(List<String> errorMessages) { this.errorMessages = errorMessages; } public List<ValidationObject> getValidationObjects() { return validationObjects; } public void setValidationObjects(List<ValidationObject> validationObjects) { this.validationObjects = validationObjects; } /** * */ private static final long serialVersionUID = -1566513657187992205L; public ValidationErrorException withMessages(List<String> messages) { setErrorMessages(messages); return this; } public ValidationResult asValidationResult(Spec spec) { ValidationResult validationResult = new ValidationResult( spec, this.getValidationObjects(), new ValidationError(this.getErrorMessages(), this.getImageComparison())); validationResult.setChildValidationResults(childValidationResults); return validationResult; } public ImageComparison getImageComparison() { return imageComparison; } public void setImageComparison(ImageComparison imageComparison) { this.imageComparison = imageComparison; } public ValidationErrorException withImageComparison(ImageComparison imageComparison) { setImageComparison(imageComparison); return this; } public ValidationErrorException withValidationObjects(List<ValidationObject> validationObjects) { if (this.validationObjects == null) { this.validationObjects = validationObjects; } else { this.validationObjects.addAll(validationObjects); } return this; } public ValidationErrorException withChildValidationResults(List<ValidationResult> childValidationResults) { setChildValidationResults(childValidationResults); return this; } public void setChildValidationResults(List<ValidationResult> childValidationResults) { this.childValidationResults = childValidationResults; } public List<ValidationResult> getChildValidationResults() { return childValidationResults; } }