From 81e487649aab8237d1a7aafbcec6ca5b9490b44d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Koivisto=20Ida=20Maria=20Hannuntyt=C3=A4r?= <ida.m.koivisto@student.jyu.fi> Date: Wed, 26 Mar 2025 11:19:26 +0200 Subject: [PATCH] =?UTF-8?q?henkilotiedot=20saadaan=20luettua=20ja=20testej?= =?UTF-8?q?=C3=A4=20lis=C3=A4tty,=20tunnusNro=20ei=20toimi=20oikein?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- kerho/bin/RalliJava/Henkilo.class | Bin 4468 -> 5322 bytes kerho/bin/RalliJava/Henkilot.class | Bin 3503 -> 4445 bytes kerho/bin/RalliJava/Ralli.class | Bin 3578 -> 3578 bytes kerho/bin/RalliJava/Rallit.class | Bin 2645 -> 2645 bytes kerho/bin/RalliJava/Rekisteri.class | Bin 3796 -> 3794 bytes kerho/bin/RalliJava/SailoException.class | Bin 417 -> 417 bytes kerho/bin/RalliJava/test/HenkiloTest.class | Bin 0 -> 2562 bytes kerho/bin/RalliJava/test/HenkilotTest.class | Bin 0 -> 1891 bytes kerho/bin/application/Main.class | Bin 2893 -> 2893 bytes kerho/bin/application/RalliController.class | Bin 6216 -> 6212 bytes .../application/UudenlisaysController.class | Bin 885 -> 885 bytes kerho/kerho/nimet.dat | 4 +- kerho/src/RalliJava/Henkilo.java | 96 +++++++++++++++++- kerho/src/RalliJava/Henkilot.java | 56 +++++++++- kerho/src/RalliJava/Rekisteri.java | 3 + kerho/src/RalliJava/test/HenkiloTest.java | 67 ++++++++++++ kerho/src/RalliJava/test/HenkilotTest.java | 44 ++++++++ 17 files changed, 261 insertions(+), 9 deletions(-) create mode 100644 kerho/bin/RalliJava/test/HenkiloTest.class create mode 100644 kerho/bin/RalliJava/test/HenkilotTest.class create mode 100644 kerho/src/RalliJava/test/HenkiloTest.java create mode 100644 kerho/src/RalliJava/test/HenkilotTest.java diff --git a/kerho/bin/RalliJava/Henkilo.class b/kerho/bin/RalliJava/Henkilo.class index dceb3beb503b8531c32b6e785c535ded2a34928b..075e1ad374b89ab47b3251c0a0ddeefee73d482c 100644 GIT binary patch literal 5322 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 Dp<K~B literal 4468 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 bcvFqPQsb}H_#6C=67od&d;Af9!iIkXOe*tt diff --git a/kerho/bin/RalliJava/Henkilot.class b/kerho/bin/RalliJava/Henkilot.class index 4aa4aef19a48b842e56e094154c23f78445581a2..75edad3a3371181932eeee1c4f7d3166892c2a67 100644 GIT binary patch delta 1974 zcmYjS`%_d^9RD1+ckgxCRUWhA1tol-;G(3KPD?hU4kiXTqYk>5<`u7SWm$B0G3?=5 znU-m&w<joSVymVpJ{AL$P}4Gd*lYTs{t?HCK4-;=x%ZyO_jNw!`~94A&*%R$$$j_V zzUu(y;m;m-NQn!K4z*e<ZEIsoG{)D=MjA>rY!b-YY;H5lT4Q#oY(>2p4qFiojRLtT zvE5R(*bZ5h;VrGP6|snAHoMV)%^rBrMAzb~kyhm;wQg8wmfEnuxc{~B5dns+ws^1= z3k3AA)fTI=!<LSy0NgOq>cKX=Ea0-XwwfVIeZ!GLX1Jkj*@n$leXP8sPMU7_;1#?| z)A~j;vLGg)6jzokaw7+svf1H598&}~sawoQ)N(`M4G;1$UgCVqgI#!AKx;IkH3T7$ zUM!<pSelJ=lnQub!wC!5*v+;;n$2zHJlgZfgp~`3sD}N{cBR;>pxuKRI3QtHI)!OI zvCp}sOq-zNBLTI^iZr%J9G`elk13<jfx{X)oif!|cLZyR!HPuOD8Nw<j>-JE8?0Eh z6^)t=gr9@YJUD?R6i2KkI~ubhEw&V&^x$)N1x9T%SzNO*)FLCF^58|R)p5pIs?PPQ zXqTqvJopmlo&9Q2sg53j>?+%CGR;CW)MU5VF|#o6q{Mg0gJPLF#f&tt1Ub%qB`1^R zYP7;lcBqBfO0(LWC9Vn1OjlmIhAU2^Yqo0;H#OXFj=B8emUGY5Rq>6EI|3P^ENnMh zv6&mqn2zrW|1lK{g^nKt@+$1YC_#{<u~@5F_&D*V)c@$TYg5F}&Sh<q@~c3RbKh0u z((t=L0fz<7Wc?|jIji+~-U2Ad#V9<1EEGD2^^o@&j70#2D93a>>-a`JoLGU;Sd1bp zfghEagQb|yaV4s-1J!89GH15?T%5Jx37Nnnq%au;^nn<J%GkhFe;+mi)%_?5miD5o zMg$ZQQ2Sv8`_T}b(F?m5p@1ua`GzZrmVjnxw=pX_VrWUkIxx-9(vxV*EI$U?82!iz z_TsgGZs^kB_34J5jAN&CeY0a|&~V*GrJU?eU_n5UQ#~~`l!1V1D0kpC)PRyemZ2Ex zNzT|MQ6<$%KMI1Seb@u^V$whlX*~@gZ09D%;vGIfCK7yVsmbMRF1&1O5!bMasvynl zn7K8WMJCl?Ev4)Dtmppg7-$1dlf}K*gmH9R4xQ~)7|3HUN2?iu2Mj%2D#(0h;uQVX zq+qPWyVwgCBhSHm)XEjTtjknJIUQueU*a+f0RS(+Jwz0m2BE=By(Jo|Q?CU)#AM1I zz_*f;2gq2+&g&iGddf%->0CR;`P)5R>~^$_$vl_-jPd?`!TdhFFB5cdVESeF@@HS* zl8@3cnmurU_t`=2>5vo2D2X3}!#$A?X}Q#D)DQGSu!0{{`LjPv;^PEHS6{@ZrAc%p zv2eJ$BulEwHIJ*UP=9<Co9-EMz^2<!<Vd#NekykQDctFo^PLxw$Ue<z>2u?10!4lw zD;x;8DE6t!`aXOCP-{p*5@&a*!l(L^s5n0KR|4LEN;ugUXpjPUF@emKNYX??l(f*f zqb%}#IXcnB{uD2X9`=v&5W#rvvx8Pg;xz0+HjYwsf`_CVr8tSF$)Nz9o+BX^;S8Q9 zqH3IFxbrOQ1(K(SWVwXRxPmQ&+QxM6Awk+X??gYZx@+_v<f1odbraWdCq=1E{2?&G zxJ)~6`Ci16tORc@DtZ|pjSxEV6<Ndo87tGrQ99x5WzealPcvqcuP&b4HWFO2%f-cX zlItpEmyj_$k~CWieTYd&({PQvk#s2_?^b|!jTC6e;X8&O|5Fo(=&DlTtn=nA`kLNp l1U<lBuJA40Z>QStMvU*K#`jX~Pxytl@}j+u-|z>F{{Yiry8-|J delta 1039 zcmXYw{clrM7{@<n?d|RDZkukix~^<?K)10nCliM2Vxky~MDQ1gVJeX8cGs15>uAeh z3Jzg&pyHIH6G5lQ%Y2D1ASua~=+7Dxe^nCy6XSetS?;~h^PKN_&iDDA=bZb`#vc=* z-~U_r1$dV4ZifnfpUH^6Z*+z07`5pktB7^&(aE})8rG>m=aCRiL_ITMQzWbimE3%; zTyaaqoChDXDS5Cp<&-OqGgc^uP*iLZY_OQ(q{#_I^r$oC^cI|nZ14VQSv+p@Du;r+ zuKx=3hkcBCRHtp;WJV{<)B$hhTQ+Aor0}_=Qjl3i<KA2@?>I@Pkk1u!6(^Z_JjmM$ zBkz{RYGu#cbg?-^8}Hb>%QK=j>sI!;<+77?^=oFg{=sb43udcq`=b8M><e7xipi&1 z1=H%P?g=iXJ_)j<s8_ucxpBAh*oadJ@}=+`$hjlMa;2D5LB7&aYqPqccUT+MvOZ{a z`@d1N=~t{aeZ$(W0{U-jXE=eMhp^Z{1FgC>R0yYdm=2P3(oL6M4E@`_jR<|D*iM=q zJV8HCNxX+Ar4a)xFsOg7|6UJ7I@QbCiEMg)Sn?r@k2>+~iL2Ci-=!gOorYD0hY~Be zaF4NH1&t;8ev%{~kBE(khY@T^Xkk?U5!o`6<EWgJ5UM|g&XoCEtEi!S<oB-9B)+h3 z-M_f*Gybhr#^syr5ij3l+%JJ=Ces3!(}I=L-ne{+<Bii*cKP~^Wj3W_MwLt^AZW~3 z;SH$Huq*D3tDKrORLn?M*?n#8{xac=afdUF=VWoZajwezGSM0o7mf>p-WIuoayRDW zoEP|*%i<qwbCkGjV}c-)L^(#Y+|70>(&6K5kt@~13AS-k`aI3dAg6em)9jXJzrY#x z3*`{!aF`W}IY~b&&w1v#AZ0E}q4&8W(M_}vBNy26dd7P)hm>5B`4;JDltszv5RuJ- zd?1leM9lG_M1EdkD~AbSJST->qO3y(^RoO1moTJ2{d&|Xqyq%jL{q>-n<$f}2d{!h u*Cf#p{8B^9&W|LuPV_B`Z;=|GiHgr__KTXmR<qYdIe35PExzVk;{OBnaoS-3 diff --git a/kerho/bin/RalliJava/Ralli.class b/kerho/bin/RalliJava/Ralli.class index d00ee8801a7c6a95ab2a078af392af1c2060eb2b..0fc36168a0b480ec791a2e1cd74b49c0910e1254 100644 GIT binary patch delta 17 Zcmew*{Y#qT)W2Q(7#JALH*$R91prGI2VwvK delta 17 Zcmew*{Y#qT)W2Q(7#J9wH*$R91prG^2W|iW diff --git a/kerho/bin/RalliJava/Rallit.class b/kerho/bin/RalliJava/Rallit.class index ada51a5827284973604ea60f607fb2ef501aed01..7285af94649461203393c4eb58d48e09ff02056c 100644 GIT binary patch delta 17 ZcmcaAa#e)m)W2Q(7#JALH*)xL0RTi;24VmJ delta 17 ZcmcaAa#e)m)W2Q(7#J9wH*)xL0RTjl25tZV diff --git a/kerho/bin/RalliJava/Rekisteri.class b/kerho/bin/RalliJava/Rekisteri.class index f50f040b8d1c22eee72461074bed396d551ddc7b..129c925b531495b15dc3a1284d45aa2c3ee93dcc 100644 GIT binary patch delta 1242 zcmYL|T~JhI7{`Av?Cv>x_CO3uaU=**gawQyj7C6c#$wVzv6ztpNf%sUZTZ{<AqB!n zD-l25KGcfBOsuR#>m*z>UN$w;MPuG};bq=6-A2z@nQ6|<^FAN{=Y9Uqy#I42|Mz_B zmw%Uk0-j-c(V9<J`TAOV<MTT$T6o#!71|V`kw_vLiM$kv$72d#>Gtp*3q?hc4)z(m zs>nJN8HrTJBYoYKEn|sfwAW@o5nbndJkVuxfT%v;D^cBg##h}C<28driZ!X8Sbyd2 zp;%wCB{>w0NL!pI6~=&<iuZX_`fQ%2I$IbH*bFkHmA^XN<yD4l>ew3MFk=Rzip<o7 z!^v2@vMH8G+PuyYz2CpFaGXhl2}Sn*fbGfXP$bzuWb+17`ij4#alj(RTQ<i%0{#?% z5aYaU^A7I{rJhJ)S9CO~NG}bydE;kn9wk4UG^BL{r)|z~_U4*Ep;B6JHmU+&^0mQN zy4MJ&4{}XkFy?$$O}^8$rW0ILq^Uxao4Ug+^SO#*J!cdL3~nh3#4XTw%xH#<k4zqt zZymO73^u5T_3_{ie<3DCdfa+M-w#&#!xELHqFQUK|0#*8B-){BQ@KB_di9(x2vr4N z6sj4Z+I3r~cx`KiOY<g|rdBb{j?eS-nNa;?s}pe9BUS*<y0kh*Dl`P<h2@UlrM=t( ziIrNr<G;aPmrf_JdKwQ-vDpV*deW=S1)}9Srb};4P_jAZGW{SW#|vE&<xbEgSz|fY z(j+5_8he2f$6n&7;x;WcA%Qs|mt)Jk=`~I}UdEd#m=lVND}PLzD#t8$IXS;_-aD$z z)k&vPlNQL_DGAwWR^~3s`<bdqHOs^K$Q5zjph9db<|OT8u~(8E6tRzuqU16nRMJTm zU2G9K*K?3<bn^l|?4noN`UKT40vZrI$S6Zhkl+MKPBF{}qS22fdx<fwa)j#~<(7!+ zHk16!6u)tdyRz9mrkVUpB>1;TF2qTd$BbGp{wAi>7G_lgr&SYY)o#wIHo4Xj&a)yB zc~s7!B{EeD?~y0_WvM#eCoGSit2PTZOgcrXoDaqG3FUt{&lC8C_<b&j7ZCdQxY#MK z!LPDW4Yi`By8<nhmY|TT;Un3@5^A}8BDjzc%3#jJ2_=h9`Ao*m3k_QcJiuR){O6LH zAh05f1`RIjip<B<W!;pSmvvZXjl=pC=~ykT+g3oDpbWV}8EmkG_ZM<O8dq45bFIYR XNbTE{y`Hi+_+BdBU-<(+vV`*=NN5y; delta 1218 zcmYL{TTql`7{`Avd-%Tn_G2T2iBCn=1UYHQFm2<eB-7-CAvU80B8sbEENmQ>h0u)k zlxP`LuNB#mis+ywSYJU?(@fJ$Q#T!Nx@xAIF1qNZyNaG&nd#zt-v4uYpa1i{{~wBf zDz?7)cky%JZa$r}raj8imp$9_T5Osrw%E;Hn>P08e>|)G2RLZZp-a4lo*0Mp9o}30 zoi<$@(H-7$)vd?9kw6a#gI>i7-QZoZ&gNk@DU5++yf2mLvrzQg+)gB4CJx#p8Pb1y zBbA+*%!thvwgwsHn88s+s3$fOs~Jwk6E#iop_I*|9M}7N>%(K5Fi0!%|1W4vbtPk| z{-n)GPU&f1`SwAJ9?sf~X9)PR1cHol-sTCO6iVH(q2{j9l)_U{*_Ijql+9|2^T|P4 zOL^Mn8J@i!@`shWsB4Tm|9f0EcwcuLl}3^)im3|yy-}pE8K>62YjRCdaBo*%Z#?m( z8y<+odt*aGv1nMC%qwzK*yKaqYF2qaR+Q;EbB$Hn)ZgDbJYcY(ubO9bExg#=L@q0_ zbVJ}SRiIA>cKFs{Qlh^TR4%AO&@DP*ZS`#uuQuyVT6Jo37X4z?s|M`^>jKTPMlPsU z{Xnqn<_#{pHo7#)x6APg&=bM>bgSccd9cOtOM072t7BwcL#i@vwc~SXug(;Sm0Y{y zn`ghvVaLCG8aGa{`473oJrQ%3uIfV5r7s$gXrZ~t07%NoxGt$`C*U$1wH#|9%_EAa zJxjS`FYuV+3wB3?Qsx9*PA_sM)A+cPiDYI<%{j%TrJv83s?e-<xiGynl{q5j@}!CE zq*+2cB_KOZ%G^15SW`8sCV5dWMWVWSHi+GWnWmLI_DZmgwX{>lekwV@MmnhFAQ58R z$zit9$vvX-`$SKB=#{DjM?}{N`WU8PR5>7A2Srv%G$~$`=xdBHBSOByQ9j}rpK+Y8 zM19|q=0{HOtH?C{JE!@RaZ$)QRm6D}7F@-ciike9a6vUPp>{H<TI5<sI8PADyr_5= z#WU6YJjW{8FHdded7+*|k*ehdK_1qs3Z?{kh4NoQ={9^q{0}Y(@(canc<GQpgRf<a zsO)J9uNEq#B_O1tyv!?DLam5br7kFha%C&26G|4ZGcDuZ5E`}+xKaP6#NU$082%+$ zG+;2Jt3oAeM(+r%${UqgW3X;XI+jx_^<>CbKV!%Z%AnK|+HXsL4zs)?XMy-vCHFzr T&SmX&`J2cbCDQnWMV$Wt{h$y9 diff --git a/kerho/bin/RalliJava/SailoException.class b/kerho/bin/RalliJava/SailoException.class index 0bdb65f2b5fe49194423f15a4f4c27615f3df2a4..81ebc6b05318672c5e1f228aae3dbadd050095b1 100644 GIT binary patch delta 17 ZcmZ3;ypWmW)W2Q(7#JALH*(Bm1OPl~1{(kX delta 17 ZcmZ3;ypWmW)W2Q(7#J9wH*(Bm1OPmx1}6Xj diff --git a/kerho/bin/RalliJava/test/HenkiloTest.class b/kerho/bin/RalliJava/test/HenkiloTest.class new file mode 100644 index 0000000000000000000000000000000000000000..1a7a07ad49856e879a24c606d1fb2ee6be817dbc GIT binary patch literal 2562 zcmaJ?ZBr9h6n<_J%o10D$V;`Tu_6MZApzwj;2RYM16rV1wTer!k|mqnxVxdXrR^s_ z^dEHkx!*heqKuvCbf(|>n>w97cXuJF1~ZerFX!BIp7We@&;9$~w|@W_#}9Et1Wqh# zrfDo_+gjSwT`zq{x5|cTuW}woOrU*BicHPgOyAqs(hHuzp=rZ1ysHAyfx$I_*sNXD z6NsW!MGFoIwB-#;U#e9$bZ1rDFm-`s-Y#h7n&udC9d5?FlHm&U<_|`YqkoBNSuY!| zr#rSWniV*{T(dl*qOTdQL31}O%l0(Suq|3^&)d#sdaFi&X&FN<j-)_G-9;E*0v%{o z&?V44=h&60RJflqiG3<HIwlo*RD6Wv0-c+>7s{>Gnq}48CCB!|pHJXpoQ$KFp6iZp zxUTMaDo)|FfU5bcTQ6#wNq{{A`8uO3o?}>>xrK$nHR<n+ich4!gtH&7g1!SFj*SQ? zr65}wfnyCchFHnoo&s5mmOQG7d4I<BQAzA=-CHs$MrJ%C{a;jZNha{{w&r@8c9)gG z#CBjrMFu<)Cl6Acj0_CEABKW4(%_#;E!*3gRn?upeo5d8CgK>U=-t3oOk#>=E1Fj* z=_IGC2|0t0k}TJ06*FMT^;ER7K5JVA&3j;YCC-S{@_2Tl$=UZYHi0cucwNN}++;03 z*9`Lj94z&C$TvA$H`irdzZ()ckFGlu9a-_TLU~cEhSlCC>0Y&ijAte;D_CICvO9I6 zc6{b`B;k1#ixN&tRdZZj!951vtV}Z#6A65Vl{l7J<aI1JZQIl}OT{WaC+cm@tm*fj zvycWJH4+f2<)q68D!!08R=g0S%-bUsk7b4uB-!y?$+%?ei7f4>0+S!6Jm?p>29ClV z*)>$j$9)-IHZ!6?J0QYrX0(Orm%oStwvwhiWHVz)2yDtCDarKBH-;JBG6h=)9-kD5 zl-Sx5D|XE(=yQhbTJ7OIl6~ZoB$r#H%yT_Qt1jwZ$u7DHRN=(&LZGiszhQ0LWj!7E z4T^P6D|oi^QUYYH{?tfZs2v!*qgh2$cl+|TU9MFdxeKFcVDo<mS6^23ChCtH^!M0r z*a}U|@}{pCo}Ozv1Y5zjK(=YQjgO^@w(h3ba8v%Jok~3xPf}-Q<e=bd_7}m_&Rdr5 z%$l<Cxp90eaPB>BnnfGOcLJwAtjgCXpay4{@TgxHEu8V;;Wy58nxo*@GV}(@Z?bNX z;8%))qd3g38Ypl)!WCN~r4h7+TJ0RAp<iiK*51tT=y>>s4K~@?df_#?U+v-q$JB#x ze{onYq~t1R-B)7Cvt6-R@zqJGSO?ILRvPPuf*u^>yTX?RDV)GLUZ^4TVgx5K&3h#Q zjs=cGfC?^CtDitq)H%;tgeQ(+0E1*;gh32(7Nh(^(?EWtevDSn?*&4v!~CZglcP(+ z7hmJ@&p0xC@hx(|F0M()QJ=G<f9xC~_Y;bAJmA9{3e4@pJB?W%UI)7HDQ?kSCz6=s zEQ;H-ra=6I{y4jgz@4TLi?kS_X5T)<<os*gO)kZDai37v<nkfsyZEwBX@D<H`y<R@ z24|7=@pT8b_VM+G_ypFQdjFGj%Tjv!j`wGs*pPXZiA)xoK%p?m{LF>k_ReQ-@f;v* ze>-W&t=O|ydlu@rhkSM?iF=B;b1Z;qMli!PU**m<a&{egK1fe+(~l<=pxcjUEsSRh leJC^a5z0;CkDvmJ<5A8$a$WPkU*RS95?p_S9ej`D{{ePaQd<B3 literal 0 HcmV?d00001 diff --git a/kerho/bin/RalliJava/test/HenkilotTest.class b/kerho/bin/RalliJava/test/HenkilotTest.class new file mode 100644 index 0000000000000000000000000000000000000000..0888dfd61eb1043330212aff258d450c7cea1d2b GIT binary patch literal 1891 zcmaJ>-BTM?6#reaVV96vNYf@jY1dL}LPA6NC?%;?+JYrrKpPC!FWe;Cu#oIxcB8yI z&UD7{$-kfvj?aA%7~4AIjQZf{zob2Pvzw%aHIvzU&OIOZcYf#G``5p}{0d+mnus2T zkq2t6rsvhK)QqiJcIKXD?CLes-XKMUz%a1GZ8g=XX4XqPTG?jky{Q|zeTyNGNER7{ zJ7z@-A%MOxg6L&9t>}if)~uJb#)ev|X$%p?EUUGm+R(Y~ZVL9cZZV81{{tb%(9dxx zx}~Z!3k;#9{j#=a>!x9e7-Wcdf(t4EZ<`s09yASGuWLo!(&^Mi!!T{tiKMC&vr*0L zG^vgZFEuCPEWzv~^LPj$iarr>hQVXT5Mt<)Fv1X9ZkY9~>;=g+A|NZz&hY5bFfQOC zu~yY=Ww-9Iwi3dd7!z@ckaU17T9($Z!?=ubhOp{rOJ6qC8nF~hD4j+W?1pYsbNPI- z$WM4Hj0BPl!5U|Y;asANQWsM$S(K3SMLH{C($_c_q=DhT9tqccy{>y+0SR-yUh^FA zd>A)C%@kC_aPY1qPe9B$%5gSsGAx`>eitFF$;=(!;Z@V1`t;|9gm-<73leVo8Rw=X z++~>c8lIKsrsTVNMWzvx?d^v7wY*|fwEgv_z5eL7*)%FvdoX!f%VE5Sdqlt^npuXk zCsfB<n};IeKEqh2^}cDtSj8IM51O)7&9c-gUAt%^*+q#vH4@(UE$f=sLqWoZuh+Ea z6_oH1L$Zs7nb%l&^-hK`0EI!?b{`o+c)ag6-FeT0rtQpek1mI4x=vf#7Q=W~p}rhZ z;BZ&ESHY3-RKZruyQ}J+`$B~ZX0uV&mUaGy4SHqr_u?w=2sM(9Z`}-%=<TDgNP31= zMr&~55YkhAaS);}Hv?~=pT6Oi1Ffe>W3<~#sZNtDkT!q_N!<Sot(1~Iq4b>gf1V-w z@DS&eXNb`{wCb*Fk>S470nUGW1UZ#Hz?H~EsI5<OJsri>_KxE*6~(l-6PZn?0tdK$ zgly#P$&}!V@1#>fS6ob|dR_6(5te>Je^wYGzm?6_dFxSp;ALy=6r%XBz2jim><)am z`ILy+$76g)lYWTb@H-VAaHz^V1jHd>2yqN!3?rDqc`RWRoAjQRa1nLL6nzQbko7S= z6F*=aKjI2yO5iz?ly3rmBjwP2i^wGMT)HLvfsgTtL-Y%Liq8l~96#f8k^=aie7Eog nHR4Z4Qb{UN^aTk25mZ406A={=qdyn(;+}{B+C`bXdQf=@t)<Vi literal 0 HcmV?d00001 diff --git a/kerho/bin/application/Main.class b/kerho/bin/application/Main.class index 3e51077fe58f2e490b5c78d8e648ab216863e9a7..9b57e137721be5b392c06e464365e1f04d3955c8 100644 GIT binary patch delta 17 ZcmX>rc2<nz)W2Q(7#JALH*&ag0{}yX22TJ0 delta 17 ZcmX>rc2<nz)W2Q(7#J9wH*&ag0{}z823r6C diff --git a/kerho/bin/application/RalliController.class b/kerho/bin/application/RalliController.class index 5ae638ca7e31336f6d258077af71425512a5fe76..1b3c72ecc35719929000e55f864b68dff6c3bec3 100644 GIT binary patch delta 356 zcmX9(yG{a86r5Rz3zuD%m%Ln%mja6kXk%hyXJw%_#%ST%kx;4e1N;CBZ*Omb1|g8B zp|UVG78VvZet;4iiIsYd&75;)Cg+^FZ`?J+!}s+Nz#`{5B4Y5ln=u4S7zv!xXV8yF zB5>p$9J=m?+iEohju|lUNkgug+Y=GSbVg;zEPEyymoMfk!}2zmPA3J(DT5})md<nt zW5H?Wb>`$pu*QP4tut@d#~C@a>a56-<#-(;EAv*iyA)cUh_|7^qh4FML33+>x7Au7 z@0;=@UfByH1sh*V&MQL!K80<C7cg;&Fs_u|MFu@o(Z@Un$^+#7*P)1#ntX7mAqFa+ zK@Yv^+_~bT(0*XcWMbW~J3Z{w`V?|Mu}f1vC06P|WzlFcq-sQU33!;I%?yhwaEY^u M|BGH`l{KV(0f=lsQ~&?~ delta 392 zcmX9)y)Q#?6g{V{zSrmXK2+OR>Z7f%*Ot6iVlo&c5<$cw5eBV@5HX2=z-H`k@h?bx zgf?xEm<(dEvDy(6G2thcbMHOp<ldWeTf8e8_up4H046zdZbSu>wQgb1rY7)?Cj(VR z1Pxg-V__liK~v6{%i(s$HOAzzITTFLm5=80Sd@r+vs>l8vcFy4+3@EpTkC7P<GDqL z9R|oQK?|R@#*~9kgK1_pX5@=iXz3#kJ(;nRRcl(#*_zz9M?<|j2j!*hhjPS#oUq)g zWrZ~sh@SsRtBpAm;rKBE2&(@}*VtTY;&ryrz?(cscohdpr0}KGjMB5v6`m+Og}@mc zTqwPUF4W<nfg+m91El}Ap%49P(vf2TF;MvggAA!_M~ZJp;0Gxga~C3dzK)ebgROGM oU8N--+$rBymH-{LsTx&X5<zydn?3ATNepmE@qd|k%ySqWzYi-#UH||9 diff --git a/kerho/bin/application/UudenlisaysController.class b/kerho/bin/application/UudenlisaysController.class index 9034e7dc1912c0fc3e068ecee7617713649d0899..2ab50a320567f86e543525885bf56c5dd6b2dd53 100644 GIT binary patch delta 17 Zcmey$_LYs})W2Q(7#JALH*(}M0{}+t2A==` delta 17 Zcmey$_LYs})W2Q(7#J9wH*(}M0{}-U2CD!7 diff --git a/kerho/kerho/nimet.dat b/kerho/kerho/nimet.dat index ce1596a..8b13789 100644 --- a/kerho/kerho/nimet.dat +++ b/kerho/kerho/nimet.dat @@ -1,3 +1 @@ -0|Rovanperä|Oskari|18|Keuruu|Kuopion nopeet|59|41| -1|Sokka|Oskari|54|Rovaniemi|Rovaniemen nopeet shamaanit|83|17| -2|Rovanperä|Teemu|59|Seinäjoki|Kuopion nopeet|99|76| + diff --git a/kerho/src/RalliJava/Henkilo.java b/kerho/src/RalliJava/Henkilo.java index ba68560..39e6ff9 100644 --- a/kerho/src/RalliJava/Henkilo.java +++ b/kerho/src/RalliJava/Henkilo.java @@ -3,6 +3,8 @@ package RalliJava; import java.io.PrintStream; import java.util.Random; +import fi.jyu.mit.ohj2.Mjonot; + /** * @author idamk * @version 12.2.2025 @@ -11,7 +13,7 @@ import java.util.Random; */ public class Henkilo { - private int henkilonTunnusNro = 0; + private int henkilonTunnusNro; private String etunimi = ""; private String sukunimi = ""; private int ika = 0; @@ -20,15 +22,28 @@ public class Henkilo { private String seura = ""; private String kotipaikkakunta = ""; - private static int seuraavaNro = 0; + private static int seuraavaNro = 1; /** - * + * Antaa henkilölle identifioivan tunnusnumeron + * @return uusi tunnusnumero + * @example + * <pre name="test"> + * Henkilo henkilo1 = new Henkilo(); + * henkilo1.getHenkilonTunnusNro()===0; + * henkilo1.rekisteroi(); + * Henkilo henkilo2 = new Henkilo(); + * henkilo2.rekisteroi(); + * int ht1 = henkilo1.getHenkilonTunnusNro(); + * int ht2 = henkilo2.getHenkilonTunnusNro(); + * ht1 === ht2-1; + * </pre> */ - public void rekisteroi() { + public int rekisteroi() { henkilonTunnusNro = seuraavaNro; seuraavaNro++; + return henkilonTunnusNro; } @@ -74,6 +89,23 @@ public class Henkilo { henkilo.tulosta(System.out); } + /** + * selkeä tulostus + */ + public void vastaaKalle() { + + etunimi = "Kalle"; + sukunimi = "Rovanperä"; + ika = 25; + kotipaikkakunta = "Jyväskylä"; + seura = "Toyota Gazoo Racing WRT"; + rallienMaara = 24; + voitetutRallit = 24; + + Henkilo henkilo = new Henkilo(henkilonTunnusNro, etunimi, sukunimi, ika, kotipaikkakunta, seura, rallienMaara, voitetutRallit); + henkilo.tulosta(System.out); + } + /** * @return tunnusnro @@ -82,6 +114,16 @@ public class Henkilo { return henkilonTunnusNro; } + + /** + * @param numero numero + */ + public void setHenkilonTunnusNro(int numero) { + henkilonTunnusNro = numero; + // jos tunnusnumero on varattu, seuraavaa numeroa kasvatetaan yhtä suuremmaksi kuin hlon tunnusnro + if (henkilonTunnusNro >= seuraavaNro) seuraavaNro = henkilonTunnusNro + 1; + } + /** * Alustaa henkilön */ @@ -125,11 +167,27 @@ public class Henkilo { /** * @return henkilön nimi + * @example + * <pre name="test"> + * Henkilo henkilo = new Henkilo(); + * henkilo.vastaaKalle(); + * henkilo.getNimi() =R= "Kalle Rovanperä"; */ public String getNimi() { return this.etunimi + " " + this.sukunimi; } + + /* + * Palauttaa tiedot tiedostoon tallennettavana merkkijonona + * @return henkilon tiedot merkkijonona + * @example + * <pre name="test"> + * Henkilo henkilo = new Henkilo(); + * henkilo.parse("2|Rovanperä|Kalle|"); + * henkilo.toString().startsWith("2|Rovanperä|Kalle|") === true; + * </pre> + */ @Override public String toString() { return "" + @@ -143,6 +201,36 @@ public class Henkilo { voitetutRallit + "|"; } + + /** + * Pilkkoo henkilötiedot osiin merkkijonosta + * Mukana myös setHenkilonTunnusNro() mikä pitää huolen henkilön tunnusnumerosta + * @param rivi rivi joka pilkotaan osiin + * @example + * <pre name="test"> + * Henkilo henkilo = new Henkilo(); + * henkilo.parse("2|Rovanperä|Kalle|"); + * henkilo.getHenkilonTunnusNro()===2; + * henkilo.toString().startsWith("2|Rovanperä|Kalle|")===true; + * henkilo.rekisteroi(); + * int ht = henkilo.getHenkilonTunnusNro(); + * henkilo.parse(""+(ht+20)); + * henkilo.rekisteroi(); + * henkilo.getHenkilonTunnusNro() === ht+20+1; + * </pre> + */ + public void parse(String rivi) { + StringBuffer sb = new StringBuffer(rivi); + setHenkilonTunnusNro(Mjonot.erota(sb, '|', getHenkilonTunnusNro())); // seuraavan numeron käsittely + sukunimi = Mjonot.erota(sb, '|', sukunimi); + etunimi = Mjonot.erota(sb, '|', etunimi); + ika = Mjonot.erota(sb, '|', ika); + kotipaikkakunta = Mjonot.erota(sb, '|', kotipaikkakunta); + seura = Mjonot.erota(sb, '|', seura); + rallienMaara = Mjonot.erota(sb, '|', rallienMaara); + voitetutRallit = Mjonot.erota(sb, '|', voitetutRallit); + } + /** * @param args ei käytössä */ diff --git a/kerho/src/RalliJava/Henkilot.java b/kerho/src/RalliJava/Henkilot.java index 1471cdc..1b0e429 100644 --- a/kerho/src/RalliJava/Henkilot.java +++ b/kerho/src/RalliJava/Henkilot.java @@ -3,7 +3,10 @@ package RalliJava; import java.io.File; import java.io.FileNotFoundException; import java.io.FileOutputStream; +import java.io.FileInputStream; import java.io.PrintStream; +import java.util.Scanner; +//import fi.jyu.mit.ohj2.Mjonot; //import java.util.ArrayList; //import java.util.List; @@ -32,6 +35,23 @@ public class Henkilot { /** * @param henkilo lisättävä henkilö * @throws SailoException säilö + * @example + * <pre name="test"> + * #THROWS SailoException + * Henkilot henkilot = new Henkilot(); + * Henkilo henkilo1 = new Henkilo(), henkilo2 = new Henkilo(); + * henkilot.getLkm() === 0; + * henkilot.lisaa(henkilo1); henkilot.getLkm()===1; + * henkilot.lisaa(henkilo2); henkilot.getLkm()===2; + * henkilot.lisaa(henkilo1); henkilot.getLkm()===3; + * henkilot.anna(0)===henkilo1; + * henkilot.anna(1)===henkilo2; + * henkilot.anna(2)===henkilo1; + * henkilot.anna(3)===henkilo1; #THROWS IndexOutOfBoundsException + * henkilot.lisaa(henkilo1); henkilot.getLkm()===4; + * henkilot.lisaa(henkilo1); henkilot.getLkm()===5; + * henkilot.lisaa(henkilo2); #THROWS SailoException + * </pre> */ public void lisaa(Henkilo henkilo) throws SailoException { if (lkm >= alkiot.length) throw new SailoException("Liikaa alkioita"); @@ -57,6 +77,30 @@ public class Henkilot { throw new SailoException("Tiedosto " + tiedosto.getAbsolutePath()); } } + + /** + * @param hakemisto mistä haetaan + * @throws SailoException jos tiedoston lukemisessa jotain ongelmaa + */ + public void lueTiedostosta(String hakemisto) throws SailoException { + String tiedostonNimi = hakemisto + "/nimet.dat"; + File tiedosto = new File(tiedostonNimi); + + try (Scanner in = new Scanner(new FileInputStream(tiedosto))) { + while (in.hasNext() ) { // jos on seuraava olemassa niin luetaan seuraava nimi + String s = in.nextLine(); + if (s == null || "".equals(s) || s.charAt(0) == ';') continue; + Henkilo henkilo = new Henkilo(); + henkilo.parse(s); //TODO: PARSE MJONOT.JYU juttu!!!!! + + lisaa(henkilo); + } + } catch (FileNotFoundException e) { + throw new SailoException("Ei saa luettua tiedostoa " + tiedostonNimi); + } + + } + /** * @param rallinTunnusNro tarkasteltavan rallin tunnusnumero @@ -109,6 +153,13 @@ public class Henkilot { public static void main(String[] args) { Henkilot henkilot = new Henkilot(); + try { + henkilot.lueTiedostosta("kerho"); + } catch (SailoException ex) { + System.err.println(ex.getMessage()); + } + + Henkilo rovis = new Henkilo(); Henkilo asunmaa = new Henkilo(); Henkilo elfyn = new Henkilo(); @@ -123,13 +174,13 @@ public class Henkilot { try { henkilot.lisaa(rovis); henkilot.lisaa(asunmaa); - henkilot.lisaa(elfyn); + henkilot.lisaa(elfyn); System.out.println("==================== Testi ======================"); for (int i = 0; i < henkilot.getLkm(); i++) { Henkilo henkilo = henkilot.anna(i); - System.out.println("Henkilo nro: " + i); + System.out.println("Henkilo nro: " + (i+1)); henkilo.tulosta(System.out); } @@ -137,6 +188,7 @@ public class Henkilot { System.err.println("Liikaa alkioita :0"); //kun alkioita enemmän kun MAX sallii } + // tallentaminen hakemistoon "kerho" try { henkilot.tallenna("kerho"); } catch (SailoException e) { diff --git a/kerho/src/RalliJava/Rekisteri.java b/kerho/src/RalliJava/Rekisteri.java index 5c4e478..14dd529 100644 --- a/kerho/src/RalliJava/Rekisteri.java +++ b/kerho/src/RalliJava/Rekisteri.java @@ -5,6 +5,8 @@ import java.util.List; /** * @author idamk * @version 25.2.2025 + * TODO: nimien toistuvuustarkistin + * TODO: * */ public class Rekisteri { @@ -57,6 +59,7 @@ public class Rekisteri { return henkilot.anna(i); } + /** * @param henkilo Henkilö kenen rallit halutaan tietää * @return listan näistä ralleista diff --git a/kerho/src/RalliJava/test/HenkiloTest.java b/kerho/src/RalliJava/test/HenkiloTest.java new file mode 100644 index 0000000..589f76d --- /dev/null +++ b/kerho/src/RalliJava/test/HenkiloTest.java @@ -0,0 +1,67 @@ +package RalliJava.test; +// Generated by ComTest BEGIN +import static org.junit.Assert.*; +import org.junit.*; +import RalliJava.*; +// Generated by ComTest END + +/** + * Test class made by ComTest + * @version 2025.03.26 10:56:37 // Generated by ComTest + * + */ +@SuppressWarnings({ "all" }) +public class HenkiloTest { + + + + // Generated by ComTest BEGIN + /** testRekisteroi32 */ + @Test + public void testRekisteroi32() { // Henkilo: 32 + Henkilo henkilo1 = new Henkilo(); + assertEquals("From: Henkilo line: 34", 0, henkilo1.getHenkilonTunnusNro()); + henkilo1.rekisteroi(); + Henkilo henkilo2 = new Henkilo(); + henkilo2.rekisteroi(); + int ht1 = henkilo1.getHenkilonTunnusNro(); + int ht2 = henkilo2.getHenkilonTunnusNro(); + assertEquals("From: Henkilo line: 40", ht2-1, ht1); + } // Generated by ComTest END + + + // Generated by ComTest BEGIN + /** testGetNimi171 */ + @Test + public void testGetNimi171() { // Henkilo: 171 + Henkilo henkilo = new Henkilo(); + henkilo.vastaaKalle(); + { String _l_=henkilo.getNimi(),_r_="Kalle Rovanperä"; if ( !_l_.matches(_r_) ) fail("From: Henkilo line: 174" + " does not match: ["+ _l_ + "] != [" + _r_ + "]");}; + } // Generated by ComTest END + + + // Generated by ComTest BEGIN + /** testToString185 */ + @Test + public void testToString185() { // Henkilo: 185 + Henkilo henkilo = new Henkilo(); + henkilo.parse("2|Rovanperä|Kalle|"); + assertEquals("From: Henkilo line: 188", true, henkilo.toString().startsWith("2|Rovanperä|Kalle|")); + } // Generated by ComTest END + + + // Generated by ComTest BEGIN + /** testParse210 */ + @Test + public void testParse210() { // Henkilo: 210 + Henkilo henkilo = new Henkilo(); + henkilo.parse("2|Rovanperä|Kalle|"); + assertEquals("From: Henkilo line: 213", 2, henkilo.getHenkilonTunnusNro()); + assertEquals("From: Henkilo line: 214", true, henkilo.toString().startsWith("2|Rovanperä|Kalle|")); + henkilo.rekisteroi(); + int ht = henkilo.getHenkilonTunnusNro(); + henkilo.parse(""+(ht+20)); + henkilo.rekisteroi(); + assertEquals("From: Henkilo line: 219", ht+20+1, henkilo.getHenkilonTunnusNro()); + } // Generated by ComTest END +} \ No newline at end of file diff --git a/kerho/src/RalliJava/test/HenkilotTest.java b/kerho/src/RalliJava/test/HenkilotTest.java new file mode 100644 index 0000000..14c971d --- /dev/null +++ b/kerho/src/RalliJava/test/HenkilotTest.java @@ -0,0 +1,44 @@ +package RalliJava.test; +// Generated by ComTest BEGIN +import static org.junit.Assert.*; +import org.junit.*; +import RalliJava.*; +// Generated by ComTest END + +/** + * Test class made by ComTest + * @version 2025.03.26 11:05:27 // Generated by ComTest + * + */ +@SuppressWarnings({ "all" }) +public class HenkilotTest { + + + // Generated by ComTest BEGIN + /** + * testLisaa39 + * @throws SailoException when error + */ + @Test + public void testLisaa39() throws SailoException { // Henkilot: 39 + Henkilot henkilot = new Henkilot(); + Henkilo henkilo1 = new Henkilo(), henkilo2 = new Henkilo(); + assertEquals("From: Henkilot line: 43", 0, henkilot.getLkm()); + henkilot.lisaa(henkilo1); assertEquals("From: Henkilot line: 44", 1, henkilot.getLkm()); + henkilot.lisaa(henkilo2); assertEquals("From: Henkilot line: 45", 2, henkilot.getLkm()); + henkilot.lisaa(henkilo1); assertEquals("From: Henkilot line: 46", 3, henkilot.getLkm()); + assertEquals("From: Henkilot line: 47", henkilo1, henkilot.anna(0)); + assertEquals("From: Henkilot line: 48", henkilo2, henkilot.anna(1)); + assertEquals("From: Henkilot line: 49", henkilo1, henkilot.anna(2)); + try { + assertEquals("From: Henkilot line: 50", henkilo1, henkilot.anna(3)); + fail("Henkilot: 50 Did not throw IndexOutOfBoundsException"); + } catch(IndexOutOfBoundsException _e_){ _e_.getMessage(); } + henkilot.lisaa(henkilo1); assertEquals("From: Henkilot line: 51", 4, henkilot.getLkm()); + henkilot.lisaa(henkilo1); assertEquals("From: Henkilot line: 52", 5, henkilot.getLkm()); + try { + henkilot.lisaa(henkilo2); + fail("Henkilot: 53 Did not throw SailoException"); + } catch(SailoException _e_){ _e_.getMessage(); } + } // Generated by ComTest END +} \ No newline at end of file -- GitLab