FieldError.java

  1. package com.gh.mygreen.xlsmapper.validation;

  2. import java.util.Map;
  3. import java.util.Optional;

  4. import com.gh.mygreen.xlsmapper.util.CellPosition;

  5. /**
  6.  * オブジェクトのフィールドであるセルのエラー情報を保持するクラスです。
  7.  *
  8.  * @version 2.0
  9.  * @author T.TSUCHIE
  10.  *
  11.  */
  12. public class FieldError extends ObjectError {

  13.     /** serialVersionUID */
  14.     private static final long serialVersionUID = 1L;
  15.    
  16.     /**
  17.      * フィールド名
  18.      */
  19.     private final String field;
  20.    
  21.     /**
  22.      * 型変換に失敗したときのエラーかどうか
  23.      */
  24.     private final boolean conversionFailure;
  25.    
  26.     /**
  27.      * エラーとなる値
  28.      */
  29.     private Object rejectedValue;
  30.    
  31.     /**
  32.      * セルのアドレス情報
  33.      */
  34.     private CellPosition address;
  35.    
  36.     /**
  37.      * コンストラクタ
  38.      *
  39.      * @param objectName オブジェクト名
  40.      * @param field フィールド名
  41.      * @param conversionFailure 型変換に失敗したときのエラーかどうか
  42.      * @param codes メッセージコード
  43.      * @param variables メッセージの引数
  44.      */
  45.     public FieldError(final String objectName, final String field, final boolean conversionFailure,
  46.             final String[] codes, final Map<String, Object> variables) {
  47.         super(objectName, codes, variables);
  48.        
  49.         this.field = field;
  50.         this.conversionFailure = conversionFailure;
  51.     }
  52.    
  53.     /**
  54.      * 型変換に失敗したかどうか。
  55.      * <p>型変換に失敗した場合、検証対象のBeanやフィールドに値が設定されないないため、
  56.      *    後から値を検証する際に検証をスキップする判定に利用する。
  57.      * </p>
  58.      * @return trueの場合、型変換にしっぱいしたエラー。
  59.      */
  60.     public boolean isConversionFailure() {
  61.         return conversionFailure;
  62.     }    
  63.    
  64.     /**
  65.      * フィールド名を取得する。
  66.      * <p>ネストしている場合は、親のパスを付与した形式(e.g. person.name)となります。</p>
  67.      * @return Beanにされたフィールドの名称を返す。
  68.      */
  69.     public String getField() {
  70.         return field;
  71.     }
  72.    
  73.     /**
  74.      * エラートとなったフィールドの値を取得する。
  75.      * <p>ただし、型変換エラーの場合、変換前の値となります。</p>
  76.      * @return フィールドの値。
  77.      */
  78.     public Object getRejectedValue() {
  79.        return rejectedValue;
  80.     }
  81.    
  82.     /**
  83.      * エラートとなったフィールドの値を設定する。
  84.      * <p>ただし、型変換エラーの場合、変換前の値となります。</p>
  85.      * @param rejectedValue フィールドの値。
  86.      */
  87.     public void setRejectedValue(Object rejectedValue) {
  88.        this.rejectedValue = rejectedValue;
  89.     }
  90.    
  91.     /**
  92.      * セルのアドレス情報を取得します。
  93.      * @return 設定されていない場合は、空を返します。
  94.      */
  95.     public Optional<CellPosition> getAddressAsOptional() {
  96.         return Optional.ofNullable(address);
  97.     }
  98.    
  99.     /**
  100.      * セルのアドレス情報を取得します。
  101.      * @return 設定されていない場合は、nullを返します。
  102.      */
  103.     public CellPosition getAddress() {
  104.         return address;
  105.     }
  106.    
  107.     /**
  108.      * セルのアドレス情報を設定します。
  109.      * @param address アドレス情報
  110.      */
  111.     public void setAddress(CellPosition address) {
  112.         this.address = address;
  113.     }
  114.    
  115. }