r2622 - in trunk/src: main/java/org/nuiton/csv main/java/org/nuiton/csv/ext test/java/org/nuiton/csv
Author: bleny Date: 2014-07-30 16:23:40 +0200 (Wed, 30 Jul 2014) New Revision: 2622 Url: http://forge.nuiton.org/projects/nuiton-csv/repository/revisions/2622 Log: fixes #3372 duplicate fix of #3144 to Import2 (thanks copy-pasting...) Modified: trunk/src/main/java/org/nuiton/csv/Import.java trunk/src/main/java/org/nuiton/csv/Import2.java trunk/src/main/java/org/nuiton/csv/ext/CsvReaders.java trunk/src/test/java/org/nuiton/csv/Utf8WithBomTest.java Modified: trunk/src/main/java/org/nuiton/csv/Import.java =================================================================== --- trunk/src/main/java/org/nuiton/csv/Import.java 2014-07-30 14:16:32 UTC (rev 2621) +++ trunk/src/main/java/org/nuiton/csv/Import.java 2014-07-30 14:23:40 UTC (rev 2622) @@ -26,6 +26,7 @@ import com.csvreader.CsvReader; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; +import org.nuiton.csv.ext.CsvReaders; import org.nuiton.util.StringUtil; import java.io.Closeable; @@ -64,13 +65,6 @@ /** Logger. */ private static final Log log = LogFactory.getLog(Import.class); - /** - * BOM is a character you can find in the beginning of a UTF-8 encoded file that should not be interpreted. - * - * See http://en.wikipedia.org/wiki/Byte_order_mark - */ - protected static final char BOM_CHARACTER = '\uFEFF'; - /** Csv import model. */ protected ImportModel<E> model; @@ -339,7 +333,7 @@ try { String[] result = reader.getHeaders(); if (result.length > 0) { - result[0] = removeBomCharacter(result[0]); + result[0] = CsvReaders.removeBomCharacter(result[0]); } return result; } catch (IOException e) { @@ -348,10 +342,6 @@ } } - protected String removeBomCharacter(String s) { - return s.replaceFirst(BOM_CHARACTER + "?", ""); - } - protected List<ImportableColumn<E, Object>> getNonIgnoredHeaders() { List<ImportableColumn<E, Object>> nonIgnoredHeaders = new ArrayList<ImportableColumn<E, Object>>(); Modified: trunk/src/main/java/org/nuiton/csv/Import2.java =================================================================== --- trunk/src/main/java/org/nuiton/csv/Import2.java 2014-07-30 14:16:32 UTC (rev 2621) +++ trunk/src/main/java/org/nuiton/csv/Import2.java 2014-07-30 14:23:40 UTC (rev 2622) @@ -27,6 +27,7 @@ import com.csvreader.CsvReader; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; +import org.nuiton.csv.ext.CsvReaders; import org.nuiton.util.StringUtil; import java.io.Closeable; @@ -273,6 +274,9 @@ try { String[] result = reader.getHeaders(); + if (result.length > 0) { + result[0] = CsvReaders.removeBomCharacter(result[0]); + } return result; } catch (IOException e) { throw new ImportRuntimeException( Modified: trunk/src/main/java/org/nuiton/csv/ext/CsvReaders.java =================================================================== --- trunk/src/main/java/org/nuiton/csv/ext/CsvReaders.java 2014-07-30 14:16:32 UTC (rev 2621) +++ trunk/src/main/java/org/nuiton/csv/ext/CsvReaders.java 2014-07-30 14:23:40 UTC (rev 2622) @@ -39,6 +39,13 @@ */ public class CsvReaders { + /** + * BOM is a character you can find in the beginning of a UTF-8 encoded file that should not be interpreted. + * + * See http://en.wikipedia.org/wiki/Byte_order_mark + */ + protected static final char BOM_CHARACTER = '\uFEFF'; + public static String[] getHeader(File file, char charSeprator) { try { @@ -54,4 +61,9 @@ throw new ImportRuntimeException("Could not obtain header of file " + file, e); } } + + public static String removeBomCharacter(String s) { + return s.replaceFirst(BOM_CHARACTER + "?", ""); + } + } Modified: trunk/src/test/java/org/nuiton/csv/Utf8WithBomTest.java =================================================================== --- trunk/src/test/java/org/nuiton/csv/Utf8WithBomTest.java 2014-07-30 14:16:32 UTC (rev 2621) +++ trunk/src/test/java/org/nuiton/csv/Utf8WithBomTest.java 2014-07-30 14:23:40 UTC (rev 2622) @@ -82,4 +82,22 @@ } } + + @Test + public void testImport2() { + + InputStream csv = getClass().getResourceAsStream("/csv-file-encoded-in-UTF-8-with-BOM.csv"); + + Import2<ObjectUtils.Null> csvImport = Import2.newImport(importModel, csv); + + try { + csvImport.prepareAndValidate(); + } catch (ImportRuntimeException e) { + if (log.isDebugEnabled()) { + log.debug("exception caught", e); + } + Assert.fail("no exception should have been raised"); + } + + } }
participants (1)
-
bleny@users.nuiton.org