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

org.supercsv.ext.localization.CsvExceptionConveter Maven / Gradle / Ivy

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

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import org.supercsv.cellprocessor.ift.CellProcessor;
import org.supercsv.exception.SuperCSVException;
import org.supercsv.ext.cellprocessor.ift.ValidationCellProcessor;
import org.supercsv.ext.exception.SuperCsvNoMatchColumnSizeException;
import org.supercsv.ext.exception.SuperCsvNoMatchHeaderException;
import org.supercsv.ext.exception.SuperCsvRowException;
import org.supercsv.util.CSVContext;


/**
 * {@link SuperCsvException} convert to Message Object.
 * 

Message object build from {@link CsvContext} and {@link CellProcessor}. * * * * @author T.TSUCHIE * */ public class CsvExceptionConveter { public List convertCsvError(final SuperCSVException exception) { return convertCsvError(exception, null); } public List convertCsvError(final SuperCSVException exception, final String[] headers) { if(exception == null) { throw new NullPointerException("exception should not be null."); } final List errors = new ArrayList(); if(exception instanceof SuperCsvNoMatchColumnSizeException) { errors.addAll(convertCsvNoMatchColumnSizeError((SuperCsvNoMatchColumnSizeException) exception, headers)); } else if(exception instanceof SuperCsvNoMatchHeaderException) { errors.addAll(convertCsvError((SuperCsvNoMatchHeaderException) exception, headers)); } else if(exception instanceof SuperCsvRowException) { errors.addAll(convertCsvRowError((SuperCsvRowException) exception, headers)); } else if(exception.getOffendingProcessor() != null) { errors.addAll(convertCsvCellProcessorError(exception, headers)); } else { CsvMessage error = new CsvMessage("csvError"); error.addAll(createCsvContextVariable(exception.getCsvContext(), headers)); errors.add(error); } return errors; } public List convertCsvRowError(final SuperCsvRowException exception, final String[] headers) { if(exception == null) { throw new NullPointerException("exception should not be null."); } List messages = new ArrayList(); for(SuperCSVException e : exception.getColumnErrors()) { messages.addAll(convertCsvError(e, headers)); } return messages; } public List convertCsvCellProcessorError(final SuperCSVException exception, final String[] headers) { if(exception == null) { throw new NullPointerException("exception should not be null."); } CellProcessor cellProcessor = exception.getOffendingProcessor(); final CsvMessage message; if(cellProcessor instanceof ValidationCellProcessor) { ValidationCellProcessor p = (ValidationCellProcessor) cellProcessor; message = new CsvMessage(p.getMessageCode()); message.addAll(p.getMessageVariable()); final Object source = exception.getCsvContext().lineSource.get( exception.getCsvContext().columnNumber); message.add("value", p.formatValue(source)); } else { message = new CsvMessage(cellProcessor.getClass().getCanonicalName() + ".violated"); final Object source = exception.getCsvContext().lineSource.get( exception.getCsvContext().columnNumber); if(source != null) { message.add("value", source.toString()); } else { message.add("value", ""); } } message.addAll(createCsvContextVariable(exception.getCsvContext(), headers)); List errors = new ArrayList(); errors.add(message); return errors; } public List convertCsvNoMatchColumnSizeError(final SuperCsvNoMatchColumnSizeException exception, final String[] headers) { if(exception == null) { throw new NullPointerException("exception should not be null."); } final CsvMessage message = new CsvMessage("csvError.noMatchColumnSize"); message.add("lineNumber", String.valueOf(exception.getCsvContext().lineNumber)); message.add("rowNumber", String.valueOf(exception.getCsvContext().lineNumber)); message.add("columnNumber", String.valueOf(exception.getCsvContext().columnNumber + 1)); message.add("value", String.valueOf(exception.getActualColumnSize())) .add("expectedSize", String.valueOf(exception.getEpxpectedColumnSize())); final int colIndex = exception.getCsvContext().columnNumber; if(headers != null && headers.length >= colIndex) { message.add("columnLabel", headers[colIndex]); } List errors = new ArrayList(); errors.add(message); return errors; } public List convertCsvError(final SuperCsvNoMatchHeaderException exception, final String[] headers) { if(exception == null) { throw new NullPointerException("exception should not be null."); } final CsvMessage message = new CsvMessage("csvError.notMatchHeader"); message.add("lineNumber", String.valueOf(exception.getCsvContext().lineNumber)); message.add("rowNumber", String.valueOf(exception.getCsvContext().lineNumber)); message.add("columnNumber", String.valueOf(exception.getCsvContext().columnNumber + 1)); message.add("value", exception.getActualHeadersWithJoin(",")) .add("expectedValue", exception.getExpectedHeadersWithJoin(",")); final int colIndex = exception.getCsvContext().columnNumber; if(headers != null && headers.length >= colIndex) { message.add("columnLabel", headers[colIndex]); } final List errors = new ArrayList(); errors.add(message); return errors; } public Map createCsvContextVariable(final CSVContext context, final String[] headers) { if(context == null) { throw new NullPointerException("context should not be null."); } final Map vars = new HashMap(); vars.put("lineNumber", context.lineNumber); vars.put("rowNumber", context.lineNumber); vars.put("columnNumber", context.columnNumber+1); final int colIndex = context.columnNumber; if(headers != null && headers.length >= colIndex) { vars.put("columnLabel", headers[colIndex]); } // Object source = context.getRowSource().get(context.getColumnNumber()-1); // if(source != null) { // vars.put("value", source.toString()); // } else { // vars.put("value", ""); // } return vars; } }





© 2015 - 2024 Weber Informatics LLC | Privacy Policy