View Javadoc
1   package com.github.mygreen.supercsv.exception;
2   
3   import java.io.PrintStream;
4   import java.io.PrintWriter;
5   import java.util.ArrayList;
6   import java.util.Collection;
7   import java.util.List;
8   
9   import org.supercsv.exception.SuperCsvException;
10  import org.supercsv.util.CsvContext;
11  
12  import com.github.mygreen.supercsv.validation.CsvBindingErrors;
13  
14  /**
15   * CellProcessorとは別に、値を検証した結果、エラーが存在する場合にスローされる例外。
16   * 
17   * @since 2.0
18   * @author T.TSUCHIE
19   *
20   */
21  public class SuperCsvBindingException extends SuperCsvException {
22  
23      /** serialVersionUID */
24      private static final long serialVersionUID = -7961092348053869573L;
25      
26      private final CsvBindingErrors bingingErrors;
27      
28      /**
29       * CellProcessor内で発生したエラーがある場合
30       */
31      private final List<SuperCsvException> processingErrors = new ArrayList<>();
32      
33      public SuperCsvBindingException(final String msg, final CsvContext context, final CsvBindingErrors bingingErrors) {
34          super(msg, context);
35          this.bingingErrors = bingingErrors;
36      }
37      
38      /**
39       * エラー情報を取得する。
40       * @return
41       */
42      public CsvBindingErrors getBindingErrors() {
43          return bingingErrors;
44      }
45      
46      /**
47       * CellProcessor内で発生したエラー情報を追加する。
48       * @param errors
49       */
50      public void addAllProcessingErrors(final Collection<SuperCsvException> errors) {
51          this.processingErrors.addAll(errors);
52      }
53      
54      /**
55       * CellProcessor内で発生したエラー情報を取得する。
56       * @return
57       */
58      public List<SuperCsvException> getProcessingErrors() {
59          return processingErrors;
60      }
61      
62      @Override
63      public void printStackTrace(final PrintStream s) {
64          
65          super.printStackTrace(s);
66          
67          int count = 1;
68          for(SuperCsvException e : processingErrors) {
69              s.printf("[ProcessingError-%d] : ", count);
70              e.printStackTrace(s);
71              count++;
72          }
73          
74      }
75      
76      @Override
77      public void printStackTrace(final PrintWriter s) {
78          
79          super.printStackTrace(s);
80          
81          int count = 1;
82          for(SuperCsvException e : processingErrors) {
83              s.printf("[ProcessingError-%d] : ", count);
84              e.printStackTrace(s);
85              count++;
86          }
87      }
88      
89      
90  }