From c4fa9cf5f08d883cdf5f9891d192cdae72bdd25e Mon Sep 17 00:00:00 2001 From: Nick Burch Date: Tue, 11 Dec 2007 13:03:53 +0000 Subject: [PATCH] Support for the Trim function, and a little enhancement to the formula evaluation test git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@603233 13f79535-47bb-0310-9956-ffa450edef68 --- .../hssf/record/formula/functions/Trim.java | 60 ++++++++++++++++-- .../poi/hssf/data/FormulaEvalTestData.xls | Bin 125952 -> 120832 bytes .../record/formula/eval/TestEverything.java | 36 +++++++---- 3 files changed, 77 insertions(+), 19 deletions(-) diff --git a/src/scratchpad/src/org/apache/poi/hssf/record/formula/functions/Trim.java b/src/scratchpad/src/org/apache/poi/hssf/record/formula/functions/Trim.java index 69b3ce6f5..5e9d91c7c 100644 --- a/src/scratchpad/src/org/apache/poi/hssf/record/formula/functions/Trim.java +++ b/src/scratchpad/src/org/apache/poi/hssf/record/formula/functions/Trim.java @@ -14,12 +14,62 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -/* - * Created on May 15, 2005 - * - */ package org.apache.poi.hssf.record.formula.functions; -public class Trim extends NotImplementedFunction { +import org.apache.poi.hssf.record.formula.eval.BlankEval; +import org.apache.poi.hssf.record.formula.eval.ErrorEval; +import org.apache.poi.hssf.record.formula.eval.Eval; +import org.apache.poi.hssf.record.formula.eval.NumberEval; +import org.apache.poi.hssf.record.formula.eval.StringEval; +import org.apache.poi.hssf.record.formula.eval.StringValueEval; +import org.apache.poi.hssf.record.formula.eval.ValueEval; +/** + * An implementation of the TRIM function: + * Removes leading and trailing spaces from value if evaluated operand + * value is string. + * @author Manda Wilson < wilson at c bio dot msk cc dot org > + */ +public class Trim extends TextFunction { + + /** + * Removes leading and trailing spaces from value if evaluated + * operand value is string. + * Returns StringEval only if evaluated operand is of type string + * (and is not blank or null) or number. If evaluated operand is + * of type string and is blank or null, or if evaluated operand is + * of type blank, returns BlankEval. Otherwise returns ErrorEval. + * + * @see org.apache.poi.hssf.record.formula.eval.Eval + */ + public Eval evaluate(Eval[] operands, int srcCellRow, short srcCellCol) { + Eval retval = ErrorEval.VALUE_INVALID; + String str = null; + + switch (operands.length) { + default: + break; + case 1: + ValueEval veval = singleOperandEvaluate(operands[0], srcCellRow, srcCellCol); + if (veval instanceof StringValueEval) { + StringValueEval sve = (StringValueEval) veval; + str = sve.getStringValue(); + if (str == null || str.trim().equals("")) { + return BlankEval.INSTANCE; + } + } + else if (veval instanceof NumberEval) { + NumberEval neval = (NumberEval) veval; + str = neval.getStringValue(); + } + else if (veval instanceof BlankEval) { + return BlankEval.INSTANCE; + } + } + + if (str != null) { + retval = new StringEval(str.trim()); + } + return retval; + } } diff --git a/src/scratchpad/testcases/org/apache/poi/hssf/data/FormulaEvalTestData.xls b/src/scratchpad/testcases/org/apache/poi/hssf/data/FormulaEvalTestData.xls index b2388f1d032309609e1e4b14c3510545a76aee86..c6366ea1c4314965ccf43d14699a2abf31e419bc 100644 GIT binary patch delta 43973 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

sr0*QC9SVYQi1QoLKs33|YUcq7!DZgdZ zHdhs~^q3ean0N<^MI`-a#`dv`^I&G%u3YR4AgZn_S6BQ)*_p>Kt=&JiecBzmhtB8{4Ia8v z&y9DLGTpgMv7jD|x(T9aV}{luO6KlB^i`Z*>^-8kwl()ZzIkA|ZWb+}wH?cKhqk3yqlb%oWzr+bt+VkX>{N_P z(ZjwGRZiOM6)1Ip);g@v#nHm{Si52cZYGt`+FdJj=j<}9(bqM0t2cY<3@Rva_PwkKKi9{)}GH;Ifr^b75~W z_ha+f(V*Tc{SFf6@G8AO9L|gg!yV3a%#mR( zF(QltnR+K+w8NPmJjUUS!*LF0bmJY)=q5Ov(ZwfPGC3klvRraRn4GEblkvyRJrbNW zQezH;4wK*#=7AjMzJdlZI#&?I5YycjQ8(&Gh%Q%#AnTGd<3qV%iAaY!HVQH3!o@a> zl>-C~XEaa{1sT)b7Ey)gTa>JiW?i`8U@?wzDx@aBT)5aqvvR0KNjI2vVcP{_8{>GP z2EshK*v7GPm_ZZOc!tBpNNt3KJpf}}K(E06gOXLJi3&Ny7? za7MSt;f!vv!!=ZKs(6VdlUW|OoGwdzpRNo+O@1-lWcgGM^k@m~R1WPJLDLwG6*PmD zms&(kGA=G~CQHW)n$6P7EF$UUg66Pt0uX&sn*!ODyW2dJ>8d7*Y93Tw)kp-A4hi#+ za9wdoh@D{$8inQ?tN7w-ysH0=B8ftx)F_dl2wfy+D}1T-M!d!<4_6Fo?!5V>Q>IRz zZ+vEQfi<=Oe+xFpDKNh@27OElWO0E5wm@cePFxMDktk7!r|H%7xzpy4o3&u(XsXE6 zlg-5nyO?dC#|OMYxrtJBaIU1Tnm%LJ+|+V8rn*?7TsG}cUZPwr%+;y6@p*I4n0v#u z)32X3)l^o43yrdsOgFNucYRotbR{<@h0d0e2> z7RW_`xcS;JMVNhyG@qsAR?1)E!bP0%jkonH)vb$YYqIu$)#lT7poNV#S7j@8W|y<+ z&um65)~lAh-ErhbO)5}3QGgqo<+eltmpI-vv8T1DK%GQ^0-PnQDRW9^_PFSVYrES( z7NQU`&Qyb13aC(BQz%Qd1XCM|cm_2ezN@T26w((Ev#`O@D&BfJjhdHP$87J_N9q|> z?bFzg8j7=$V|Mnd=pOSj>q6)L*9dRO%;jN)c+K6Ulsm>K)Jff^G>)E8EC%WT17V

