View Javadoc
1   package com.github.mygreen.supercsv.exception;
2   
3   import java.util.HashMap;
4   import java.util.Map;
5   
6   import org.supercsv.exception.SuperCsvException;
7   import org.supercsv.util.CsvContext;
8   
9   /**
10   * 固定長カラムの処理に失敗したときのエラーです。
11   *
12   * @since 2.5
13   * @author T.TSUCHIE
14   *
15   */
16  public class SuperCsvFixedSizeException extends SuperCsvException {
17  
18      /**
19       * メッセージコード。
20       */
21      private String messageCode;
22      
23      /**
24       * メッセージ変数。
25       */
26      private Map<String, Object> messageVariables = new HashMap<>();    
27      
28      private SuperCsvFixedSizeException(final String msg, final CsvContext context) {
29          super(msg, context);
30      }
31      
32      /**
33       * メッセージコードを取得する。
34       * @return メッセージコード。
35       */
36      public String getMessageCode() {
37          return messageCode;
38      }
39      
40      /**
41       * 検証用のメッセージ変数を取得する。
42       * @return 検証用のメッセージ変数
43       */
44      public Map<String, Object> getMessageVariables() {
45          return messageVariables;
46      }
47      
48      /**
49       * {@link SuperCsvFixedSizeException} のインスタンスを組み立てるビルダ。
50       *
51       *
52       */
53      public static class Builder {
54          
55          private final String messageCode;
56          
57          private final CsvContext context;
58          
59          /** 例外用のメッセージ */
60          private String message;
61          
62          private Map<String, Object> messageVariables = new HashMap<>();
63          
64          /**
65           * ビルダクラスのコンストラクタ。
66           * @param messageCode メッセージコード。
67           * @param context CSVのコンテキスト情報。
68           */
69          public Builder(String messageCode, CsvContext context) {
70              this.messageCode = messageCode;
71              this.context = context;
72          }
73          
74          /**
75           * 例外用のメッセージを設定する。
76           * @param message 例外用のメッセージ。
77           * @return ビルダ自身のインスタンス。
78           */
79          public Builder message(String message) {
80              this.message = message;
81              return this;
82          }
83          
84          /**
85           * 例外用のメッセージをフォーマットして設定する。
86           * 
87           * @see String#format(String, Object...)
88           * @param format フォーマット。
89           * @param args 書式の引数。
90           * @return ビルダ自身のインスタンス。
91           */
92          public Builder messageFormat(final String format, final Object... args) {
93              return message(String.format(format, args));
94          }
95          
96          /**
97           * 検証エラー用メッセージの引数を追加する。
98           * @param key キー.
99           * @param value 値
100          * @return ビルダ自身のインスタンス。
101          */
102         public Builder messageVariables(String key, Object value) {
103             this.messageVariables.put(key, value);
104             return this;
105         }
106         
107         /**
108          * 値が存在する場合に検証エラー用メッセージの引数を追加する。
109          * @param arguments メッセージ変数のマップ。
110          * @return ビルダ自身のインスタンス。
111          */
112         public Builder messageVariables(Map<String, Object> arguments) {
113             this.messageVariables.putAll(arguments);
114             return this;
115         }
116         
117         /**
118          * {@link SuperCsvFixedSizeException}のインスタンスを作成する。
119          */
120         public SuperCsvFixedSizeException build() {
121             SuperCsvFixedSizeExceptionxedSizeException.html#SuperCsvFixedSizeException">SuperCsvFixedSizeException exception = new SuperCsvFixedSizeException(message != null ? message : "", context);
122             exception.messageCode = messageCode;
123             exception.messageVariables.putAll(messageVariables);
124             return exception;
125         }
126         
127     }
128 
129 }