From 2d6e8b16396e8fadadf6e7d19a1801ca1edfbed9 Mon Sep 17 00:00:00 2001 From: administrateur Date: Fri, 26 Jan 2007 07:05:50 +0100 Subject: [PATCH] IterationStrategy implementation. --- build/classes/xid/Presenter.class | Bin 18347 -> 19901 bytes build/classes/xid/TagsData.class | Bin 3657 -> 3635 bytes build_test/classes/xid/test/Test.class | Bin 5615 -> 6922 bytes dist/test.jar | Bin 29029 -> 29399 bytes dist/xid.jar | Bin 42615 -> 44108 bytes src/xid/Presenter.java | 177 +++++++++++++++++-------- src/xid/TagsData.java | 2 +- src/xid/TagsDataByIndex.java | 2 +- test/xid/test/Test.java | 44 +++++- test/xid/test/Test.java~ | 63 ++++++--- 10 files changed, 213 insertions(+), 75 deletions(-) diff --git a/build/classes/xid/Presenter.class b/build/classes/xid/Presenter.class index 5eff7e24ad7d84c314ec9a66c6ea7425a625cd91..e0e6d6fd0045142ac4de3563d75d41747a5668eb 100644 GIT binary patch literal 19901 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 literal 18347 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 diff --git a/build/classes/xid/TagsData.class b/build/classes/xid/TagsData.class index d065714def7395887df680c08b03750d22f8646d..68212a59e31bae95cd9a597e9faf691eab34adb7 100644 GIT binary patch delta 87 zcmX>pvss4g)W2Q(7#J7~88S9oX+t lFvu~;^Dvk(q<~l|AVQmmA(bJGogsbm3KnL@&4*aqIRMyn7-j$f delta 107 zcmdlib5e%u)W2Q(7#J7~88SC=Jz^9VE>11+EJ-a&EXmBz3oa>2Oi$g!)Wsy9%#gyv tAjcrj!(hgc3Sy~%2yGsQG=_9`hK$WCS(q6`MbI^uq^4JHUd7tU0RYq!AB_M2 diff --git a/build_test/classes/xid/test/Test.class b/build_test/classes/xid/test/Test.class index 1da341f40075bc7d5cc6db1a5f971d6bc3e45cff..5a5533d0a2af0006658ffef51303be88e94319df 100644 GIT binary patch delta 2413 zcmah~dvsLA9sYhZv%8ba4M{eE5J9qlkQca;aIlh?Qz}qGQU#NeB2n06uVG=c8+LDi z2)cp@5>P4^1(b>)$ir43(ItRJpg!^RC~E5q1(7C*T98_`543ZW=s8My`p2E$NkX?@7Ebaa`g9i4P@CNSu`TNaB>l#}cO{ z{+fVxblChe5}(+AdRF37iO(cHx1+ylIEV8ZzQBb9{2gD~-ajP1vhCLr-$?vZqVK=# z@ZT={N5e&YYX{%C2v$9{XKJ&|x?p*@AyQ)y+-0+U^L*Z*FI4L-HzR>ityRuOIh|1( zx0bT3!BLnlBApm8plm(x(d^*cE?4b)cUk^IMlltk@p9bi3ISnMpBGXqLG>X;F zWRiz)vvsGIZoMxjj3mtLX^i3`(_b742mD1|<*1-@4xw;ezI9&qza~GcxFO`Jj~FV` z)x&E>iZ#NNPO<;VF0k1X3VLSiG>8VfXoyZ%*!wnAr(u-kqHLXVC|9RE8m`uOe8@B+ zI*p)2OZ3Y3TuF(9#03Gr*EFK0w?Z{8^6GRI4c2KS<+n`j)x=^hDj*ECdsX;qqvL$0 z?-z|FA-}QUiV~&fGXvp}IzT?tsBKi+*F#P(35ATvbwOV=YDCp?jx8&japMh@<%F!V z|1UdG=@t^wqK4Unc9B)64;j|;YzlLx5}dyJdL!f~49~WX>8aK&>@tru!(B&S$!6zV zauEt!P9|z(QPP+gA+?7Y!hS!E7F)BltDo{^Vm`i>{D2OPTFliAQXes8= zD$J*~SV$YOh_>Q(dJ=a~D`Ip6OXyYHMQ`J7I)P=>f#q}#_t4i^LEoW?sb`WUVHHcq zy(|;=u`H}%URdmBSj)!Z0X7K_vU0@Mu_~-*1|DW1Y-G3L5w--ISQ8#)Yp|I;ge`0f z9%H+(l{I4$y3q72jVH7gQxi@ zwDN1QpO@eupMq!jG(5|FXyXAq$LGdyh&SReUyLJs1)k^k;|0C}FY?WJiSNYAd@o+% z`*D;X#;g1lyvC2=b$%Sjcn99#7w{&(h_{4#P(>=<6$5Zw48;fHN_;3r;0Vm{7@7(NlPEb{VlkMKpMxdptZ)>HRalCbA3u}pamHK`3) zt~@6s?)jk{EFP;0fL#v?sI(O|t?-xTHp7VH)?9aO9J6xWfzEbzXFDg3U@Ge32(=tGde$!wMzK&_tIhtEoZSDV;KYp7CGjvs;<~ delta 1572 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 delta 2678 zcmV-+3W@dCyzBx9-4&L&~2><}^ z6_ZZ}8GoHu37iwv8UMeTEO{HlVGu+P4G8W5Y`8pNLo6(Z%PtGDTM+NrWHvjPWa4D9 zuvMXGJ@BB#1JB|KqSgbH2m&4`Dz>)T)>d2F+SazVwXN0K+Sa4rdo$VWkzLm2_se|W z``&l{zc=r_dFAt`o(3?L4e_A`YfG^XU*}lw!+)i?%!_aMP=d8yT<(JxYdNkE^h%Da zgnWY+SNkwf$gknJ)`#n`k>i^j-{RQBaXrTk95-^@B%Ey)7B_R;!f~r`avR6(9C!He zZEWGVljAOqyT#}pj(a)o8jU9ItYGpW_D{uW`K2@k5Ruar~I$4UV7q@Ke0$!&~@SDSnQ(1@{Y%Ukdswj(0eI z&G8#C`mGo5`tUpaUJU-=#d{2D!i+Ndkmux2hQigpHJ8 zM@Y52VmX7S#*FCsFK2oFGY{-i&IA<(g%Pu`Bf0twu&@uQ6gFThG{` zCVG%pPf{~d48zOMs$ZqGX`zIciia9)%SgqmWf;whli|=J(+njs&DLmkkaXLm#eXyN zNI(;+tx+`t^I})(X|JIMl)+g^#z8g zrc@+fCA|1yV3ikt^y5$XGufY}ClY3Gg=r;XW4(CakH6rrB<`FZ!x5d*q9Bdgv~DG} zlplW+%AS;#)cyDXef%#H|LJ{I-
  • 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 j z%LyRd0)gg93S{m-TU()2$`|C2TG|FIMy1A$h^!bQkI&?N~WFXd@_ zJGqjbz1NG+#0tdY1O&2@EF=^H*uUl0&HEFX2GaE(;feiM>PK8)fu}BBE=D(vVsdgY zuu4fVFwB3PUe;#JN-pNE<_>P=E=;C&#;&e|KJb2Oi}#E7_hU;faHg9Vcz zLVi~kjR>a@W`Uv*;lidK1uGn-u%K#aRgc!Kb~pS}93flvN|2~h-GcpI?q2E9TwT4$ z)bg$l*x>5E1JnM1BUMrY&H3f$>$_mW>qW=ohU@gV$E?e5kDcBZNsa;{VvUQN0Y0hg zuE*9F343m|e8o~PJO|Xwzh!4rM8O3`ZFK!Q7vq1~<2XLf@A{R@o|za9r7;@zgHTb zP||l5qDAMn?638|-Y+wD>n^#+4?ey;2}WQ3_A(3HdkY*y)p<)8MAdzZi1AXR@|xHq z5z3zM_1~ZeV*Ld_!gEi&b8~w}<8|Lc2e%U+sEe;@qk9fLu0f&C-P zXCa1wsl6lrx8T8TOlgCrC(3BUmM83J!{(>gzC+IRTlZ*SXP-1mNeJO8{+U|kP0e7t z?#UA8b7Rj?>#bz4r|C%(r-u>}u)ki%=^>~8h#drauv0ew`3vbMld$C|UjVaW*_FP~ zXV53jU~bWqBJBsmpsz|N^C0m21SzDCq`QOqOiue@a&36<%x(SAfyELN&-n2pw`K=; zdBThqx}RSxqieu=1@V>B37xCK{8cR}7SIa1(Gd{M5rivcsM0vl>Qu@JpoK_n5D)1Q z$p>5*Q!LBTQ^$UlF!os#HNpDZB%61vX4oQ>+2NDzx!7T7#C+?x;5|HK%FF=u{ z9jhiWV24{QnBg~T`jkj1f}aV?r^NL$aLVV*GrG4z4$WawG z`(vt>)pWV4QmmodZxKc3nO~IuY=4l?Gy$@2(cz|8!LTt4Mxf|+(ex!%E- zX&Sv(UH@XGYbPvfsz=~O8){?iXhBdIw#HVz?|$Nm14hzu0$v z)o1R~HJ$laOe-75RTxdF-Y6s8xdRmr3I6(cx#}>{%K0N* z86zb$^RoxGTLkvtkG-xAOgfBF7$W*& zsV_jA@awX|(R;qU{t#=xq8+d(6G!fV{IqRv$>WP!7<2Cx35MO{_#iS559_kI*sSY^XYDtG-2%?fv-Y=)XD5?i$Q8i&<1u%WUu zV=1k5>%_~(m62tUJUL-!>Jw4?L$^ZSKF)f3Xbn2YSQXS}Zd0ws3k4h`gzyx+iWE@l znCOZe%5uOH)5IjFB{FaA6@*gyRj%~Qu`K=BaGvtasg-x6wSEO9SzEiu*BR;?>-YQ;_xtTc62IG;xml+;5$IvI1| z53g=Ty>l1(B*FG2+W`U=6D?f}2Pz#H#$yI-n z{N`+EuI8LWKbITgOTsS*W3#SuRc_*4+-kG$E-Q|-J~@gX$(oTZh)mUR4s%vWD;TwH z@S!M?`l@9cf-W~=;wRC>8OInJEl%L}n}#gagTF*u6mHjPm<(uP?JloWMV<0cv*b4y z#(*TGTQ>8=xjS`xW;xex54V*)URb#}8|e#)gb{S)f16EBHLq7wGu;c`MOhDtIrEzY z6>h8%Mcd>`HY1;HR;*;GHggYQGRm@viIUceW@QD5Y3d5;#0ne1kw-34s9dY*2{il_ zE=Gz*GSQiYYXxG8yaH$Gi0}n&(4bo5=J3{|7QHxZ_V6Jgc1BNkd?QzIVj*JBk>TFV zFF>N=MWT~7B^>KNYg9EX#KBX-a)Yv0t?u!KkF5K_pj41y$4`w0rktjyp%~LKsj1gU zFTLt;vt4Qys4$!md)KwtOlS4Wy=dR+{82M>sHR!C+}VbwAFH*5zH zsnm$(ksV&Hci3-7s;>6;(45m6k`;wud#jLodn^yKs9SKZHt@K8T^1`RR_Ye6(4>Wz zu8~cVPfH6LKP)G+%x~-UtmoJ7$X>>&JBG8W4}nUT%|OIDS0$fu%8&AdvBV*B_cEfr zres86^<>Gc9|OYJ0msz>1(jBw;jxOfKD#YyRSk{o?Tm;C_RYfT!q_KxndC_MC3DnV zj;ZudY5AMOrE$&b#X2+zUvqX<)mthw68wH1r`f$w``c6w+Q2uVJ(TO{GO7=+RwyuH zUI4jKCa1d?tt{j|PAGIw!PTji*j&G6s9CZ+i1)*dm5!SiuWd-?i*81Xi+96^#!_ON z@1y&h@73KaD{T7;CdHfGIgNKaFj}#g7zYa^ka@kMx@){K`EGI2)y<21;UjIwbfO%@iXKf8 zyQ+E)x9~Ar_kHVdl5}GH)O%Gl@ka2Xp`k5&(p(_3=H60;ppLS#GPbWU#YH2eM8NJ> z7VQ)s#@TL41`Rq}SMkb04X)AfbWYuUT39(~qhSYZ=qV;>1&TyxZJ^2BLKY#W#j?uq zl&8~Vv9Eot;wpJg%IrR?LJCU6*ef3pg}J$2*IqM$YRC9=h4(QxH^qK@3DYcJ6W2Q`lMA&$VIYS~>H?4pSGX zmS4Boz6{_F5)UEcPC#fi12Ma)OhFwiFMVvBC+52xMMyEO# zf?AGNJ0o!WB`NBf7N1XKTh{WK>K4N~S2S>Ebz9oC^i3+6D`hE5p#py|YA%?UDLSSk zEN68~ljMMATjHL%xSa~CyDOL^1w8)XJ5TkeMiTB~WfI{b z*!>kij7v#L%PJ>>N6whV;}SSN+2b_i!yACO%$!Vn18c~dmF4C^#M|vOWNCglguDzJ z)GPh_ONKq+g%8UBv1GjHqC8!M@XMI$Ws%WosoSGKr0Lyrf^l|A?6aNFohN3}F>pGsnva+amFrRjzSOz@p0`TV zY)Z7g*?Mgn#Q?@h}cYqmK#4w z(UEVJJk0{929pOb>~Kv!(qq*(!cRO3hBha*%xhpB%_QB6kxmH+RZ`Npm z-{(8Igp#$&$6s%6j`T__dn_k{)_|HAYrWRX0N$YZq4zbkm+d)FZ6&l1JhBXYwQjw?a!|nMFhG+extxG&)671O%9dyWmwv)ehH!OS5;(<(bjj?c#~x3cj+wrH z3f?}l^W9%13cM1i$B?ayJ z#@9P}*J$&M`erM$6!X*_l1l4ZWH`)^Q6nXh!7X9ooiyYMQenUce}WY2_zFalyv74z zph_UE8eBMgA$7q+S8jc>uh=kOSg+_EB_gV{fh<%srF&=AYd2|niG1bv)Jr1vH8N8L z7qKZ%Phbc&w%K|czG$s6k*>Q{Z#&hIh{~l5+uoCta|+diiWd=MJG|D6LR~@leeRy*cs<|KPJpid)Jvc zbxRCqb(tEm({##i%%MdQNJCe|qFDprEy{|~n>eC<10;_97%QAU?-L3LV58RHN-BjU z7k-0?f8cLJiTEA+dyslBU%01ki!Svihp15fDg5zfekh1gg`Dm?%5)nlFg=qG^lq>@ zN{_6IdRLN`psS1?y*S8(3w+~n!6n|kL4@i3Vpaeb=c0|wSw*Dk{UB-_pGZq2Vc3|2 z5bY+PjLRnLQw~PpHgfY9od}a?U3R}nhe0LetD50jZ7gOPm^tRz7m2|p_*C@LHaEJK z8;*(sjf#9O8lj-c6X9{tLL{&b&`Mh>M@ES4?)?U!fjhZztk=9S_sL5xiApZ3*=Bn!h^*N z`8zy+YDo5rqUXA2!Ene?)7M$?bbPj4GFdlGG&X(xP&p=&s_;l3-&$e78~g2opmnqv z?FOcGn#t>c(T5isjfYuw$9nBVYI#n9eG=QtM#6~H3sEUeXF{k0#yvBD`h*^VWKQ(Q zMM0!^?{&M15>{3oy@#^XS2}*$(z1zpdCa*IHfcEp2Ff#?s2}5?T+Z?6H$iLew#OMF~mkIky$#H-*VN#x*%bCmu&h=_6-G3zZt=(sx^{gVWdDd z)h!a;o=V0zIv>jPzITnma%4hzGD<&hFdRZ5s^wsnatUkW($ItsA-k=;86>CZ@2=B~ zL1&*uk}oO%cIMenqp+?s*CodoVMP+NjxSvSj`a`PhTQUuC{y!Gi4JfjgiVvl&ry%_ zp$U#c!n3#n4L{=6q`e1w3pdH0#g(K+=4H(*JG?Pa3U=N|=uo}qrJBINl1nb~qjp$P zzC4F}H_JAF3eOD}BtnR%=dH`_&23fr3E)0Xt$987YA^32NX zAK$?;uJJi)LGnsmAeH%m#c*i;$t7o0^Gewd zn|at3+i-f_n>u%z+ost7tp{Uc~^0IboT3uzcJ| z1~4HB{IV?IM&-=BD8}^;l{kbw_MU>pIovsS;Q8DhnKsrL7TNt;lIa289ViK|qO~kh zC=W7l#uQyPn6vCz*ji-z8KNHT>XqM-Qd4wuKjw}ih9`LLCenMJ*U=>lMF1l@XUY)_ z_%_3&@{qGR5d3A0lPhau%U@1`=hUQHAWD~LWjR<(jB%%6rO*F?p2n8yp-O6m@GFn4 za=>|rNK1KbDOE9Abr;c% zko3LD)!OB`!$3k1i4KX_MqR-K%IfPbz~OP_#q-9rhP-S@D?#J}?Q$}hA6Ql)!o%4~={^X8XQI7L4X4?H z8rDqN)=c?Z6W6%^C&Sdb=;_@UsfVH2vv)ruL+zK}zm`brS_IJf9e36gh&o$(0kQsS z#!L2P9D&hYes=PU(XUK)9RD1aX0JZS$gBQ^fOMVySvaWRg7_p)6WDh)h8cPApj_l{ zZcze-5Te}y`yc!Yo_oKHVQcp`UIfFQ+*`-ut;jw@ac&8l!U34pXI{?ROgFk7@$)w> z_Z$9&!Jfj~Csa4+&vb{K$77EVAduuR9*h?#U4AxwK?lA&(v>`>jE3LTX=)3otP-iT z3CJHfmlKROswKp$6h7l|hU1pkcYY6hqHw1fUKA75m)~n##QLb}F19D`m*XLpewCGX!!Db)aktiSQLOr?%RW#^rf(9b2 zy;G4^_+b|Xk*UqJ{c#tZ9mT!&=q%4OaI!c`snbr)R<}m+oXI}mO*-naH$ocCMTnRQ z_S5=hN3s|j`%A7~;!X>AYuWO>?6-tY)T{G{qrzyO(Iq1 z59S)JA*FGph_-zQg;>WLwu1=Nv z8@hWar@zv1<)wk-+lTfi9e$}kah_#I-oJc;95rfhh)+1X6}zVVPhj7YU&vSvhTkCX zF+bXTLbjEK_P5J_KYzQAdx-r8=S5N=`pohq0=B&L#l%-6dL7MC@u+`SmULEmt>gXb zQ{{XUJRk}I2!dcPe5Ck5z%8KuLHEqG0efeT<&}?iW}FMR!N&6EW33!&n4evOeN!ah56lUMSsonC#w_ew*(j=SX zLf6LF^Z$IT6em@?@X;0>0KIpHwBHU`LSU0@Cz&0Q} z%{>=FG6j#2!3!Y9+rGRYxS(`?Ipo0=dvu#t`JN&EaB%I1Q1}9WfG0G9V^CHWs*14-j$h3aVOAS zbEd$FyJA?*vH%U>?R5T{s$?Fdy!NB*Rgxu6J>EDSi)P)ignRGE7m}z(LfdUbm5H z0o=8@tH;p{_t6Yr@dt|W_fCoT2*W9vyp^^I*UCa_W~MViHt&9MHLm9e-#0o&v}8)^ zk+@V9y@y-~%&YR8B_QoAIpsN*lp~!nCRw?Z(wz}F2_~DiB9t5JBiCYF%ldgz6u5Oj z7=^JlEEsMfvkDzE0gcXlnz;QuoEc-EjlaQrd@lovgU8*zHI|=Oj>(J_5 zkh1|5uBA$rh;q-*+AOYyqH zto`lmgGR}@_ohY-=MDNrEh2}of6;k_^|wtpejj}mxf@q?+>aN%r^+=+{$-gVpv#JR z)z@0nnVI;3*)c3{$BH0R`5mj*VZV}Ntu=0lKvVcYbCzM>hHtJlJdU-dSjN;6M%B_h zm6gdBUp>9kDWxN37HgDYU#rIL*ERJryn=|5o2kF@Rf%9b{w#FDMv$_i@>QzfO9qDU zJzTLS_)sW?=`2OKjxid-3x}!C+LunS*7`!jgieDUuU0_Z_A5#>rqt4 z_AMeKCReHQ8pfVIK*Ev`5GrNfd;h*K@3pIouRdheAfdxNS?WW4Lg*$Cj3}a$L;ynU zgz7Tc{MDXTd5lqQAaZo;o|Ye2+uXUJe!$Q<&fSd|y%Bo#Pv+^WvJ!d*5A*bZl%$LC zwg}=iMy+P13q1FnzQyut8Y;&COj_ozJt;oMuDMevXyw#&FgnKpk*P?^-dg_VS<2py z?2MkGKZTAZRBm39(x{tB*`Wq9A}j% zJ}*f=+Qb6Ip6j-3lSm}{(8}uCly8|xl79jo|J<9s90ccd%;N)|ks(KI8=K)YM6nE- zX2!H8XBN$@I{gmRNM`P6@j2Vy-nivt54VToA*U|!Qc;vY5OtCf%;?ZNpIh}Y=_ncD zcsUdYYLmU^ezX<+al?o=a2C<3_vGHQu8nK(1#R&)7G!qn@GIh?zWlYA`qIxp)ua90 z`%sR+TEeQy8!DFdNNFTXHffT1hT~R>jy1j{-2#7->u4U(YYe8FFfCiE3f;q*gSWu0 z=ER+iv|zMn`DLE0CW7f5_Rz|Dm9+0oxqwz6&i9RaJA>ZMM?sF^Bm zSoAk8xENG8|4EdF3A3d~`<^%vspX}e3g+wB+aLw&DcjA~zn)6bp%<@uxP8(tLOG~b zTC@pY6k!|1#i4WL7*56Y_7;DZ3rwYax$0fy7f|X0=>Mb{(3rG|jlY5f;l)T!3V*C} zrb(uG%-yT_CikAO4wRROm3-?ny;O*5V^&mgtgHReU9W0F_?t1wXc}n+mJL4i>O=k; zl|Lvzi8^C0)S+iyz+>c4(bPpi@InelY#M--8a%C?|o<9-d!9|7ii+ex>YgkUyVYFG0syw70_mmlC24FyY zLY%n&Pj6aAPUb@F!-J-=&cuSlMYjxZMtj!UQpCw@w-9ggE~_oE+BCz$-;=ta--qXS zsJ99)3!T3p5B>Fw1pg#W{%D=>3!Ua5J#d`>x;9K7oO7QiFvd)U+LRr5^S9$KFO+Gj{h>y{Dl5^dLz}Hnb{U5 zhcXkAk^956W|iO7o+5YLll+PAF4HZdo7X>d=35?)01rVa>s!l@?&d0rCo|M<>dF{z z02j&a1bl1p5muVbZ`XkshKz*EZ{jG4mv=Lsjmkhf(dyxR(S#+q!?eitG~|py@b8}Q z^OKs^;m>@;)*n2lIzAjsvptLZ@e_ecq5D4hib?1eSR4*EYZ5`JuT_^kkADi z%6D$4=aCv5pr`!L#xtukad27(>?CQPUTP3Y$?!tHUjg^gC-}d>PEtS_K_eII zG92!&WLTE_=+P*jp_Y3 zlWMg`)d%br-4iJTcXI{Wf|g9b1~zonvMYg)|!ELxbnOIOF z`Dz1E1&TMFl>LsM8>J;~m2S+;c_-X%oWBTId};wBQ%dEsJ@h%mbn};4IE|g5i>QOY zM7FDLGO}Dr>EgEH!`{%>$dz&GddfzB?bda27&23$cDP9XFiOn;4<%}*1!L#fLe7TK z#td}N3QVhU=8XjYB2XD!WU1X+(eSh0(5pE1=EqjHx*;LRbJ9#LDHwX%(?2a3CXWxle%R2Tth|~2en3#1`DV>iCnoZ7eR*~$6Fkud_ z+k>at6*!#05$zg)z!L&5NL*ySK66N_8w4&+kJ2FVt80!NRu%}^n3m|_z#w{>lU5re zqE}=&Bca%uc#XQk;s6uwt2m{)#;q~cXWONMe$2(DfphMPjesvkzR~atGN2a9THY;a zvc^A%)Y+5JP>o-SHCEddj;P_%#||NGDGB3i=_`d^nWu~ax?`KaK22K79Re4TRleg@ zwLgWIhp_K%qAo+9PJ_R;2TvnePTy8v5nuGc9x%b$uk=}lIvQcB4O~-5hIhb!^NMm5 z$J&-v+RZ`R=6``*nt5RSP7O=?bzbNSEdSY8X&Eg?_wyzUHNk?7MITmGygtQt{fgm* zVnu^HAC^i2&>hVkauq+bNrGzeg$kes&%X3Vl^|4SKM}P<$Kp_#Ii(qKw6!9IFYP1O zkvUan27)K?Ig6j&_%%2WrVIhIg&a;XDIW`~Y&Ri)^i=UWRMv+8R1_oXOn*4$y)P*H zJloW)k-T!!WYki2sGjFLO!7*1l#{-R17-1s>v;13)nHiKJ66MrxV9)B#i4=@B@}9F za7x$P+|-D=p&Ae7hh*;?6_n~(M9$o|-reL6u(l(_ zW~mdvIMBQA()sswVibzhgr${hwwGW$wzx6M4e)|8B&tNFJlJ!CjaN?!jG0(N#yqPI zXD4QM2-=r2dt@KBGbx(-uI;63w~?=<2mMr7x%v@f&c5V*LEAfld+;?vBuOLtV}fC= zNa_I1De_8EVDjJd_bAR3u7zE%U4eLFy9Xx6_JB z^cb{n@N-Z~Nhv*FUj+@;BF}*%(!JcoRbuVB$@xD-HU7SSs{bskRx5&km3(=|q`$c}tr(eIqMIAo z$8CS2r@vV@t&t)GqM+tj&%&OhHLr*?ABjfakQ+CJZo&Vv($xzmWLzP@!1j|iMT7u6 z$ngGWK{LWJG4Vlph#QPd4u*Wlh9~2;7(Q8Dw`&Sz1nyYV^`pbabb;b*R`RN<@^C9>U2d|t>9e3{z```E$6Q-6u zO1rTS1dq?JnEmU&E&K&cysodSt%TkZU1^ioC6+Kxys|#UK^K9 zWhylE7&_$_FnH{5GowN6y8FlZyRClx9k9C^NMPEY_tAf5+0OSt9D66zu|S4|J~E&jSw!Df<K*Ub($D4YE9~~4^ zCNzrZ4wBPIVS=f)X^keUBmkKV@Imr-afK-5k^Sf#(2j{LSJn^#k33i~{BIf<4(#7x z;TPabF#rw*1Lg<`28N%sD}s|$Qvn0SChE%)ieQCrk2>gKEvz- zY|EHBp26Vnj?p(*LPC@=6a&5$x4OZ)g}Lv}jD>a8v{AjtA?paD`5EBxrszq4Se&fE z>vDtP>6M7z2&Yi1b(p_%7yD2J`^4F}(g{q6dbtPwnZ*Jw5@I*fpz{srdl^a(Tv@}J zos3?YPK@d%?&> z4lpQmt5aaEbQ+Ztx9~xlx628TQ=Y`WXho83$6+jDO3oqa6Y+jl2emt~UYZcPGTo$^ zda?D=_V1N}x1apn$1{-Uq!8WxyYlH3u)t^UIi;vLRVO`7jhK-wxZaxgXg-^hHLH_X z6@+vSw)~26=r4MRvZOi2u9ep;Y?CL|MZciiSD-9-Tpwy4#ewtwIXot-ly&Vvs(fSZ z9+H);`W+;~Ns*SF-MR$8Q07Z|E2sF6_kZ>t6c`x&e;fbNq98tjB;g9)|Cs)3EdT#h{x8#m;6Enp ze}zF3GU+8^oh>Qck4+#IRw~Mx_u$YG4v^6&VT^7#0}c MKk=D5|KDE!5B5b900000 diff --git a/src/xid/Presenter.java b/src/xid/Presenter.java index 0828a56..bacbf79 100644 --- a/src/xid/Presenter.java +++ b/src/xid/Presenter.java @@ -283,64 +283,146 @@ public class Presenter static protected StringBuffer processChildren (Node node, TagsDataById datas, String webappPath, String prefix, StringBuffer errorOutput) { StringBuffer result; - result = new StringBuffer (); NodeList children = node.getChildNodes(); + int childrenCount = children.getLength (); - if (children == null) + if ((children == null) || (childrenCount == 0)) { result.append (" "); } else { - int childrenCount = children.getLength (); - - // TODO Analyze IterationStragy if datas is a TagsData. + // + // Is there a TagsDataByIndex associated with the first ELEMENT_NODE child? + // + TagsDataByIndex tagsData; - // Determine - NamedNodeMap attrs = node.getAttributes (); - Node idAttr = attrs.getNamedItem ("id"); - String tag = node.getNodeName(); - String idValue = idAttr.getNodeValue(); - - TagDataCore tagDataCore = datas.getId (idValue); - if (tagDataCore instanceof TagsDataByIndex) + // Find the first ELEMENT_NODE child. + int childIndex = 0; + Node child = null; + boolean ended = false; + while (!ended) { - TagsDataByIndex tagsData = (TagsDataByIndex) tagDataCore; + if (childIndex >= childrenCount) + { + ended = true; + child = null; + } + else if (children.item (childIndex).getNodeType () == Node.ELEMENT_NODE) + { + ended = true; + child = children.item (childIndex); + } + else + { + childIndex += 1; + } + } + + System.out.println ("childIndex=" + childIndex); + if (child == null) + { + tagsData = null; + } + else + { + // Searching for the ID value of the child. + String childId; + + System.out.println ("child" + child); + NamedNodeMap attrsChild = child.getAttributes (); + System.out.println ("attrsChild=" + attrsChild); + + if (attrsChild == null) + { + childId = null; + } + else + { + Node idAttrChild; + idAttrChild = attrsChild.getNamedItem ("id"); + + if (idAttrChild == null) + { + childId = null; + } + else + { + childId = idAttrChild.getNodeValue (); + } + } + + + // Searching for the datas associated to the childId. + if (childId == null) + { + tagsData = null; + } + else + { + // Check if the data is a TagsDataByIndex. + if (datas.getId (childId) instanceof TagsDataByIndex) + { + tagsData = (TagsDataByIndex) datas.getId (childId); + } + else + { + tagsData = null; + } + } + } + + + // So, is there? + if (tagsData == null) + { + for (int i = 0; i < childrenCount; i++) + { + result.append (process (children.item(i), datas, webappPath, prefix, errorOutput)); + } + } + else + { + System.out.println ("TagsDataByIndex detected."); switch (tagsData.getIterationStrategy ()) { - case TagsDataByIndex.ONLY_FIRST_ROW: - result.append (process (children.item (0), datas, webappPath, prefix, errorOutput)); + case ONLY_FIRST_ROW: + System.out.println ("ONLY FIRST ROW"); + result.append (process (child, datas, webappPath, prefix, errorOutput)); break; - case TagsDataByIndex.ONLY_ROWS_WITH_ID: + case ONLY_ROWS_WITH_ID: + System.out.println ("ONLY ROWS WITH ID"); for (int i = 0; i < childrenCount; i++) { - NamedNodeMap attrs2 = children.item (i); - Node idAttr2 = attrs2.getNamedItem ("id"); + NamedNodeMap attrs2 = children.item (i).getAttributes (); - if (idAttr2 != null) + if ((attrs2 != null) && + (attrs2.getNamedItem ("id") != null)) { - result.append (process (children.item(i), datas, webappPath, prefix, errorOutput)); + result.append (process (children.item(i), datas, webappPath, prefix, errorOutput)); } } break; - case TagsDataByIndex.ONLY_ROWS_WITHOUT_ID: + case ONLY_ROWS_WITHOUT_ID: for (int i = 0; i < childrenCount; i++) { - NamedNodeMap attrs2 = children.item (i); - Node idAttr2 = attrs2.getNamedItem ("id"); + // Process row? + boolean processRow; - if (idAttr2 == null) + NamedNodeMap attrs2 = children.item (i).getAttributes (); + if ((attrs2 == null) || + (attrs2.getNamedItem ("id") == null)) { - result.append (process (children.item(i), datas, webappPath, prefix, errorOutput)); + result.append (process (children.item(i), datas, webappPath, prefix, errorOutput)); } } break; - case TagsDataByIndex.ALL_ROWS: + case ALL_ROWS: for (int i = 0; i < childrenCount; i++) { result.append (process (children.item(i), datas, webappPath, prefix, errorOutput)); @@ -348,13 +430,6 @@ public class Presenter break; } } - else - { - for (int i = 0; i < childrenCount; i++) - { - result.append (process (children.item(i), datas, webappPath, prefix, errorOutput)); - } - } } // @@ -725,13 +800,14 @@ public class Presenter NamedNodeMap attrs = node.getAttributes (); Node idAttr = attrs.getNamedItem ("id"); - + + System.out.println ("process=" + node); if (idAttr != null) { result.append (Presenter.processElementWithId (node, attrs, idAttr, datas, webappPath, prefix, errorOutput)); } else - { + {System.out.println ("basically"); result.append (Presenter.processElementBasically (node, datas, webappPath, prefix, errorOutput)); } @@ -846,32 +922,19 @@ public class Presenter // - NodeList children = node.getChildNodes(); - if (children == null) + if (node.getChildNodes () == null) { result.append(" />"); } else { - int childrenCount = children.getLength (); - - if (childrenCount == 0) - { - result.append(" />"); - } - else - { - result.append('>'); - - for (int i = 0; i < childrenCount; i++) - { - result.append (process (children.item(i), datas, webappPath, prefix, errorOutput)); - } - - result.append("'); - } + result.append('>'); + + result.append (processChildren (node, datas, webappPath, prefix, errorOutput)); + + result.append("'); } } diff --git a/src/xid/TagsData.java b/src/xid/TagsData.java index 458523a..cfc7b9c 100644 --- a/src/xid/TagsData.java +++ b/src/xid/TagsData.java @@ -114,7 +114,7 @@ public class TagsData extends TagsDataById /** * */ - public void setIterationStragey (String id, TagsDataByIndex.IterationStrategy strategy) + public void setIterationStrategy (String id, TagsDataByIndex.IterationStrategy strategy) { TagsDataByIndex tags = (TagsDataByIndex) this.get (id); diff --git a/src/xid/TagsDataByIndex.java b/src/xid/TagsDataByIndex.java index 73a34f4..e8ee8d9 100644 --- a/src/xid/TagsDataByIndex.java +++ b/src/xid/TagsDataByIndex.java @@ -8,7 +8,7 @@ import java.io.*; */ public class TagsDataByIndex extends Vector implements TagDataCore { - public enum IterationStrategy {ONLY_FIRST_ROW, ONLY_ROWS_WITH_ID, ONLY_ROWS_WITHOU_ID, ALL_ROWS} + public enum IterationStrategy {ONLY_FIRST_ROW, ONLY_ROWS_WITH_ID, ONLY_ROWS_WITHOUT_ID, ALL_ROWS} protected IterationStrategy iterationStrategy; diff --git a/test/xid/test/Test.java b/test/xid/test/Test.java index 00fa03d..ee83ebc 100644 --- a/test/xid/test/Test.java +++ b/test/xid/test/Test.java @@ -52,7 +52,7 @@ class Test - + String htmlSource; StringBuffer html; StringBuffer errorMessage; @@ -192,11 +192,53 @@ class Test System.out.println ("datas.setContent (\"identity\", 1, \"prenom\", \"Christian\");"); System.out.println ("datas.setContent (\"identity\", 2, \"nom\", \"Tronche\");"); System.out.println ("datas.setContent (\"identity\", 2, \"prenom\", \"Christophe\");"); + System.out.println ("+"); System.out.println (""); System.out.println (" "); + System.out.println (" "); + System.out.println (" "); System.out.println ("
    un nomun prenom
    un nomun prenom
    un nomun prenom
    "); System.out.println ("=>"); System.out.println (html); + + + // Populate attributes of Test 03. + datas = new TagsData (); + datas.setContent ("identity", 0, "nom", "Jemba"); + datas.setContent ("identity", 0, "prenom", "Epo"); + datas.setContent ("identity", 1, "nom", "Momon"); + datas.setContent ("identity", 1, "prenom", "Christian"); + datas.setContent ("identity", 2, "nom", "Tronche"); + datas.setContent ("identity", 2, "prenom", "Christophe"); + datas.setIterationStrategy ("identity", TagsDataByIndex.IterationStrategy.ONLY_FIRST_ROW); + //datas.setIterationStrategy ("identity", TagsDataByIndex.IterationStrategy.ONLY_ROWS_WITH_ID); + //datas.setIterationStrategy ("identity", TagsDataByIndex.IterationStrategy.ONLY_ROWS_WITHOUT_ID); + //datas.setIterationStrategy ("identity", TagsDataByIndex.IterationStrategy.ALL_ROWS); + + + errorMessage = new StringBuffer (); + StringBuffer source = new StringBuffer (); + source.append ("\n"); + source.append (" \n"); + source.append (" \n"); + source.append (" \n"); + source.append ("
    noidun nomun prenom
    noidun nomun prenom
    noidun nomun prenom
    "); + htmlSource = source.toString (); + html = Presenter.doXid (htmlSource, datas, "", errorMessage); + + System.out.println ("----------------------------"); + System.out.println ("datas = new TagsData ();"); + System.out.println ("datas.setContent (\"identity\", 0, \"nom\", \"Jemba\");"); + System.out.println ("datas.setContent (\"identity\", 0, \"prenom\", \"Epo\");"); + System.out.println ("datas.setContent (\"identity\", 1, \"nom\", \"Momon\");"); + System.out.println ("datas.setContent (\"identity\", 1, \"prenom\", \"Christian\");"); + System.out.println ("datas.setContent (\"identity\", 2, \"nom\", \"Tronche\");"); + System.out.println ("datas.setContent (\"identity\", 2, \"prenom\", \"Christophe\");"); + + System.out.println ("+"); + System.out.println (htmlSource); + System.out.println ("=>"); + System.out.println (html); } } diff --git a/test/xid/test/Test.java~ b/test/xid/test/Test.java~ index 16aba38..75c0380 100644 --- a/test/xid/test/Test.java~ +++ b/test/xid/test/Test.java~ @@ -47,17 +47,17 @@ class Test //test (); // - TagsDataById datas; + TagsData datas; TagData tag; - + String htmlSource; StringBuffer html; StringBuffer errorMessage; // Populate attributes of Test 03. - datas = new TagsDataById (); + datas = new TagsData (); tag = new TagData (); tag.setContent ("Superman"); datas.put ("name", tag); @@ -66,7 +66,7 @@ class Test html = Presenter.doXid ("
    a name
    ", datas, "", errorMessage); System.out.println ("----------------------------"); - System.out.println ("datas = new TagsDataById ();"); + System.out.println ("datas = new TagsData ();"); System.out.println ("tag = new TagData ();"); System.out.println ("tag.setContent (\"Superman\");"); System.out.println ("datas.put (\"name\", tag););"); @@ -77,14 +77,14 @@ class Test // Populate attributes of Test 03. - datas = new TagsDataById (); + datas = new TagsData (); datas.setContent ("name", "Superman"); errorMessage = new StringBuffer (); html = Presenter.doXid ("
    a name
    ", datas, "", errorMessage); System.out.println ("----------------------------"); - System.out.println ("datas = new TagsDataById ();"); + System.out.println ("datas = new TagsData ();"); System.out.println ("datas.setContent (\"name\", \"Superman\");"); System.out.println ("+"); System.out.println ("
    a name
    "); @@ -93,7 +93,7 @@ class Test // Populate attributes of Test 03. - datas = new TagsDataById (); + datas = new TagsData (); tag = new TagData (); tag.setContent ("Spiderman"); tag.getAttributes ().appendAttribute ("style", "background: blue;"); @@ -106,7 +106,7 @@ class Test html = Presenter.doXid ("
    a last name
    ", datas, "", errorMessage); System.out.println ("----------------------------"); - System.out.println ("datas = new TagsDataById ();"); + System.out.println ("datas = new TagsData ();"); System.out.println ("tag = new TagData ();"); System.out.println ("tag.getAttributes ().setAttribute (\"class\", \"lastnameClass\");"); System.out.println ("tag.getAttributes ().appendAttribute (\"style\", \"background: blue;\");"); @@ -120,7 +120,7 @@ class Test // Populate attributes of Test 03. - datas = new TagsDataById (); + datas = new TagsData (); datas.setContent ("lastname", "Spiderman"); datas.appendAttribute ("lastname", "style", "background: blue;"); datas.appendAttribute ("lastname", "style", "foreground: red;"); @@ -131,7 +131,7 @@ class Test html = Presenter.doXid ("
    a last name
    ", datas, "", errorMessage); System.out.println ("----------------------------"); - System.out.println ("datas = new TagsDataById ();"); + System.out.println ("datas = new TagsData ();"); System.out.println ("datas.setContent (\"lastname\", \"Spiderman\");"); System.out.println ("datas.appendAttribute (\"lastname\", \"style\", \"background: blue;\");"); System.out.println ("datas.appendAttribute (\"lastname\", \"style\", \"foreground: red;\""); @@ -143,7 +143,7 @@ class Test // Populate attributes of Test 03. - datas = new TagsDataById (); + datas = new TagsData (); datas.setContent ("words", 0, "alpha"); datas.setContent ("words", 1, "bravo"); datas.setContent ("words", 2, "charlie"); @@ -156,7 +156,7 @@ class Test html = Presenter.doXid ("
      \n
    • a word
    • \n
    ", datas, "", errorMessage); System.out.println ("----------------------------"); - System.out.println ("datas = new TagsDataById ();"); + System.out.println ("datas = new TagsData ();"); System.out.println ("datas.setContent (\"words\", 0, \"alpha\");"); System.out.println ("datas.setContent (\"words\", 1, \"bravo\");"); System.out.println ("datas.setContent (\"words\", 2, \"charlie\");"); @@ -172,7 +172,7 @@ class Test // Populate attributes of Test 03. - datas = new TagsDataById (); + datas = new TagsData (); datas.setContent ("identity", 0, "nom", "Jemba"); datas.setContent ("identity", 0, "prenom", "Epo"); datas.setContent ("identity", 1, "nom", "Momon"); @@ -182,21 +182,54 @@ class Test errorMessage = new StringBuffer (); - html = Presenter.doXid ("\n \n
    noidun nomun prenom
    ", datas, "", errorMessage); + html = Presenter.doXid ("\n \n
    noidun nomun prenom
    ", datas, "", errorMessage); System.out.println ("----------------------------"); - System.out.println ("datas = new TagsDataById ();"); + System.out.println ("datas = new TagsData ();"); System.out.println ("datas.setContent (\"identity\", 0, \"nom\", \"Jemba\");"); System.out.println ("datas.setContent (\"identity\", 0, \"prenom\", \"Epo\");"); System.out.println ("datas.setContent (\"identity\", 1, \"nom\", \"Momon\");"); System.out.println ("datas.setContent (\"identity\", 1, \"prenom\", \"Christian\");"); System.out.println ("datas.setContent (\"identity\", 2, \"nom\", \"Tronche\");"); System.out.println ("datas.setContent (\"identity\", 2, \"prenom\", \"Christophe\");"); + System.out.println ("+"); System.out.println (""); System.out.println (" "); + System.out.println (" "); + System.out.println (" "); System.out.println ("
    un nomun prenom
    un nomun prenom
    un nomun prenom
    "); System.out.println ("=>"); System.out.println (html); + + + // Populate attributes of Test 03. + datas = new TagsData (); + datas.setContent ("identity", 0, "nom", "Jemba"); + datas.setContent ("identity", 0, "prenom", "Epo"); + datas.setContent ("identity", 1, "nom", "Momon"); + datas.setContent ("identity", 1, "prenom", "Christian"); + datas.setContent ("identity", 2, "nom", "Tronche"); + datas.setContent ("identity", 2, "prenom", "Christophe"); + //datas.setIterationStrategy ("table" + + + errorMessage = new StringBuffer (); + htmlSource = "\n \n\n\n
    noidun nomun prenom
    noidun nomun prenom
    noidun nomun prenom
    "; + html = Presenter.doXid (htmlSource, datas, "", errorMessage); + + System.out.println ("----------------------------"); + System.out.println ("datas = new TagsData ();"); + System.out.println ("datas.setContent (\"identity\", 0, \"nom\", \"Jemba\");"); + System.out.println ("datas.setContent (\"identity\", 0, \"prenom\", \"Epo\");"); + System.out.println ("datas.setContent (\"identity\", 1, \"nom\", \"Momon\");"); + System.out.println ("datas.setContent (\"identity\", 1, \"prenom\", \"Christian\");"); + System.out.println ("datas.setContent (\"identity\", 2, \"nom\", \"Tronche\");"); + System.out.println ("datas.setContent (\"identity\", 2, \"prenom\", \"Christophe\");"); + + System.out.println ("+"); + System.out.println (htmlSource); + System.out.println ("=>"); + System.out.println (html); } }