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 zcmeHLe@v9;9sj=PdvJ(94n>Dj^*G1xAEn}2R;OIs!F1Es39BxpMK})6DTjsAU{m$l z>cSjdXzhSYOgxMgHkaYjq;*R>@SlY&x3y`ob6aevSr)e}(RN7ehP?ZHp7)LeDh#u1 zNxMFGpZ9s5?~mvEeZJ3+_j%rT-cB0o`q}aiWJ=l~b7ag&khlqS4P`<lyNCq^*2fIP zFo_~4ex5!>5x5Os6C-1&Bewz^^LW4pBmi>(jxq6h`fNpD8^-oONfykQXhgUlIBa~1 z^sA?onVI?AcX;sq1HEBw4yyeNP1<&8kVe@fHOL!~-)&kX7LD^Z>cedH*UUF1tx_)g zr5?X(_;FA+iBIa3Po(%|H_E;l8qI=z?t$zReV9RXob@G?u0?8A`6?{9l@A_R^53OD z#jqdk`)uuh8Ma3w_USuEjQ-EG{<%lY0~odi0EZ8+07(KC0gHiTU<t4k_yUjuECZGU zslYwJ3ScF$3UB~vfD>2^d=W?oGJs4V3&;j?fLtIC$Oj65dx1jWK41+{1gr(PN8OM7 z0iZZie-QaP;46{(hDbg!ZvU_41RF*%&MN6!!|`^^gg8us50IbNFRFQQ6|t(6eH`m= zRPSv#SnYF^`gYe>`#c96|IPHU@}XMe++2^RRZfCp$9y6Ms~*qA>e;Jg-ZUk_*(xD9 z|J1Fu9DSZohBcRxdr>`|cxsrze7>P{{-EghVa5(X-Z;|6C4m$#k9!(xt9{ibO9Sgo zTKy!;GQHNE>9wY{6@rC3xUo`qAPQJV&a%b==jy!Gs|%~L*Hvc4s+HL*^>n<w9aChU z*ygEya;jhkI*7#=(=I5S+8!uuG8YE{EXk>opJ+8Az8>opv9B^6%W*_K9Vb*~DN<$j zx^a>---*6dWx1+guK<f4%f2dWqHd03qFRn)l13@E2G>-RW`D*_MAVg&lMI)X#7y6h zeFi(qxanvc<JP0<%7K{XklOo1ZW@UFc<OhM&grD+!%@b}bk4Cm$xlaTt9O$BEYmg4 z@$qEF(~7ZEakv#_MCsYn(DSCD=S)LSxFem`ls~SBT|LKf!lH{kFvnn?6o^y#qJXaQ z#esO0OF&ef9IzTM%T@KZ!otT9;)*R!R=vTu>7b1M-6|j1j*6W7tF+NTE#J6p()RR& zI9$Cd5(r3te?PK-xPLq*SMt}0akEt(y}Dg?B^ff-T_)cx-!7-$YWuf*2^;tmVfYc0 zAnHaiEa4#Xa8Qcs3@HkSL5H725U3NWs|!kddplmjby5@r0WaesAgBOZ5p+SQv@cNS z46~Q)%uclfAH%L)!2<?v8WpAG75U{GOG_(SaURj|yQtX!kzKbnc@J-^_joOdB(8~3 zIjT-BI?9Qn<3*(!sVcA7w&~HYX*jjS$pcnXVGrypiG!Y|$sC@76vx*vnPD8Un~W_U zucKyfwbzm1XligY_$G@zC5BjZoBTG8=OlMWYrI$hZTRN=G=Kbc?QhQ-eJz2ra-*g@ zM4%iheda(%^Zo-Joha+Ox<mAlXQbhI?vCPs(dRg1^pSS<=`QUC+Ua@mtfYYUNK==F za)@m^4;y{tY4CsND}_33(zd*sp>J5=?g)IlJ9OJMl8RTS{dt+6mI8VI&rh|JPhFn- zn7eV>W#YN)pS|E;O4n_c4&4iT|9JiT&i7Z1q}KlOjLwKB)^FBWru+r)_01j;)<fxf zr}8<VSD@bY&`2ufKkVqz5Edbg^4-gh$uRnN{D-aj0P1XyWzyJa|0^D$E@{^y@)P;J z;3?yfWq<acj<px1gQe1iBljebb^?yD{f&@6di6<Fj>!hluS{(yK2zHPK3DB#ucW;L zy-w)7y$>f|6+e+3M~uD~j+^lt1fTsXhAc8+{|BId?VQP1F@cdQxu>x>kalLO_(kJS zlDaNIFRuTL&a-nC+Rym<Lt1o7-$Hv&pdPxuMkkHa+m6Gr3vwgy&A`gwxi=dB6wpNi zI>)#9#&P{|uqfBkd0B>nd0H{}j5p3Kea-Ey`o>6|<v*d!vwd`YNb`cW=Q;ETiN1EC z-orY4j@B7}>QbKiOn>=R)k`5)Vp<RA+iFg=Q<n4T0_9MT>YLJxznLzB@4L4`qdfIV zT|W9fHD13!`?tU!?D@6qK%Y3CjE4pBW|_1UU}OrP@wfF`tto&0fwLI=UiTs83qq&j z$#LNwhW>SezoORUv(088I$vn3<=ti4&g5k67|PUV;;uy5mY*1X{8nO~sqK@_)QJ}E z=VoGG?YK-00`sv{xszC=7I!L^lklWpHW~fVhwpBw*;-Pi=sAj>tDes*N<e*~G22YX zoW%`Jdk&n7I&E<_y`ZFzs%Mut(Ymg2Pv!Kw++yx7B10u+8$%_D_1}W*TsfrfdLl0` zS%?{~t2(v*xHMLWmzpH<9tg`8bKL2<d6%?V7%i4{GfbLcA&r$7?X87}EsU7**8iI8 zw))njsoSN9S+k%<ElM(9B3khYB}tDKqBT>JJ0K${@;k)kS>(w$iEgkglGnLN#l=S? z4cL-oK)pv?ilT}u*ceBE9kbx4X+gG^cpWh?-yx>2kw#QDW}rWFsWUl|GIZ?JM;|}t zwV!**Cb^lf{k{;i3jn{Zk?#UHY8wH1umj*c^aGe0(h2aseFj(zoCnxHu7BR4sZ*O@ z)6|6RmvxT%)JqyjipTfLmfh~ghNgx(zhg_ad$-Tu(ByTLHoHB0!E*tDlWPM#yTZ6H ziS&Il_N@lhY12&ow_N(orIQ7z_7ffGf8NJGW>fzbUf+TLI1=_M6`eya0~@`v5!8 z46xq;U@6c7Fdl6H<I@dHjfcnYeFkJTD=4Lo6{t^_uY@7`LVoP*A@e|H(+n$F+Z!79 zG<iK9f0JsN8fMb)#es8%-wzzzw2=DMQ_ARbEaocGj&e4lzETvIZF-oiM$roty`b3C y{2x9wc?92|>JjtD@D1)ecWs$B@rmC~X4AlW2vy8RaF#N6Yk!u_&RXo#Z2w=5*o-9r literal 0 HcmV?d00001 -- GitLab