InternalFieldErrorBuilder.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.  * {@link SheetBindingErrors}経由で呼び出される{@link FieldError}のビルダクラス。
  7.  * <p>{@link #buildAndAddError()}でチェインでより使い安くする。</p>
  8.  *
  9.  * @since 2.0
  10.  * @author T.TSUCHIE
  11.  *
  12.  */
  13. public class InternalFieldErrorBuilder extends FieldErrorBuilder {
  14.    
  15.     private final SheetBindingErrors<?> errors;
  16.    
  17.     /**
  18.      * ビルダのインスタンスを作成します
  19.      * @param errors エラー情報
  20.      * @param objectName オブジェクト名
  21.      * @param field フィールド名。ネストしている場合は、親のパスを付与した形式(e.g. person.name)で指定します。
  22.      * @param codes メッセージコード。複数指定可能で、先頭にあるものほど優先度が高い。
  23.      */
  24.     public InternalFieldErrorBuilder(final SheetBindingErrors<?> errors, final String objectName, final String field, final String[] codes) {
  25.         super(objectName, field, codes);
  26.         this.errors = errors;
  27.     }
  28.    
  29.     @Override
  30.     public InternalFieldErrorBuilder rejectedValue(final Object rejectedValue) {
  31.         super.rejectedValue(rejectedValue);
  32.         return this;
  33.     }
  34.    
  35.     @Override
  36.     public InternalFieldErrorBuilder conversionFailure(final boolean conversionFailure) {
  37.         super.conversionFailure(conversionFailure);
  38.         return this;
  39.     }
  40.    
  41.     @Override
  42.     public InternalFieldErrorBuilder variables(final Map<String, Object> variables) {
  43.         super.variables(variables);
  44.         return this;
  45.     }
  46.    
  47.     @Override
  48.     public InternalFieldErrorBuilder variables(final String key, final Object value) {
  49.         super.variables(key, value);
  50.         return this;
  51.     }
  52.    
  53.     @Override
  54.     public InternalFieldErrorBuilder defaultMessage(final String defaultMessage) {
  55.         super.defaultMessage(defaultMessage);
  56.         return this;
  57.     }
  58.    
  59.     @Override
  60.     public InternalFieldErrorBuilder sheetName(final String sheetName) {
  61.         super.sheetName(sheetName);
  62.         return this;
  63.     }
  64.    
  65.     @Override
  66.     public InternalFieldErrorBuilder label(final String label) {
  67.         super.label(label);
  68.         return this;
  69.     }
  70.    
  71.     @Override
  72.     public InternalFieldErrorBuilder label(final Optional<String> label) {
  73.         super.label(label);
  74.         return this;
  75.     }
  76.    
  77.     @Override
  78.     public InternalFieldErrorBuilder address(final CellPosition address) {
  79.         super.address(address);
  80.         return this;
  81.     }
  82.    
  83.     @Override
  84.     public InternalFieldErrorBuilder address(final Optional<CellPosition> address) {
  85.         super.address(address);
  86.         return this;
  87.     }
  88.    
  89.     /**
  90.      * {@link FieldError}のインスタンスを組み立て、{@link SheetBindingErrors}にエラーとして追加します。
  91.      * @return {@link SheetBindingErrors}のインスタンス
  92.      */
  93.     public SheetBindingErrors<?> buildAndAddError() {
  94.        
  95.         final FieldError error = super.build();
  96.        
  97.         errors.addError(error);
  98.        
  99.         return errors;
  100.     }
  101. }