package org.molgenis.data.validation; import com.google.common.base.Function; import com.google.common.collect.Collections2; import org.apache.commons.lang3.StringUtils; import org.molgenis.data.MolgenisDataException; import java.util.Collections; import java.util.List; import java.util.Set; public class MolgenisValidationException extends MolgenisDataException { private static final long serialVersionUID = 1L; private Set<ConstraintViolation> violations; public MolgenisValidationException(ConstraintViolation violation) { this(Collections.singleton(violation)); } public MolgenisValidationException(Set<ConstraintViolation> violations) { this.violations = violations; } public Set<ConstraintViolation> getViolations() { return violations; } @Override public String getMessage() { if ((violations == null) || (violations.isEmpty())) return "Unknown validation exception."; return StringUtils.join(Collections2.transform(violations, new Function<ConstraintViolation, String>() { @Override public String apply(ConstraintViolation violation) { return violation.getMessage(); } }), '.'); } /** * renumber the violation row indices with the actual row numbers * * @param actualIndices */ public void renumberViolationRowIndices(List<Integer> actualIndices) { violations.stream().forEach(v -> v.renumberRowIndex(actualIndices)); } }