From 31a81b20100d668e49eb87d59f01d8d0c33cbd69 Mon Sep 17 00:00:00 2001 From: pkupczyk <pkupczyk> Date: Wed, 3 Apr 2013 09:09:42 +0000 Subject: [PATCH] CISD Sprints SP-142 / BIS-98: Sample Batch Registration fails when .xls or .xlsx are used and comments (marked with a #) are present in the file - cover the excel file loader with automated tests SVN: 28730 --- .../common/parser/ExcelFileLoaderTest.java | 246 ++++++++++++++++++ .../common/parser/ExcelRowTokenizerTest.java | 25 +- .../cisd/common/parser/ExcelTestUtil.java | 55 ++++ ...ne-after-comments-with-default-section.xls | Bin 0 -> 30208 bytes ...olumn-headers-in-a-line-after-comments.xls | Bin 0 -> 30208 bytes ...in-the-first-line-with-default-section.xls | Bin 0 -> 30208 bytes ...-with-column-headers-in-the-first-line.xls | Bin 0 -> 29696 bytes ...last-comment-line-with-default-section.xls | Bin 0 -> 30208 bytes ...olumn-headers-in-the-last-comment-line.xls | Bin 0 -> 30208 bytes 9 files changed, 304 insertions(+), 22 deletions(-) create mode 100644 common/sourceTest/java/ch/systemsx/cisd/common/parser/ExcelFileLoaderTest.java create mode 100644 common/sourceTest/java/ch/systemsx/cisd/common/parser/ExcelTestUtil.java create mode 100644 common/sourceTest/java/ch/systemsx/cisd/common/parser/excel-with-column-headers-in-a-line-after-comments-with-default-section.xls create mode 100644 common/sourceTest/java/ch/systemsx/cisd/common/parser/excel-with-column-headers-in-a-line-after-comments.xls create mode 100644 common/sourceTest/java/ch/systemsx/cisd/common/parser/excel-with-column-headers-in-the-first-line-with-default-section.xls create mode 100644 common/sourceTest/java/ch/systemsx/cisd/common/parser/excel-with-column-headers-in-the-first-line.xls create mode 100644 common/sourceTest/java/ch/systemsx/cisd/common/parser/excel-with-column-headers-in-the-last-comment-line-with-default-section.xls create mode 100644 common/sourceTest/java/ch/systemsx/cisd/common/parser/excel-with-column-headers-in-the-last-comment-line.xls diff --git a/common/sourceTest/java/ch/systemsx/cisd/common/parser/ExcelFileLoaderTest.java b/common/sourceTest/java/ch/systemsx/cisd/common/parser/ExcelFileLoaderTest.java new file mode 100644 index 00000000000..810f3ea35bc --- /dev/null +++ b/common/sourceTest/java/ch/systemsx/cisd/common/parser/ExcelFileLoaderTest.java @@ -0,0 +1,246 @@ +/* + * Copyright 2013 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.util.Arrays; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +import org.apache.commons.lang.builder.EqualsBuilder; +import org.apache.commons.lang.builder.ToStringBuilder; +import org.apache.poi.ss.usermodel.Sheet; +import org.testng.Assert; +import org.testng.annotations.Test; + +/** + * @author pkupczyk + */ +public class ExcelFileLoaderTest +{ + + private static final TestBean ROW_1 = new TestBean("row1column1", "row1column2", + "column3default"); + + private static final TestBean ROW_1_WITH_COLLUMN_2_DEFAULT = new TestBean("row1column1", + "column2default", "column3default"); + + private static final TestBean ROW_2 = new TestBean("row2column1", "row2column2", + "column3default"); + + private static final TestBean ROW_2_WITH_COLUMN_2_DEFAULT = new TestBean("row2column1", + "column2default", "column3default"); + + /** + * Tested file format: + * + * <pre> + * column1 column2 + * value1 value2 + * </pre> + */ + @Test + public void testFormatWithColumnHeadersInTheFirstLine() throws Exception + { + List<TestBean> beans = loadBeans("excel-with-column-headers-in-the-first-line.xls"); + assertBeans(beans, Arrays.asList(ROW_1, ROW_2)); + } + + /** + * Tested file format: + * + * <pre> + * [DEFAULT] + * column2 value2 + * [DEFAULT] + * column1 + * value1 + * </pre> + */ + @Test + public void testFormatWithColumnHeadersInTheFirstLineWithDefaultSection() throws Exception + { + List<TestBean> beans = + loadBeans("excel-with-column-headers-in-the-first-line-with-default-section.xls"); + assertBeans(beans, Arrays.asList(ROW_1_WITH_COLLUMN_2_DEFAULT, ROW_2_WITH_COLUMN_2_DEFAULT)); + } + + /** + * Tested file format: + * + * <pre> + * # 1. line of comment + * # 2. line of comment + * # ... + * column1 column2 + * value1 value2 + * </pre> + */ + @Test(enabled = false) + public void testFormatWithColumnHeadersInALineAfterComments() throws Exception + { + List<TestBean> beans = loadBeans("excel-with-column-headers-in-a-line-after-comments.xls"); + assertBeans(beans, Arrays.asList(ROW_1, ROW_2)); + } + + /** + * Tested file format: + * + * <pre> + * # 1. line of comment + * # 2. line of comment + * # ... + * [DEFAULT] + * column2 value2 + * [DEFAULT] + * column1 + * value1 + * </pre> + */ + @Test(enabled = false) + public void testFormatWithColumnHeadersInALineAfterCommentsWithDefaultSection() + throws Exception + { + List<TestBean> beans = + loadBeans("excel-with-column-headers-in-a-line-after-comments-with-default-section.xls"); + assertBeans(beans, Arrays.asList(ROW_1_WITH_COLLUMN_2_DEFAULT, ROW_2_WITH_COLUMN_2_DEFAULT)); + } + + /** + * Tested file format: + * + * <pre> + * # 1. line of comment + * # 2. line of comment + * # ... + * # + * #column1 column2 + * </pre> + */ + @Test(enabled = false) + public void testFormatWithColumnHeadersInTheLastCommentLine() throws Exception + { + List<TestBean> beans = loadBeans("excel-with-column-headers-in-the-last-comment-line.xls"); + assertBeans(beans, Arrays.asList(ROW_1, ROW_2)); + } + + /** + * Tested file format: + * + * <pre> + * # 1. line of comment + * # 2. line of comment + * # ... + * # + * #column1 + * [DEFAULT] + * column2 value2 + * [DEFAULT] + * value1 + * </pre> + */ + @Test(enabled = false) + public void testFormatWithColumnHeadersInTheLastCommentLineWithDefaultSection() + throws Exception + { + List<TestBean> beans = + loadBeans("excel-with-column-headers-in-the-last-comment-line-with-default-section.xls"); + assertBeans(beans, Arrays.asList(ROW_1_WITH_COLLUMN_2_DEFAULT, ROW_2_WITH_COLUMN_2_DEFAULT)); + } + + private List<TestBean> loadBeans(String fileName) throws Exception + { + Sheet sheet = ExcelTestUtil.getSheet(getClass(), fileName); + ExcelFileLoader<TestBean> loader = new ExcelFileLoader<TestBean>(TestBean.class); + Map<String, String> defaults = new HashMap<String, String>(); + defaults.put("column3", "column3default"); + return loader.load(sheet, sheet.getFirstRowNum(), sheet.getLastRowNum(), + defaults); + } + + private void assertBeans(List<TestBean> actualBeans, List<TestBean> expectedBeans) + { + Assert.assertEquals(actualBeans, expectedBeans); + } + + public static class TestBean + { + + private String col1; + + private String col2; + + private String col3; + + public TestBean() + { + } + + public TestBean(String col1, String col2, String col3) + { + this.col1 = col1; + this.col2 = col2; + this.col3 = col3; + } + + @BeanProperty(label = "column1", optional = true) + public void setCol1(String col1) + { + this.col1 = col1; + } + + public String getCol1() + { + return col1; + } + + @BeanProperty(label = "column2", optional = true) + public void setCol2(String col2) + { + this.col2 = col2; + } + + public String getCol2() + { + return col2; + } + + @BeanProperty(label = "column3", optional = true) + public void setCol3(String col3) + { + this.col3 = col3; + } + + public String getCol3() + { + return col3; + } + + @Override + public boolean equals(Object obj) + { + return EqualsBuilder.reflectionEquals(this, obj); + } + + @Override + public String toString() + { + return ToStringBuilder.reflectionToString(this); + } + } + +} 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 94ef6469c2f..75533fcc4e3 100644 --- a/common/sourceTest/java/ch/systemsx/cisd/common/parser/ExcelRowTokenizerTest.java +++ b/common/sourceTest/java/ch/systemsx/cisd/common/parser/ExcelRowTokenizerTest.java @@ -16,17 +16,11 @@ package ch.systemsx.cisd.common.parser; -import java.io.File; -import java.io.FileInputStream; -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.apache.poi.ss.usermodel.Sheet; import org.testng.AssertJUnit; import org.testng.annotations.Test; @@ -35,7 +29,6 @@ import org.testng.annotations.Test; */ public class ExcelRowTokenizerTest extends AssertJUnit { - private static final String TEST_FOLDER = "../common/sourceTest/java/"; @Test public void testIntegerValuesParsedCorrectly() throws Exception @@ -64,20 +57,8 @@ public class ExcelRowTokenizerTest extends AssertJUnit private List<Row> getRows() throws Exception { - - File excelDir = new File(TEST_FOLDER + getClass().getPackage().getName().replace('.', '/')); - File excelFile = new File(excelDir, "excel-row-tokenizer-test.xls"); - final InputStream stream = new FileInputStream(excelFile); - 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), sheet.getRow(2)); - } finally - { - IOUtils.closeQuietly(stream); - } + Sheet sheet = ExcelTestUtil.getSheet(getClass(), "excel-row-tokenizer-test.xls"); + return Arrays.<Row> asList(sheet.getRow(0), sheet.getRow(1), sheet.getRow(2)); } } diff --git a/common/sourceTest/java/ch/systemsx/cisd/common/parser/ExcelTestUtil.java b/common/sourceTest/java/ch/systemsx/cisd/common/parser/ExcelTestUtil.java new file mode 100644 index 00000000000..f3bf53ae7a1 --- /dev/null +++ b/common/sourceTest/java/ch/systemsx/cisd/common/parser/ExcelTestUtil.java @@ -0,0 +1,55 @@ +/* + * Copyright 2013 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.File; +import java.io.FileInputStream; +import java.io.InputStream; + +import org.apache.commons.io.IOUtils; +import org.apache.poi.hssf.usermodel.HSSFWorkbook; +import org.apache.poi.poifs.filesystem.POIFSFileSystem; +import org.apache.poi.ss.usermodel.Sheet; + +/** + * @author pkupczyk + */ +public class ExcelTestUtil +{ + + private static final String TEST_FOLDER = "../common/sourceTest/java/"; + + public static final Sheet getSheet(Class<?> excelTestClass, String excelFileName) + throws Exception + { + File excelDir = + new File(TEST_FOLDER + + excelTestClass.getPackage().getName().replace('.', '/')); + File excelFile = new File(excelDir, excelFileName); + final InputStream stream = new FileInputStream(excelFile); + try + { + POIFSFileSystem poifsFileSystem = new POIFSFileSystem(stream); + HSSFWorkbook workbook = new HSSFWorkbook(poifsFileSystem); + return workbook.getSheetAt(0); + } finally + { + IOUtils.closeQuietly(stream); + } + } + +} diff --git a/common/sourceTest/java/ch/systemsx/cisd/common/parser/excel-with-column-headers-in-a-line-after-comments-with-default-section.xls b/common/sourceTest/java/ch/systemsx/cisd/common/parser/excel-with-column-headers-in-a-line-after-comments-with-default-section.xls new file mode 100644 index 0000000000000000000000000000000000000000..8a102a76b03ca65cab0820a265cec91aebdd6eb1 GIT binary patch literal 30208 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 literal 0 HcmV?d00001 diff --git a/common/sourceTest/java/ch/systemsx/cisd/common/parser/excel-with-column-headers-in-a-line-after-comments.xls b/common/sourceTest/java/ch/systemsx/cisd/common/parser/excel-with-column-headers-in-a-line-after-comments.xls new file mode 100644 index 0000000000000000000000000000000000000000..0dc1cd17e9ca511f996c44023e7d099c9753e6c6 GIT binary patch literal 30208 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%0Du-8`MJ0PWx}< zc0Yd~wLC3P=Dm6asFD9->07&<fcnqL--b0&GZv@>?&YuMKDk%jw3Ge4VG>8yBcFKD z19~sNzw{7J8z?t7?Vp>cbu~^USO2G1JIp~wzOD+18whJ@d<?Ffb<5Xho}TXBFby^A zv9A<16lowZWs;*bj@Z<qSOr_LVAHp@)zp<<N-|Z|hoY(}U0+jC`tdqbQ(DnL5AvaX zkVP~x30_y=-ZYjg%N1WkSnV}$FRPMOH5+3tFcO*+7}b++9wK0)GaT$oY!|EmZ#wV~ z#u*vmt~OSY49=0NI5IdyI~KWXkKihZ8YipZHzno(g_T(#=DqAawL6Ze52l#wgIUB- zxMM*SlAFh1*IyTW#R9KaV3#u<<og@ECOB-^T@D8uUZIdDENha67fc%RGilfqCJkT6 zFln#_RE_q5d|^cWm1ly$E0kzWe&Q9%LY=95D8-uG42bt|f3G!c;iK;1w>9n$B~fr= zpEcP&<V319?jI)a;bvTD9b8?6*G#YBI}NrH;=hjYF9?2wx}7vkKe$65$2cvBW8{Xr zek6%J?F2AJlnq%R3(tg{wovF=*jDn7<{I^<-i#@4{I5HsB8luS<lo9hpWxrj{=egY zhXp=Db~3V{l8b8alW}q3<b`tg4mOLv;t)Mu-&A-41MCzgH{9a=I4HQCVK@~0V^7&o z@NF~xssZ!XWGJ}Fbs7}h88{aT{IZiMg<=I|EfmZlHn8IX|B?{W2E<2j6UPh0nfweg zqu^hgC*NShJzd}SAPn`vOhRorCai#j&<KmwhKa;k65Nd}AyJj>WkIy#>uvNl^KX|s zLB;4yzE~s?rAxU3Ch`T@+yFoLrM<VOr!Q9lN%j~2@PVP2y-6;2QVVx#6F3n6!iPTp z*H2&Z{7r0z&Biam|J}A;_Jnra2g70_MGHni!TcTv1!);jT0$v?g1%f01^xXa6pVvC zP;kThAt<VT2T1ilE)Lh|I9+tyBCGUEbP6BVaUw|u<srD&56aV$)?U>;PqFaa^Wkao z@6O{mg~z8*Is!Q6xwwI0@ix>Rh)7Vp1si@zAo~am*f=bB;2k{dq1hJ2tYVlQ!2Dnt z4(wCN8*&ax0A14t8i2o{frhZYaF3!G;gd$AzWWlQf<Hx*iLAsM1$C^f#JuWy_|B^a zYC#=4ubOWsDTgzbq@4U_OUn6nS&2x=N(3da`ddjkFbV?z0)8UMD@|&shwp+qs8A$> z3NezT1~>!IylVI+c%`r5N>l)+At3jisK6+%x=4lqP?4RLm{1kTQ-?^b<&~;J#7Gnn zp8~{tQGqc+sDc#9_;#uwdDXm9VSow<TU3xxMNvpyy1vUwG)~x_SesazP?eRqN8W}< za?SCZ<g;(cN`zMLA<ZNye?)%gRpYm$9NILP$gBPc%#!lN+7Cst)@aKZNkJVdNR@&* zJS(W9zmWsEMFnS|enB0I!n>4cAjJYCKoJR56d<oO;8Y|JVH2vty%MSts(7W5yl}4= zNhB|lhg58<s6ZH?18|T+$D{@X292{4Iea@|Kw_;hAg@|dj^4;h{2&Z4mXv2D3Iq6d zd^;UrT?jHX0EDs`*n-&rTgqm;^QwXOLS8jxDId8O!T?eW2%>_zti-2K*#KMcN-0|; zHS~Rw)PU+GR3$YeRAB>nrM%L_TE1OkEmDwPP!}W7p+4;|3|tB_MiTDDE9Kk8NYJ2Y zMqVjpWHd3F79smS(P@#+&@hbjyz1TXsl}o85VQ??V#rTnnHUM^1eVFGPN;fbB!iw( zP>0eRX^g0VwohVhuT2;aiM8QgiM63NkvvpA)CMUSDR_qQo=~L+5_Eu$T~G&c4e=Z! z!SE}Rp(R3XFgld>LDS>4s35O8lBWYQTHZV~EkK)N2f!|XsU->Qg3bLPDlkK6yuxtA zdph8{fHnUV6+md|?35uO5hM|OJN%^1g#mA%S(0*5!7rqj@D4>wYLJw_W5zIFu5?lZ zX<BQ{jTm&;;-m)bIe4DbfJQ|h0jM>8XC<Pk@eT%KB#&2$6uupLR71!JN(fsR5XmFW z4GxcyV0q6gHI<a3a1?{a2LbGYI$o)y`~$Dl41rM?75|aEw@m$$<;@26BAEr67)_1& zJ+B)38)m4Fl5!Tdgwh=|0N)NBBMcA*;0S=OKxbj%)X?34Jm3O}6J?;g-%HA07Sw@K z$H`CX{5G9M3+2|vZVdW1N6DxSYC(kx>Wl$`)&xvbOaj;@%%sAAUyEdR1$7ucNTD)p zs0~ukh-iC6LPWfe2?A5cV=x-#XjmIlNgRV1!~-yfG~W)L?UscOMwb@J5~?sE&_R%u zNabGS1O=L-caSSa()S7WzJw|ij3!0CkKoZ53HCzdPpp-cE5sMc#UmgszMwAD2IB{- zCf4?Sg2O76k76XfHep2JP>X8eU_iAWGewMqZ|5~P)F!Vw;1u7k?-ME!BvfG%pd%J- z<~3IspirPKD4?3bF3^T)r_t9g&@Q6~6?6(H4G0*6*h%n;Z->1N%@3+UPQ-iYLcB-y zI&BtUV=KvyU`d${`w}Lt#9B=081P_5b867W)+aSY@(`AE07L-tP=f&06cwPkvDYFB z*5Z|-4Kce@(XOz-6v_o`^bDy08C>X5dQ6Gr;XO=tC^oScGb>J@Fk~?p6Kg3aP{V3g zB4%1iIVMa>1+)xC4{~Ft!-Nv<B`Q#;pwkKVz>iZ9av+5%h{`uPMd>cr9mAf~9j<qi zR@WGrX;w)&1~ue&-K^axROq}gG0?~8Ofkaedwpz;4T7{h%xQY%(TwO*y^M5Y(N~Q$ zmS#mKHNt8SX;k0XL#v1B#vt`DG9~4DeL<@yDaV-7%SwyK5YsEZGdN7O&uher0pqM2 z3@kVg$7serL0##LKAIhK7mka<0IaN&y{9RKhZz*RxZZXfFdS*0meNvin82Y=uM{OS zPW~aO>x+20xj03_kp&k3dYap)LmKNrv~n0D!hjfwLCT>ouqBNsM`I&9rcQ&faXiK` zw-Iau0!=9%7n+TPf|41h0x(@L#7Q_i!eJh*p~p!yHZ~3CvwE=&h)JU<pq%`fy<*M& tk3C_@|Bg;BtZ`F`F->kK{-4-nDu*Ee#=w+n2%~{KD&qeme)~Ji|1Vfx%QOH0 literal 0 HcmV?d00001 diff --git a/common/sourceTest/java/ch/systemsx/cisd/common/parser/excel-with-column-headers-in-the-first-line-with-default-section.xls b/common/sourceTest/java/ch/systemsx/cisd/common/parser/excel-with-column-headers-in-the-first-line-with-default-section.xls new file mode 100644 index 0000000000000000000000000000000000000000..cdd42f2ee17c083a24caadaaf3198f0bb63a685a GIT binary patch literal 30208 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 literal 0 HcmV?d00001 diff --git a/common/sourceTest/java/ch/systemsx/cisd/common/parser/excel-with-column-headers-in-the-first-line.xls b/common/sourceTest/java/ch/systemsx/cisd/common/parser/excel-with-column-headers-in-the-first-line.xls new file mode 100644 index 0000000000000000000000000000000000000000..6662b2b02387905b3e5dc2d2aab4844b82f82208 GIT binary patch literal 29696 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 Sq@iWwuaQOmtz;jv{Qm)VI4Yh1 literal 0 HcmV?d00001 diff --git a/common/sourceTest/java/ch/systemsx/cisd/common/parser/excel-with-column-headers-in-the-last-comment-line-with-default-section.xls b/common/sourceTest/java/ch/systemsx/cisd/common/parser/excel-with-column-headers-in-the-last-comment-line-with-default-section.xls new file mode 100644 index 0000000000000000000000000000000000000000..d5f05a76fd200b08bc98e0c82cc684d51b9fb285 GIT binary patch literal 30208 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 OT8wP?KZN!%^Zzg6VdKsK literal 0 HcmV?d00001 diff --git a/common/sourceTest/java/ch/systemsx/cisd/common/parser/excel-with-column-headers-in-the-last-comment-line.xls b/common/sourceTest/java/ch/systemsx/cisd/common/parser/excel-with-column-headers-in-the-last-comment-line.xls new file mode 100644 index 0000000000000000000000000000000000000000..88d624e8fcffa657b501deb1dd6ec6f4c835881d GIT binary patch literal 30208 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 L|A-boX8QjJCh6>u literal 0 HcmV?d00001 -- GitLab