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++;
        }
    }
    
    
}