SuperCsvBindingException.java
package com.github.mygreen.supercsv.exception;
import java.io.PrintStream;
import java.io.PrintWriter;
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
import org.supercsv.exception.SuperCsvException;
import org.supercsv.util.CsvContext;
import com.github.mygreen.supercsv.validation.CsvBindingErrors;
/**
* CellProcessorとは別に、値を検証した結果、エラーが存在する場合にスローされる例外。
*
* @since 2.0
* @author T.TSUCHIE
*
*/
public class SuperCsvBindingException extends SuperCsvException {
/** serialVersionUID */
private static final long serialVersionUID = -7961092348053869573L;
private final CsvBindingErrors bingingErrors;
/**
* CellProcessor内で発生したエラーがある場合
*/
private final List<SuperCsvException> processingErrors = new ArrayList<>();
public SuperCsvBindingException(final String msg, final CsvContext context, final CsvBindingErrors bingingErrors) {
super(msg, context);
this.bingingErrors = bingingErrors;
}
/**
* エラー情報を取得する。
* @return
*/
public CsvBindingErrors getBindingErrors() {
return bingingErrors;
}
/**
* CellProcessor内で発生したエラー情報を追加する。
* @param errors
*/
public void addAllProcessingErrors(final Collection<SuperCsvException> errors) {
this.processingErrors.addAll(errors);
}
/**
* CellProcessor内で発生したエラー情報を取得する。
* @return
*/
public List<SuperCsvException> getProcessingErrors() {
return processingErrors;
}
@Override
public void printStackTrace(final PrintStream s) {
super.printStackTrace(s);
int count = 1;
for(SuperCsvException e : processingErrors) {
s.printf("[ProcessingError-%d] : ", count);
e.printStackTrace(s);
count++;
}
}
@Override
public void printStackTrace(final PrintWriter s) {
super.printStackTrace(s);
int count = 1;
for(SuperCsvException e : processingErrors) {
s.printf("[ProcessingError-%d] : ", count);
e.printStackTrace(s);
count++;
}
}
}