diff --git a/common/source/java/ch/systemsx/cisd/common/parser/ExcelFileLoader.java b/common/source/java/ch/systemsx/cisd/common/parser/ExcelFileLoader.java index e0f22f625a5961e23725e9350075e472fa2ba0e6..967a4caf8dade2f1817ac75b408e92440efe0d05 100644 --- a/common/source/java/ch/systemsx/cisd/common/parser/ExcelFileLoader.java +++ b/common/source/java/ch/systemsx/cisd/common/parser/ExcelFileLoader.java @@ -17,6 +17,7 @@ package ch.systemsx.cisd.common.parser; import java.util.ArrayList; +import java.util.Arrays; import java.util.HashMap; import java.util.HashSet; import java.util.Iterator; @@ -302,8 +303,8 @@ public class ExcelFileLoader<T> { if (unique.add(token.toLowerCase()) == false) { - throw new IllegalArgumentException(String.format("Duplicated column name '%s'.", - token)); + throw new IllegalArgumentException(String.format("Duplicated column name '%s': %s" , + token, Arrays.asList(tokens))); } } } diff --git a/common/source/java/ch/systemsx/cisd/common/parser/ExcelRowTokenizer.java b/common/source/java/ch/systemsx/cisd/common/parser/ExcelRowTokenizer.java index 4ba1ff38fb24f4e0d3a0ee0fdcc7a27b9f8aff58..4f135349e20a5819d08c3fe90d3cea8b52c915ca 100644 --- a/common/source/java/ch/systemsx/cisd/common/parser/ExcelRowTokenizer.java +++ b/common/source/java/ch/systemsx/cisd/common/parser/ExcelRowTokenizer.java @@ -40,6 +40,10 @@ public class ExcelRowTokenizer implements ILineTokenizer<Row> public static String[] tokenizeRow(Row row) { String[] line = new String[row.getLastCellNum()]; + for (int i = 0; i < line.length; i++) + { + line[i] = ""; + } for (Cell cell : row) { String value = extractCellValue(cell).trim(); diff --git a/common/sourceTest/java/ch/systemsx/cisd/common/parser/ExcelRowTokenizerTest.java b/common/sourceTest/java/ch/systemsx/cisd/common/parser/ExcelRowTokenizerTest.java index 77f7e04ef9ad71043ba96b26c629e0c6fee9f098..94ef6469c2f9a2eea531d02eefecbe175e00626e 100644 --- a/common/sourceTest/java/ch/systemsx/cisd/common/parser/ExcelRowTokenizerTest.java +++ b/common/sourceTest/java/ch/systemsx/cisd/common/parser/ExcelRowTokenizerTest.java @@ -52,6 +52,14 @@ public class ExcelRowTokenizerTest extends AssertJUnit assertEquals("Meh blah & so on", line2[1]); assertEquals("no", line2[2]); + String[] line3 = ExcelRowTokenizer.tokenizeRow(row.get(2)); + assertEquals("42", line3[0]); + assertEquals("The question", line3[1]); + assertEquals("", line3[2]); + assertEquals("", line3[3]); + assertEquals("", line3[4]); + assertEquals("hello", line3[5]); + assertEquals(6, line3.length); } private List<Row> getRows() throws Exception @@ -65,7 +73,7 @@ public class ExcelRowTokenizerTest extends AssertJUnit POIFSFileSystem poifsFileSystem = new POIFSFileSystem(stream); HSSFWorkbook workbook = new HSSFWorkbook(poifsFileSystem); final HSSFSheet sheet = workbook.getSheetAt(0); - return Arrays.<Row> asList(sheet.getRow(0), sheet.getRow(1)); + return Arrays.<Row> asList(sheet.getRow(0), sheet.getRow(1), sheet.getRow(2)); } finally { IOUtils.closeQuietly(stream); diff --git a/common/sourceTest/java/ch/systemsx/cisd/common/parser/excel-row-tokenizer-test.xls b/common/sourceTest/java/ch/systemsx/cisd/common/parser/excel-row-tokenizer-test.xls index 9f9856b9cd84cd5aae9400a7b414f0e5e8fa01dd..196ec626870ea3e8213c0a55e6935df6929f1dd1 100644 Binary files a/common/sourceTest/java/ch/systemsx/cisd/common/parser/excel-row-tokenizer-test.xls and b/common/sourceTest/java/ch/systemsx/cisd/common/parser/excel-row-tokenizer-test.xls differ