All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.supercsv.ext.exception.SuperCsvRowException Maven / Gradle / Ivy

The newest version!
/*
 * SuperCsvRowsException.java
 * created in 2013/03/09
 *
 * (C) Copyright 2003-2013 GreenDay Project. All rights reserved.
 */
package org.supercsv.ext.exception;

import java.util.ArrayList;
import java.util.List;

import org.supercsv.exception.SuperCSVException;
import org.supercsv.util.CSVContext;


/**
 *
 *
 * @author T.TSUCHIE
 *
 */
public class SuperCsvRowException extends SuperCSVException {
    
    /** serialVersionUID */
    private static final long serialVersionUID = 1L;
    
    protected final List columnErrors = new ArrayList();
    
    public SuperCsvRowException(final String msg, final CSVContext context) {
        super(msg, context);
    }
    
    public void addError(final SuperCSVException error) {
        if(error.getOffendingProcessor() == null) {
            this.columnErrors.add(error);
        } else {
            addCellProcessorError(error);
        }
    }
    
    public void addCellProcessorError(final SuperCSVException error) {
        SuperCSVException cloned = new SuperCSVException(error.getMessage(),
                cloneCsvContext(error.getCsvContext()),
                error.getOffendingProcessor());
        
        this.columnErrors.add(cloned);
    }
    
    private CSVContext cloneCsvContext(final CSVContext context) {
        
        CSVContext cloned = new CSVContext(
                context.lineNumber,
                context.columnNumber);
        
        // shallow copy
        List destRowSource = new ArrayList(context.lineSource.size());
        for(Object obj : context.lineSource) {
            destRowSource.add(obj);
        }
        cloned.lineSource = destRowSource;
        
        return cloned;
    }
    
    public void addAllErrors(final List errors) {
        for(SuperCSVException error : errors) {
            addError(error);
        }
    }
    
    public List getColumnErrors() {
        return columnErrors;
    }
    
    public boolean isEmptyColumnErrors() {
        return getColumnErrors().isEmpty();
    }
    
    public boolean isNotEmptyColumnErrors() {
        return !isEmptyColumnErrors();
    }
    
}