package com.gh.mygreen.xlsmapper.validation; import java.util.Map; import com.gh.mygreen.xlsmapper.Utils; /** * フィールドのエラー情報を保持するクラス。 * * @author T.TSUCHIE * */ public class FieldError extends ObjectError { private final String fieldPath; private Object fieldValue; private Class<?> fieldType; /** 型のConversionエラーの場合、値をtrueに設定する。 */ private boolean typeBindFailure; public FieldError(final String objectName, final String fieldPath) { super(objectName); this.fieldPath = fieldPath; } public FieldError(final String objectName, final String fieldPath, final String[] codes, final Object[] args) { super(objectName, codes, args); this.fieldPath = fieldPath; } public FieldError(final String objectName, final String fieldPath, final String[] codes, final Map<String, ?> vars) { super(objectName, codes, vars); this.fieldPath = fieldPath; } public FieldError(final String objectName, final String fieldPath, final Class<?> fieldType, final Object fieldValue, final boolean typeBindFailure, final String[] codes, final Object[] args) { this(objectName, fieldPath, codes, args); this.fieldType = fieldType; this.fieldValue = fieldValue; this.typeBindFailure = typeBindFailure; } public FieldError(final String objectName, final String fieldPath, final Class<?> fieldType, final Object fieldValue, final boolean typeBindFailure, final String[] codes, final Map<String, ?> vars) { this(objectName, fieldPath, codes, vars); this.fieldType = fieldType; this.fieldValue = fieldValue; this.typeBindFailure = typeBindFailure; } @Override public String toString() { StringBuilder msg = new StringBuilder(); msg.append(String.format("Fail conversion field '%s'.", getFieldPath())); if(isTypeBindFailure()) { msg.append(String.format("field value '%s' => type '%s'.", Utils.convertToString(getFieldValue()), fieldType.getName())); } return msg.toString(); } public String getFieldPath() { return fieldPath; } public Object getFieldValue() { return fieldValue; } public Class<?> getFieldType() { return fieldType; } public boolean isTypeBindFailure() { return typeBindFailure; } @Override public FieldError setDefaultMessage(String defaultMessage) { super.setDefaultMessage(defaultMessage); return this; } }