package com.github.mygreen.supercsv.validation; import java.util.HashMap; import java.util.Map; import org.supercsv.cellprocessor.ift.CellProcessor; /** * フィールドに対するエラー情報。 * * @since 2.0 * @author T.TSUCHIE * */ public class CsvFieldError extends CsvError { /** serialVersionUID */ private static final long serialVersionUID = -7775352881004606689L; private final boolean processingFailure; private final String field; public CsvFieldError(final String objectName, final String field, final boolean processingFailure, final String[] codes, final Map<String, Object> variables, final String defaultMessage) { super(objectName, codes, variables, defaultMessage); this.processingFailure = processingFailure; this.field = field; } /** * {@link CellProcessor}内で発生したエラーかどうか。 * <p>{@link CellProcessor}で例外がスローされると、型変換されず、検証対象のBeanに値が設定されないないため、 * 後から{@link CsvValidator}で値を検証する際に検証をスキップする判定に利用する。 * </p> * @return trueの場合、{@link CellProcessor}内で発生したエラー。 */ public boolean isProcessingFailure() { return processingFailure; } /** * フィールド名を取得する。 * @return Beanにされたフィールドの名称を返す。 */ public String getField() { return field; } public static final class Builder { private final String objectName; private final String field; private final String[] codes; private boolean processingFailure; private Map<String, Object> variables = new HashMap<>(); private String defaultMessage; public Builder(final String objectName, final String field, final String[] codes) { this.objectName = objectName; this.field = field; this.codes = codes; } public Builder processingFailure(final boolean processingFailure) { this.processingFailure = processingFailure; return this; } public Builder variables(final Map<String, Object> variables) { this.variables.putAll(variables); return this; } public Builder variables(final String key, final Object value) { this.variables.put(key, value); return this; } public Builder defaultMessage(final String defaultMessage) { this.defaultMessage = defaultMessage; return this; } public CsvFieldError build() { return new CsvFieldError(objectName, field, processingFailure, codes, variables, defaultMessage); } } }