View Javadoc
1   package com.github.mygreen.supercsv.cellprocessor;
2   
3   import org.supercsv.cellprocessor.CellProcessorAdaptor;
4   import org.supercsv.cellprocessor.ift.CellProcessor;
5   import org.supercsv.util.CsvContext;
6   
7   import com.github.mygreen.supercsv.exception.SuperCsvValidationException;
8   import com.github.mygreen.supercsv.util.Utils;
9   
10  /**
11   * 入力値検証用の{@link CellProcessor}のベースとなるクラス。
12   * 
13   * @version 2.0
14   * @author T.TSUCHIE
15   *
16   */
17  public abstract class ValidationCellProcessor extends CellProcessorAdaptor {
18      
19      /**
20       * 検証エラー時のメッセージ
21       */
22      protected String validationMessage;
23      
24      /**
25       * チェインの最後に実行される{@link CellProcessor}のインスタンスを作成するコンストラクタ。
26       */
27      protected ValidationCellProcessor() {
28          super();
29      }
30      
31      /**
32       * チェインの次に実行される{@link CellProcessor}を指定してインスタンスを作成するコンストラクタ。 
33       * 
34       * @param next チェインで次に実行される{@link CellProcessor}
35       * @throws NullPointerException {@literal if next is null.}
36       */
37      protected ValidationCellProcessor(final CellProcessor next) {
38          super(next);
39      }
40      
41      /**
42       * 検証エラー時のメッセージを取得します。
43       * @return エラーメッセージ。
44       */
45      public String getValidationMessage() {
46          return validationMessage;
47      }
48      
49      /**
50       * 検証エラー時のメッセージを設定する。
51       * @param validationMessage エラー時のメッセージ。
52       */
53      public void setValidationMessage(String validationMessage) {
54          this.validationMessage = validationMessage;
55      }
56      
57      /**
58       * 標準の検証用のメッセージを取得する。
59       * @return {@literal {クラス名.violated}}の形式。
60       */
61      public String getDefaultValidationMessage() {
62          return String.format("{%s.violated}", getClass().getName());
63      }
64      
65      /**
66       * {@link SuperCsvValidationException.Builder}のインスタンスを作成する。
67       * @param context CsvContext CSVのコンテキスト。
68       * @return 予め検証用のメッセージは設定された状態で作成される。
69       *         ただし、{@link #getValidationMessage()}がnullまたは空の場合、{@link #getDefaultValidationMessage()}が設定される。
70       */
71      public SuperCsvValidationException.Builder createValidationException(final CsvContext context) {
72          
73          String message = getValidationMessage();
74          if(Utils.isEmpty(message)) {
75              message = getDefaultValidationMessage();
76          }
77          
78          return new SuperCsvValidationException.Builder(context, this)
79                  .validationMessage(message);
80      }
81      
82  }