FieldError.java
package com.gh.mygreen.xlsmapper.validation;
import java.util.Map;
import java.util.Optional;
import com.gh.mygreen.xlsmapper.util.CellPosition;
/**
* オブジェクトのフィールドであるセルのエラー情報を保持するクラスです。
*
* @version 2.0
* @author T.TSUCHIE
*
*/
public class FieldError extends ObjectError {
/** serialVersionUID */
private static final long serialVersionUID = 1L;
/**
* フィールド名
*/
private final String field;
/**
* 型変換に失敗したときのエラーかどうか
*/
private final boolean conversionFailure;
/**
* エラーとなる値
*/
private Object rejectedValue;
/**
* セルのアドレス情報
*/
private CellPosition address;
/**
* コンストラクタ
*
* @param objectName オブジェクト名
* @param field フィールド名
* @param conversionFailure 型変換に失敗したときのエラーかどうか
* @param codes メッセージコード
* @param variables メッセージの引数
*/
public FieldError(final String objectName, final String field, final boolean conversionFailure,
final String[] codes, final Map<String, Object> variables) {
super(objectName, codes, variables);
this.field = field;
this.conversionFailure = conversionFailure;
}
/**
* 型変換に失敗したかどうか。
* <p>型変換に失敗した場合、検証対象のBeanやフィールドに値が設定されないないため、
* 後から値を検証する際に検証をスキップする判定に利用する。
* </p>
* @return trueの場合、型変換にしっぱいしたエラー。
*/
public boolean isConversionFailure() {
return conversionFailure;
}
/**
* フィールド名を取得する。
* <p>ネストしている場合は、親のパスを付与した形式(e.g. person.name)となります。</p>
* @return Beanにされたフィールドの名称を返す。
*/
public String getField() {
return field;
}
/**
* エラートとなったフィールドの値を取得する。
* <p>ただし、型変換エラーの場合、変換前の値となります。</p>
* @return フィールドの値。
*/
public Object getRejectedValue() {
return rejectedValue;
}
/**
* エラートとなったフィールドの値を設定する。
* <p>ただし、型変換エラーの場合、変換前の値となります。</p>
* @param rejectedValue フィールドの値。
*/
public void setRejectedValue(Object rejectedValue) {
this.rejectedValue = rejectedValue;
}
/**
* セルのアドレス情報を取得します。
* @return 設定されていない場合は、空を返します。
*/
public Optional<CellPosition> getAddressAsOptional() {
return Optional.ofNullable(address);
}
/**
* セルのアドレス情報を取得します。
* @return 設定されていない場合は、nullを返します。
*/
public CellPosition getAddress() {
return address;
}
/**
* セルのアドレス情報を設定します。
* @param address アドレス情報
*/
public void setAddress(CellPosition address) {
this.address = address;
}
}