g<)G_wZ$wX?Qdp!OE!0d=q_A1IzU*(uGe3Ajv7 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

kQm_1GmAzZS-;>58nhb{F!u-f!l20iVfTr1Gm+{ z1-2Q;9R{u>j3W>aP1s-D66N1Q?*ek$Ar22!PBdqzOATlSm3UCo=o{A`r zzX_v-h@T^z)m?Oc{nH};mZP2#bez#yAZjlsJ56Wn8qUpKb#hn(c@kN8jZO{ZPX_Lk zfjeX1&KkILUM|!?o(CD;GXG)VE*Q9r2JVu9yKLYBR}5sSfm43`cv$!(2K2C%g4p;3 z+xS-(g?cD*+>xrIGehmZ~m{Sony6&F7jq}o@JLrcD`I@R5aLNKxBWg z=3jy?FuE*=3I`huxQLwg@6aQ!ORRcTgj7D*V8BJBiUyN!^{%j{7DNSvO$1y-nm9k! zq?vh4&pUs2zvlMNA6ACs-O&av#=ylJxC8^2=;cD*odhzxv8`g@k_}un16SR^r5Lzj zsRlC5z@>xp-uRNw`oLj}1u?6S%^KyRpr<&CZ`D>HT3El|>px^!Y`h?{XpT=mb4F>$ zFp3jIw#CK^E}{ZVaFI971ddlhWC_9iLO=6BrpKlXB1~k}L_tZ6k_3_Mv8jNID8tHv zl3BBgAhN!tl3hfaRb3Q3wN}Avs?HHD5mql}3o0CJ93Zk3)~sH9v?p%&FyfBrtyiKw zeyO*fTdSt%q_Iwlpmav5PS@M6aq0{t?JYWT>V^g`)4*jJxF!ZJ+slQVItOI9Q#Uto zEeu>M1J~NXwKH&m_6D+}f$Id$+ozD@)dPo36U40b*sQf(BATqIq>4%_?WU(xxxOJ{>seM`gSZCtxxUH}6ymh-C6KEh>*{s!2 zP!6L^L1baP&F>;|$i{+Nux6GZvN7J~cM)k`C#W@RHWfrx#>@Pnn$wPjInKH}G?tA! zqx<4^%A2at2B2J8LmJc)^%c83z2nV!xi|Q>-t}_jG`;@^%fAhZZ`wh z-N5xUaJ>v%A1@bj-CQpz>pA-xxPAt1fPoum;077EK%RjdYT$;2apbyPz+ndjv1=E$ z@(qHzGHNA=Y={lq9S&ccaL9mDLBNNk+yF z1|sXjnjKwKmI`jia#`3(gt_ICp(4O*`6BDfnm4(qESWgfk7Zp%)~{SDR6uxTUt|MV z^X4E5r~&0v2eR-MQ5{%LM&*as`9(H}HM_gWdop<}>mjnda;Z?^;#Gf0-|XahIaz>PC-6TDogZcGFjehV^g$&dYhnpMtua44Y3u1i^$<`Cq#8)G^^erLNX)vJ8%)H z_7gOYHTw%9Lt?uF7m?-w7kPbUBF7sjvWXsFLERuT*nd^2?wA@^Hu?W)KzDA zo^IsdM_LQ>FlF9e;poRaOqu6PUWI;|GM_IUPa%Giw`|J1&`(q5&$u$0GN+%pBzGzF z)0Da63>l0`$7Rm6!Pktc=HQyVPDWkR;|6Y?ftzpO78tliUM^Jq7JJFis|E&cseyA0 z+%f~V+`t7^7|4|dZWTCh!$kI+4Gz0HNU6+b54cy*97dxAkqxnNgNvx9j3LC^?z8HB zA|x|fYOIS$bzE`oQ2n8%RZc3>Ng2)$tUFLJ-Wfhz&#ZsHs4wEACIHa{>LT_+e*8rn zJvjOveLF@reecnI5UdUcf83)pfU1w+DeIp{U@m2%6PK@_N}ME#+MMWQ=aqcj8k*nc z>;4E@j^tG427@n0@>Es5dvzvcy@J65_ad<=&a?OG+4Tz~F^3a-fX^^ZIi53Yh8eF8 zqx3k$Uq6Z`guVy{e~!|boddpDY-N;T`(sOP(lNL^Jcsv}?PJln6DG6#F{Kq${RDWh zuf)%4R7%S@#|NEzM(b|frpjq7XL6dL6^y0}qT;vI3>Q%e%oMbWHD@{JM_*HS)*zbK zL#XboHE`<;+6@3m~~zTqGfl7krnM{7y2CZC(00VF7g5z%FX%XHZg7$wyrycLM6_@Z{mH+yw)7(ZF3YaF-2S;EI7PHE=4jeD6e6;{^09^}3k#1e^5@K_?k)6ht<}rVcKm z;&>A%s`&k>7|iImoaE^`(7#9&&T!<-F7i6|S(g1%WM|9yHJKLMJc#TZYZe!unyw@1 zLFKPA*v*n=>euxaXZuXOvCliA`Uk7NE9e5Ft%AtBmfGebI`{X0qVP+@7unY{Gk*jGcOTzh0#tyR4~}%z(sT_y98ks8PINL)5F(zwLh%vsKJjmaCrITnh{96flDxO ziC!+`)kz@3e{Z9TflD@U)eKy91D9gp0;vWv&A_FD^FDqiul9k%o)BVIADi_}QjmMr181qP#jf?(uHX2I*U!NkJgg}7 zJCz>OH6yP&TB)R`A_I3n3C1byHDtOXjQvBsT)N6;B&@4sUJ)FQKDsY zw4Z#Ap0AU&Dz@h97CPb-R!=U__XmC!t>&zCT2Ko{X9SUb@gBd6$YXy2q8Dab@#*{2 zGFjgntt!b&Fpu*1qE#e~FMMi+$f1uB2o@4z1Og4G%~LwwzY0R9`%}8Me+?bo_Y|Ji zY@#EFxXpC*4jpZwqoYsh9RC42N?eGiKu74P-9p_Y`V@}v#K*aRp-%IkC3?w1UDtn} zj*1uR^uVuj1+Dp{{ z@+Tqcgu0b$pu2O#zeKfrIT@MQQkO;6lQpjh>c!}9L1bi0U3C#m@`sfHhIKNHb3jWEdqvDkE%X z;37Kj7(scg87qhi3ELUCh&1B`4P(s&r@Et?1N? zA&!^C$<4w;1?mFwpT`r>RA>J4y77Irpg?bWOoIc{js;ZB z$)c93E$PnWgwh1fVw5h3Op3h*TtsJ3S5P5q)&rvTafc(E?Af|{V1TMAtBI*dW+T4W z{KU;MaE}|fc?NF2fm`6^Le1|YFDcHt7+iQQu?^f(1LqjHWd<&=+(51{a4QYmDsbM~ zL}f)5#2yY}^Vw|k`hw;#Y9NSgXpO-#i=clz&caL=dE2&mENdjPdF9$RGBK7%h-^M< zW&uU1>(qR9BDh%!ysXwLeX~Dwi2|0HCu40`V${wV zy5^dD{WXZ@^<1jwYYp5w1GnD5Z7^^fyAj;I;qo6g6ItU^gVqXduQOR{8M8m9gtlC+GWJXKfXPv8o$=yB09BR zg0`?`Z$V^gOWo!o((EH>8*AnUQD;TQ#xevE?qJ~^F7jS)3CsG5tVFKY$z6NRGlAVm zGu(|oGH`ng++G8>FN~wY-vth9B7$cV0HkZ|FDJLFTw&~H*_|TWT~0=)g#{BL`-n9M z3fjZyEed)sA*BO{JUJ0ATVz8U%mtz%) zrZ^G5f&?D($|ar8szZ3B5pkY=_AyDtoX5`m3QLlC*qf+)=eIdK*XdSu=YV=CA&$j9 zWC?5FN2%k_--N?LHF`p>c51$=8{euaE_P$_p}XFJMa%?~&R52_5682xANClW(h>En zrk~cUM8CGD2CEjhC#{T4=zXeECrazA|DS5@yjQhOQK}QE$fq;1y|<%Eq@^1X&X(77 zlMav2$zX8wh@XyX;aZRu<*E_lDB=gzmS)fKI|B5H#9tJ>F^Io7RnduCuj@EH*Xw2t zHf4Sq{Z%14OGJ*3paEI%Qy0PRRa))C?!yB&IxlY3xw_O@{IO1PDsIqsSB_B+;lUGs z;u;|52<6P!pljb0!F&v4Z^t%bp7biKcwL6|RTp%GYpsy{wE2wbs#IQZgoA2~Ut-PY&ncE7x%G z29C@a9yb7cT|>fV*KjEKYq%tE;fuQ}894IKaJ?!)j&GSgE7IeXaE_+4!a3SD zESw`Z3+J#&i-!v&@+(6%%aK72mBXVLEdy8Ez@>$8+o_T}k8IRc0<+;e)B-BF zXBJjY1ra%8L#!?eAq`X}ivXJC%6vc%xyTRnu!|yrLbqlbm9?=a%^0AEL%)MUlLL)C z$;1K8a+O?yV%5W4kdnA_OXqeZlAERPakBVh-R9{>O@^gONrqc|K zPqd-&3FoNs3FlDQ*KpMMgzHh`<8t1{$0a?DPdG=7PdG;nO*lslO*lvGOgJ};8k%sD z8k%s98k+EVD{5%MIcjLUoHJs(ZjWv<(s^mS-r_&>uc3bz580tV&^pG+*r{)7hW@BD zQo$jkxc=pC$ENI$3>#2PQsG`pNfr%Rxwwd348Q?&aZoP_W$VSbk!ZPLHoG(J#L;JfG3eV z)3^;+NOcFF;~hg`qUw(f(Z@tkDJW!1AMy{nMF}3eb&)wrBFf;O;T-v5lnQfha>j5) z>h!`n^09D^iY1&Q9}DNm$6PK~9GU#dC50p3(Vi;_w!KQ#<<*~2cu+%firE@#N$D1Q z#aBa}ihK2t`1V3T!QMHdsb-ibKbMxER^Ep_Px3^Bf^fR+qgfYc z);^u#&nJyF`}C^#aiW2<=M?il)otGjbRSj6wIe2LMIWWjd_(ZT02cY(^m0apXtWhDLknCzDQ(!ZojVTq<(=ppbV$k z7rN*5$B`2CJ7@7vX1;`fGA$;yX(*+V5K=RmijW3EC;iSFU+6ny;5Tac_zB~jV(Vn~-uB{M!k>3vWF(NB6#3T3UJn#7X@Bfd3!yPd}r53jaUjpX6r{lAV6R|F8Hz zhkqJj|Av2(|1JMlmkiIYa)+9LzXFx6ZdUgroUEqXmHgNF>1T%RuKq@LZGUtW#llI< m@ZW0hj?A&s{r-rH@7sU*XGDFEG*yy4BXUN