From 80b1ca1a058cb9fc8dc346cc2b30e1759df20114 Mon Sep 17 00:00:00 2001
From: kaloyane <kaloyane>
Date: Wed, 30 Nov 2011 16:08:12 +0000
Subject: [PATCH] [LMS-2662] fixed

SVN: 23840
---
 .../cisd/common/parser/ExcelRowTokenizer.java |   3 +-
 .../common/parser/ExcelRowTokenizerTest.java  |  68 ++++++++++++++++++
 .../parser/excel-row-tokenizer-test.xls       | Bin 0 -> 6656 bytes
 3 files changed, 70 insertions(+), 1 deletion(-)
 create mode 100644 common/sourceTest/java/ch/systemsx/cisd/common/parser/ExcelRowTokenizerTest.java
 create mode 100644 common/sourceTest/java/ch/systemsx/cisd/common/parser/excel-row-tokenizer-test.xls

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 9d9ceab0ca1..4ba1ff38fb2 100644
--- a/common/source/java/ch/systemsx/cisd/common/parser/ExcelRowTokenizer.java
+++ b/common/source/java/ch/systemsx/cisd/common/parser/ExcelRowTokenizer.java
@@ -19,6 +19,7 @@ package ch.systemsx.cisd.common.parser;
 import org.apache.poi.ss.usermodel.Cell;
 import org.apache.poi.ss.usermodel.Row;
 import org.apache.poi.ss.util.CellReference;
+import org.apache.poi.ss.util.NumberToTextConverter;
 
 import ch.systemsx.cisd.common.shared.basic.utils.StringUtils;
 
@@ -86,7 +87,7 @@ public class ExcelRowTokenizer implements ILineTokenizer<Row>
             case Cell.CELL_TYPE_BOOLEAN:
                 return Boolean.toString(cell.getBooleanCellValue());
             case Cell.CELL_TYPE_NUMERIC:
-                return Double.toString(cell.getNumericCellValue());
+                return NumberToTextConverter.toText(cell.getNumericCellValue());
             case Cell.CELL_TYPE_STRING:
                 return cell.getStringCellValue();
             case Cell.CELL_TYPE_FORMULA:
diff --git a/common/sourceTest/java/ch/systemsx/cisd/common/parser/ExcelRowTokenizerTest.java b/common/sourceTest/java/ch/systemsx/cisd/common/parser/ExcelRowTokenizerTest.java
new file mode 100644
index 00000000000..e43211d7a23
--- /dev/null
+++ b/common/sourceTest/java/ch/systemsx/cisd/common/parser/ExcelRowTokenizerTest.java
@@ -0,0 +1,68 @@
+/*
+ * Copyright 2011 ETH Zuerich, CISD
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package ch.systemsx.cisd.common.parser;
+
+import java.io.InputStream;
+import java.util.Arrays;
+import java.util.List;
+
+import org.apache.commons.io.IOUtils;
+import org.apache.poi.hssf.usermodel.HSSFSheet;
+import org.apache.poi.hssf.usermodel.HSSFWorkbook;
+import org.apache.poi.poifs.filesystem.POIFSFileSystem;
+import org.apache.poi.ss.usermodel.Row;
+import org.testng.AssertJUnit;
+import org.testng.annotations.Test;
+
+/**
+ * @author Kaloyan Enimanev
+ */
+public class ExcelRowTokenizerTest extends AssertJUnit
+{
+    @Test
+    public void testIntegerValuesParsedCorrectly() throws Exception
+    {
+        List<Row> row = getRows();
+
+        String[] line1 = ExcelRowTokenizer.tokenizeRow(row.get(0));
+        assertEquals("4980", line1[0]);
+        assertEquals("TEST_STRING", line1[1]);
+        assertEquals("yes", line1[2]);
+
+        String[] line2 = ExcelRowTokenizer.tokenizeRow(row.get(1));
+        assertEquals("12.3", line2[0]);
+        assertEquals("Meh blah & so on", line2[1]);
+        assertEquals("no", line2[2]);
+
+    }
+
+    private List<Row> getRows() throws Exception
+    {
+        final InputStream stream = getClass().getResourceAsStream("excel-row-tokenizer-test.xls");
+        try
+        {
+            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));
+        } 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
new file mode 100644
index 0000000000000000000000000000000000000000..9f9856b9cd84cd5aae9400a7b414f0e5e8fa01dd
GIT binary patch
literal 6656
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

literal 0
HcmV?d00001

-- 
GitLab