package com.constellio.model.frameworks.validation;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
public class DecoratedValidationsErrors extends ValidationErrors {
private ValidationErrors errors;
private Map<String, String> extraParams;
private boolean hasDecoratedErrors;
private boolean hasDecoratedWarnings;
public DecoratedValidationsErrors(ValidationErrors errors, Map<String, String> extraParams) {
this.extraParams = extraParams;
this.errors = errors;
}
public DecoratedValidationsErrors(ValidationErrors errors) {
this.extraParams = new HashMap<>();
this.errors = errors;
}
public void buildExtraParams(Map<String, Object> params) {
}
@Override
public void add(Class<?> validatorClass, String code, Map<String, Object> parameters) {
hasDecoratedErrors = true;
parameters.putAll(extraParams);
buildExtraParams(parameters);
errors.add(validatorClass, code, parameters);
}
public boolean hasDecoratedErrors() {
return hasDecoratedErrors;
}
public boolean hasDecoratedErrorsOrWarnings() {
return hasDecoratedErrors || hasDecoratedWarnings;
}
public DecoratedValidationsErrors withParam(String key, String value) {
this.extraParams.put(key, value);
return this;
}
public List<ValidationError> getValidationErrors() {
return errors.getValidationErrors();
}
public void addAll(List<ValidationError> validationErrors) {
for (ValidationError error : validationErrors) {
add(error.getValidatorClass(), error.getValidatorErrorCode(), error.getParameters());
}
}
@Override
public void addWarning(Class<?> validatorClass, String code, Map<String, Object> parameters) {
hasDecoratedWarnings = true;
parameters.putAll(extraParams);
buildExtraParams(parameters);
errors.addWarning(validatorClass, code, parameters);
}
@Override
public List<ValidationError> getValidationWarnings() {
return errors.getValidationWarnings();
}
@Override
public void addAllWarnings(List<ValidationError> validationWarnings) {
for (ValidationError error : validationWarnings) {
addWarning(error.getValidatorClass(), error.getValidatorErrorCode(), error.getParameters());
}
}
}