From 8dca146c03f89ededead2e30fa34161a23447c50 Mon Sep 17 00:00:00 2001 From: La Programmatrice Verde Date: Tue, 3 Mar 2026 16:58:38 +0100 Subject: [PATCH] Migliore gestione conto corrente esistente --- build/classes/gui/GUIMyBank$1.class | Bin 805 -> 805 bytes build/classes/gui/GUIMyBank$2.class | Bin 808 -> 808 bytes build/classes/gui/GUIMyBank$3.class | Bin 814 -> 814 bytes build/classes/gui/GUIMyBank$4.class | Bin 814 -> 814 bytes build/classes/gui/GUIMyBank$5.class | Bin 814 -> 814 bytes build/classes/gui/GUIMyBank.class | Bin 13733 -> 14378 bytes .../classes/logic/ContoCorrenteWrapper.class | Bin 0 -> 651 bytes build/classes/logic/MyBank.class | Bin 7433 -> 7731 bytes src/gui/GUIMyBank.java | 219 +++++++++++------- src/logic/ContoCorrenteWrapper.java | 19 ++ src/logic/MyBank.java | 17 +- 11 files changed, 167 insertions(+), 88 deletions(-) create mode 100644 build/classes/logic/ContoCorrenteWrapper.class create mode 100644 src/logic/ContoCorrenteWrapper.java diff --git a/build/classes/gui/GUIMyBank$1.class b/build/classes/gui/GUIMyBank$1.class index 78808c2e3137c18e9ae1b57f40a789b8c70ece27..4765437d220ec6dccd393e22c462aa02e1ff4d26 100644 GIT binary patch delta 23 ecmZ3=wv=r{ITK^b7hTO?lnSudVfCl^k delta 23 ecmZ3%wt{U#6%%9n0~2Gx0~2HJ0~2G} delta 23 ecmZ3-wvKH>0~2HM0~2G-0~2HA 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 delta 3473 zcma)933OCd61}(nPde%TS;*dj07*as*`OmJ(Lh2Z7>JQYh9wM;KxB{rN&s~RryT{I zb>50 z)w=2K7fvj;A5nN)?=2E*Up?m0^7MJrb z`$R%o6tlU~;ws)vBuuTIV{c)6J0qieshg|0#>IOrj^KUvf`pv30^VYvLUgrzCC1xNBzBCc zxA-U@Q@QG^=T_F#67lv8(Qy}ya~5p3*yu=G3Z}TGvbMIoaz?ddrODz>+(JaE@v>R7 zrWeheQc_)Ar}Y-*E9wi*NC5d#86u$M=Zn%d4-QQ!=f(W=c-g ztl3klXFEt*EFR_&J3YBD?L)`GkBF!%E9X__)>O`%ni~M^=6)Wt_%9x>UznU|Fv7kk zWruxz$6f4f=XY8i+JnfbC~FN!w0WURvTRr9tH<-_s1WJxMws-mq+Ni!z~TB?;tFt@ z$uPOdlE?tp-{A&W{E0tDBQz>h209bPmShLGL2fCL!7jPPl2RE`-`u%~<}f0~zTK1J zAwmYvo;CL>myEQF(u&Q|PKNxcDW2LcPI#RcW9=XSl zCO_q8&@3U0pYsc)fJyw4Ujh7DX-j87a1x8@p^Y19)TtmaAM5Jc=v< z#Yn})YI%^_F4396xD=OQ3`#K>LogFVaUIIAKxY@D94i&oIt;@W498B4z&?z`s~Ckh z6ln{_;y5bs75<2mm`DSajKNf-wMEgT>sBJJ<}Hhq08$u}odRQ(axolekNW72?K9iNJDchgFh{yCoI( zNLQ?uEUb|{+$;IGPYRSSL7kNQaleefTA7G-QjG^>HrC5r<>zCAIPY%Mg*W3txeXg- zDIStl*d%p$Sk@`O8Jp!XJR*CsMGj!A9KtqfQT_v!KdMH*M7{ioM-3B?86GqkG1zW+ z(P(tW4kKOXv(RMtbFs?E!%m|Qb{PeD+$h9uqgeS8EHg^6$0)~>#t7^+D)5w1g{O^a zc*dBEea3t|YxtF4i06z&c;2w_g0Tksjfe1}v03@;c*)p}myNwRU_6gkj92igaR{#& zElMB9>&6#oHonI}zbSab49AftyAfy8RlSwj2#@Q~8x`D-TuWt~QkaAKlu) zgBfBN?An}~U<~rLZoo)wY|(m1#~_Ze=*T$aFd4lVk31$IpNS|?zK}^6NH2!6J%+JE z!1VbD(R%74VG^#H9fi$@!-Q%AkpYyUp29XZ5>Fqc>g z1M1JHaxE_RZ}YFmjRW0YoO^2!^$^6Uc)FtQs;Iju>I_BQT~YfKbq__Isi?CQwNFuJ zE9x9Yor`kihimH`$zB-GJZ-1v2fXO7JHzoJs?`gNpG&lQHu6{gR0aI0P~@mO>(Ins zIn+rPwCN8g4EtZ7^mq-X!^~IXdYv_A%eM z@H%}l(`aCwU7DBf=OMP}9yS6y;u!j=ioRM_7a)QC(3SZbiHkG>{ZXt3MJWq4XGIvz zftbLHaSaDyK1=jmxCBdBiu*Yf8(4-NdYmO4qwpEW;5&}R&m6}H zRxpzOiHzqICUFvzS;&Gpui#aj&)Hm{4QdhR za4F~N&2Jvp@)~a9wR$bPj=T70KFz=IMU`yk_3GpeY~f#dgqnKZ7)aM9v}3$qJzpp> z2vtuFiPg-7@kndFqMUG^sXwKH_2=PXiIaG((*z!r1f>j((>_U5%G78zNs>|_S{IE$ z%^JPU;?+5qdT$49Xf!uSvR3g$ZVhUkv{%xjpA_2i4aPxl`SGc4~ zTCliqP(5>YROHqA$717B$3E6~U^Zw<6?A9{0_Dt5-*twq>FTPe5%v9yuOrRdIO$Wq?N zl`3@?`sjtEh^sYjYc!AA1f2_5EWDB~T@+^@c%-YGr+q;2N;k<+WlpDvMaU_HyQDjr z_9H?Dx+K%n+90GG5bbs@oEkXi^yv}+r3r!OX~fgd#TXg&9wTN|SYq32~dI%vXE5T~OlxjHA(Q+nxWX{770 z26tlxZWo`pp`0=A}N%i_S1dy^2!Rm_zus?rHb#U hj^$`4m+3g%BwaE>E-&=zKb8k%6vE{XGDgP1`ybDl%v=Bf diff --git a/build/classes/logic/ContoCorrenteWrapper.class b/build/classes/logic/ContoCorrenteWrapper.class new file mode 100644 index 0000000000000000000000000000000000000000..341a2d3ccdefae2ff9fbb40cdfc745219fbf3e58 GIT binary patch literal 651 zcmZuu+fKqj5ItKih00wKK}_@wY9b$i@r7t&f|o>tk+-F6prmxkviMa#Xd*H3!4L4G zjI)I&(=?r(IWuRjKfhn!04{Olz(T@CGKUn>45b-=;hlholg`~}COplMKKDakUoa$E z?Lih9WNkP(>>$U`2;{`~Iz1U`*^^3%P>UzU7Ym^nQl5bss{NR#uE|u$p@XDBELMnaf@nFD}Z|p6Y)Kh=S(2UEs z?X*i{-v~XG<9n|7Txg+)k(me`&Bah_wd3f-qm@v%&VyVjPh9z?i+bEL&dgeILL*zW zcJtHvNW#odG67l_%H*k#^=xipeC{Whd%A}0HrL3%6J%kRWCcl*bTxAg`U-HcN67Jp zhAQ^SGRaLD7HOuCg&OHui(umfxeib#X{vVUHK8f@1NIv!n_B4z%t!e*xl-HwbOSVE Q$obcQ+eFp6sa0e1U$VE_OC literal 0 HcmV?d00001 diff --git a/build/classes/logic/MyBank.class b/build/classes/logic/MyBank.class index b9400e39eaf913c2625a1764ff32cc825b864ecd..eff93983eefcc3c93b34fab55a37129be51f7415 100644 GIT binary patch delta 2613 zcmaJ@d30P=9sYi^y?Jk5wn-Tt-6erYu{#NrOzHQ(;HomK#_19E=-^LH{ zLxHs`Hr5&28ISE86L@NA%t8rH+4vEjP?hGqsuKLz#!v8+z&AKNIy6ABs@l%&1MeAV z*gY2C(a<(97E=%SiULpLw1H=A{0wJQzqweRRi84eW}k)I!1ID4M~Uv*DB8{@x5f@w|H4KSW9zX!S4(}7BtxYfx(k^gn^+Ts&Ky%;Dr#U&fvR$1Hp7sn0=BVl59G@Y>f^u%l)oX>pgb#l0E!!z9d6Ey20`6TBhi9BiVIcsU`VmLJgePVfK2k0trGY2m+gq1{9C1WSxe{MfOQnn}wYhqw zTq^iB<#M?KZb!SFoQ(Da46W@Jt!=@@wGJLcXBu!Efy^c^YZ3t|0i==?uaJ$bmsLv$ zGe@c!uy(T40RcQmVLZaKI4Btx=Vn!Es8NgU+Odg-&~iy=M{Y)#>wNgJfSI|5v#}7h zxE71hgl;Ux5SAc;rT7Sz;eIqjp#=xfiZ7xK$FKq?u@cW<6`sRtoTuy?=)zmvPoa~w zX_8r3>jXGL-%m30S28e**7~F_AyK$#v|H*~4i918Cs)Z_m^9*+I)|%w8SWH<(jZrp z+l{o$6Ya8}5V~|A&m#*+<8^{5xkeT;FFK1w%(DY4jf8dNoqR4LZ{CxzrqK?+fgA(* z28sbg-XSd4G^4UEk`1gjFrO@Su(*tCy10Vt^TjonQJ9)q-Uaibykka{h07C7gz?a+ zz1b2hW(k(aQe6Vp=xGL{oj>Gm^t&6a`XnBhglhCnVq1vIu4CBm!hUpwELJs%&wL)W zA^(0<@)WX?c=$2&BrzQFeGZ0a93EP^%aZZw(--*_=xH)MjpjI(rIFto45l!vDG&)H zQF#DnB%scOD--TUGmXQ&5hG-#a6~sxrbRoT=V=p5)W=!aj6B?g3iNXxwy@s)Si|1g zj9a+I*d>G5jcvFCaomgBun#-fB||uf5vTfhA&0U)StiS2P}eQZ(!%J6aCO3|8yg#k zq?LW3{|?D@dO)3B8+UqE4oSOo&>6j3AuE~IJRFc!ay^~97iC$~ZhTo*)3l$^b{52k zFGwflEYVeOficZESl#)~e}aYWa_b=_UUjn=!6}4U)M;FCNhl*@pht9f$fdICxeR%w zmBj1#wDD=@vw~z(*2p`vGg_C#HW`vr|uZH4fDBZH2P}wM@=K?4rb3mWUM)m(dpZs6Y1TF6&=m%$nr!f;9 z{{@Q9Wr z?mUXbKZ5^C;@?LYUYN7h$RsV|y}OKWpo5dPHyc|W69_!WsreWs6{_)Z%I~AbgOvLu zCHLWad;;t6kQ4Lev{=o0^-3RGBaFH7F4^o1RX4BCD4s#j*G;O%p+y;M3@IKo! z%^Bsd8hz%;A$i|~v>Mp!zmS`G)b-1aI(g0qsG4Z{FE=f&-lO74iGM-@`hz#~Q#6~g g+(ep7`elojhO1O!6d7>VTjVwpEuMGCP8mVuKiI;v5dZ)H delta 2257 zcmZ8iX>e3U5dM0PyklR&W|K{JA#9K!2{}L#2_)eP_mO}S4ikY8Bxo!JL=?&@T~rFi ziz>$|HC0+*N#%zJlIRABig=$W#`^^C3-1e!#BbgPNV&Cd-b{DD?ytY@ndun6tq^1M#eb=kUC0u|@}8#7hQVcJK;b zRi9W@@|qfC4;y+AUIT9kvMy}8ylGU++EG(3TfMq@eesvN7uQ%|fYO+c<>x9Qg6R+HMa_`Ov{f_*m_>C!`(55d)t(_zWKliqvK~UF8Py%)|J?!I$_- z%?V5%dI;Y*_!e0L|3)1_d%McQQT$-wM+ZOQXLWy|Ony~|17+6l_`|@T4*pU(PM!yU zt7<39Jc=F%|Khl6bYd2c35Z2RZFO=}ypH(9ukLdeihXP97)e#-sVh2mrC#fiQEEhR znP+){+HOSDj^H%)U9d>yr(a<<2&Bc3scKjH1*y)A`3q{R7tU{-R=u!V1w#2!qsl@r z$~o%a&{%0uV={)NEwyEtEH|W)l*kHoenz*Pr>Zgwea(WHnwS|=*JXwl`C)1-EOA6q z#DIv&xkoIn1O3(xqLOxMjSy@En3Bi<*FMNKxk3sh>FRi9Ry;&GR~&OBgClJ@`Xy7s zd|Q$w+3-p_=hLZib%h-;_E6vz{jm)X#}V+Mu)hO0EF?l*pGyQJ2uPF?zfcX0DUC@C zWSBvc!&$o884eFV1*xPD_F!7XaG?g$(H)*7F6x!g&PT&UDf292d!C5`jKf$|pbnL| z7*&X4Jg&n8+=59^n2c6b<6cZ<^UuHm%*30Rh4(NAM`-&eYVbGbJ(w$LsE|yY{;gH9}qyt-kfm|%s=5%Y4~06BS!qY@1oB#8MQwFuG%p@C9%8U$drgGy+$E&@9QJ7gS4)wLWf+C! zn9cWmtUx1HvN_JfdaS}Gtj0E6fLqam+i}s!3NEF;Gi3}6T9&wk+d3gBColTfDq}g* z{oNXuah&R|Zj}nDWN1CBlJR6{0B)2CGLcZWA-&I`7q`nKnarxD;5MnI))HN%Nicee zm2{W({bh=mdx$}XPZnc94+%r^<&uafjohM}+=xSx z-;-HQycc1a9EXmA@~uLS{7H_qVX(@_aMW2lKX=vK+L0G z6A$3QB-bpE-%YWu3y12v&|S~`*Y3kxKqubm#Jl7tn~0(be2~B=wMCkr&lC8%D1qwuDtB&|x_kruV|F-eCy8**-BU}F_lv6f? zC(vxp=kPLJfbA#QaFoSt+YzHKP9k=;ClI diff --git a/src/gui/GUIMyBank.java b/src/gui/GUIMyBank.java index e4e008c..2c69ce1 100644 --- a/src/gui/GUIMyBank.java +++ b/src/gui/GUIMyBank.java @@ -11,6 +11,8 @@ import java.util.ArrayList; import java.util.Date; import logic.MyBank; import logic.ContoCorrente; +import logic.ContoCorrenteWrapper; + import javax.swing.JOptionPane; import javax.swing.UIManager; import javax.swing.border.Border; @@ -59,7 +61,8 @@ public class GUIMyBank extends javax.swing.JFrame { // //GEN-BEGIN:initComponents + // //GEN-BEGIN:initComponents private void initComponents() { lblNome = new javax.swing.JLabel(); @@ -147,88 +150,121 @@ public class GUIMyBank extends javax.swing.JFrame { javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane()); getContentPane().setLayout(layout); layout.setHorizontalGroup( - layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addGroup(layout.createSequentialGroup() - .addGap(99, 99, 99) - .addComponent(btnAprireContoCorrente) - .addContainerGap(187, Short.MAX_VALUE)) - .addGroup(layout.createSequentialGroup() - .addGap(17, 17, 17) - .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addGroup(layout.createSequentialGroup() - .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addComponent(lblDataDiNascita) - .addComponent(lblSaldoIniziale)) - .addGap(18, 18, 18) - .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false) - .addGroup(layout.createSequentialGroup() - .addComponent(txtDataDiNascita, javax.swing.GroupLayout.PREFERRED_SIZE, 64, javax.swing.GroupLayout.PREFERRED_SIZE) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) - .addComponent(btnDataDiNascita, javax.swing.GroupLayout.PREFERRED_SIZE, 39, javax.swing.GroupLayout.PREFERRED_SIZE)) - .addComponent(txtSaldoIniziale))) - .addGroup(layout.createSequentialGroup() - .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addComponent(lblNome) - .addComponent(lblCognome) - .addComponent(lblCodiceFiscale)) - .addGap(26, 26, 26) - .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addComponent(txtNome, javax.swing.GroupLayout.PREFERRED_SIZE, 113, javax.swing.GroupLayout.PREFERRED_SIZE) - .addComponent(txtCodiceFiscale, javax.swing.GroupLayout.PREFERRED_SIZE, 115, javax.swing.GroupLayout.PREFERRED_SIZE) - .addComponent(txtCognome, javax.swing.GroupLayout.PREFERRED_SIZE, 113, javax.swing.GroupLayout.PREFERRED_SIZE)))) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 39, Short.MAX_VALUE) - .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false) - .addComponent(lblNumeroContoCorrente, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) - .addComponent(btnVersamento) - .addComponent(btnPrelievo) - .addComponent(btnListaMovimenti) - .addComponent(txtNumeroContoCorrente)) - .addGap(23, 23, 23)) - .addGroup(layout.createSequentialGroup() - .addContainerGap() - .addComponent(jScrollPane1) - .addContainerGap()) - ); + layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(layout.createSequentialGroup() + .addGap(99, 99, 99) + .addComponent(btnAprireContoCorrente) + .addContainerGap(187, Short.MAX_VALUE)) + .addGroup(layout.createSequentialGroup() + .addGap(17, 17, 17) + .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(layout.createSequentialGroup() + .addGroup(layout + .createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addComponent(lblDataDiNascita) + .addComponent(lblSaldoIniziale)) + .addGap(18, 18, 18) + .addGroup(layout + .createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, + false) + .addGroup(layout.createSequentialGroup() + .addComponent(txtDataDiNascita, + javax.swing.GroupLayout.PREFERRED_SIZE, 64, + javax.swing.GroupLayout.PREFERRED_SIZE) + .addPreferredGap( + javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) + .addComponent(btnDataDiNascita, + javax.swing.GroupLayout.PREFERRED_SIZE, 39, + javax.swing.GroupLayout.PREFERRED_SIZE)) + .addComponent(txtSaldoIniziale))) + .addGroup(layout.createSequentialGroup() + .addGroup(layout + .createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addComponent(lblNome) + .addComponent(lblCognome) + .addComponent(lblCodiceFiscale)) + .addGap(26, 26, 26) + .addGroup(layout + .createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addComponent(txtNome, javax.swing.GroupLayout.PREFERRED_SIZE, + 113, javax.swing.GroupLayout.PREFERRED_SIZE) + .addComponent(txtCodiceFiscale, + javax.swing.GroupLayout.PREFERRED_SIZE, 115, + javax.swing.GroupLayout.PREFERRED_SIZE) + .addComponent(txtCognome, + javax.swing.GroupLayout.PREFERRED_SIZE, 113, + javax.swing.GroupLayout.PREFERRED_SIZE)))) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 39, + Short.MAX_VALUE) + .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false) + .addComponent(lblNumeroContoCorrente, javax.swing.GroupLayout.DEFAULT_SIZE, + javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) + .addComponent(btnVersamento) + .addComponent(btnPrelievo) + .addComponent(btnListaMovimenti) + .addComponent(txtNumeroContoCorrente)) + .addGap(23, 23, 23)) + .addGroup(layout.createSequentialGroup() + .addContainerGap() + .addComponent(jScrollPane1) + .addContainerGap())); layout.setVerticalGroup( - layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addGroup(layout.createSequentialGroup() - .addGap(14, 14, 14) - .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) - .addComponent(lblNome) - .addComponent(txtNome, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) - .addComponent(lblNumeroContoCorrente)) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) - .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) - .addComponent(lblCognome) - .addComponent(txtCognome, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) - .addComponent(txtNumeroContoCorrente, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) - .addGap(18, 18, 18) - .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addGroup(layout.createSequentialGroup() - .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) - .addComponent(lblCodiceFiscale) - .addComponent(txtCodiceFiscale, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) - .addGap(18, 18, 18) - .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) - .addComponent(lblDataDiNascita) - .addComponent(txtDataDiNascita, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) - .addComponent(btnDataDiNascita)) - .addGap(18, 18, 18) - .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) - .addComponent(lblSaldoIniziale) - .addComponent(txtSaldoIniziale, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))) - .addGroup(layout.createSequentialGroup() - .addComponent(btnVersamento) - .addGap(18, 18, 18) - .addComponent(btnPrelievo) - .addGap(18, 18, 18) - .addComponent(btnListaMovimenti))) - .addGap(18, 18, 18) - .addComponent(btnAprireContoCorrente) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addComponent(jScrollPane1) - .addGap(14, 14, 14)) - ); + layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(layout.createSequentialGroup() + .addGap(14, 14, 14) + .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) + .addComponent(lblNome) + .addComponent(txtNome, javax.swing.GroupLayout.PREFERRED_SIZE, + javax.swing.GroupLayout.DEFAULT_SIZE, + javax.swing.GroupLayout.PREFERRED_SIZE) + .addComponent(lblNumeroContoCorrente)) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) + .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) + .addComponent(lblCognome) + .addComponent(txtCognome, javax.swing.GroupLayout.PREFERRED_SIZE, + javax.swing.GroupLayout.DEFAULT_SIZE, + javax.swing.GroupLayout.PREFERRED_SIZE) + .addComponent(txtNumeroContoCorrente, javax.swing.GroupLayout.PREFERRED_SIZE, + javax.swing.GroupLayout.DEFAULT_SIZE, + javax.swing.GroupLayout.PREFERRED_SIZE)) + .addGap(18, 18, 18) + .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(layout.createSequentialGroup() + .addGroup(layout + .createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) + .addComponent(lblCodiceFiscale) + .addComponent(txtCodiceFiscale, + javax.swing.GroupLayout.PREFERRED_SIZE, + javax.swing.GroupLayout.DEFAULT_SIZE, + javax.swing.GroupLayout.PREFERRED_SIZE)) + .addGap(18, 18, 18) + .addGroup(layout + .createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) + .addComponent(lblDataDiNascita) + .addComponent(txtDataDiNascita, + javax.swing.GroupLayout.PREFERRED_SIZE, + javax.swing.GroupLayout.DEFAULT_SIZE, + javax.swing.GroupLayout.PREFERRED_SIZE) + .addComponent(btnDataDiNascita)) + .addGap(18, 18, 18) + .addGroup(layout + .createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) + .addComponent(lblSaldoIniziale) + .addComponent(txtSaldoIniziale, + javax.swing.GroupLayout.PREFERRED_SIZE, + javax.swing.GroupLayout.DEFAULT_SIZE, + javax.swing.GroupLayout.PREFERRED_SIZE))) + .addGroup(layout.createSequentialGroup() + .addComponent(btnVersamento) + .addGap(18, 18, 18) + .addComponent(btnPrelievo) + .addGap(18, 18, 18) + .addComponent(btnListaMovimenti))) + .addGap(18, 18, 18) + .addComponent(btnAprireContoCorrente) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addComponent(jScrollPane1) + .addGap(14, 14, 14))); pack(); }// //GEN-END:initComponents @@ -364,8 +400,23 @@ public class GUIMyBank extends javax.swing.JFrame { } try { - contoCorrenteAperto = MyBank.aggiungiConto(nome, cognome, codiceFiscale, dataDiNascita, saldoIniziale); - txtNumeroContoCorrente.setText(Integer.toString(MyBank.getConti().getLast().getNumeroContoCorrente())); + ContoCorrenteWrapper conto = MyBank.aggiungiConto(nome, cognome, codiceFiscale, dataDiNascita, + saldoIniziale); + contoCorrenteAperto = conto.getConto(); + + if (conto.isImported()) { + JOptionPane.showMessageDialog(null, "Esiste già un conto corrente per il codice fiscale specificato.\nVerrà aperto il conto corrente esistente."); + txtNome.setText(contoCorrenteAperto.getNome()); + txtCognome.setText(contoCorrenteAperto.getCognome()); + txtCodiceFiscale.setText(contoCorrenteAperto.getCodiceFiscale()); + txtDataDiNascita.setText(MyBank.dataDiNascita(contoCorrenteAperto.getDataDiNascita())); + txtSaldoIniziale.setText(Double.toString(contoCorrenteAperto.getSaldo())); + txtNumeroContoCorrente.setText(Integer.toString(contoCorrenteAperto.getNumeroContoCorrente())); + lblSaldoIniziale.setText("Saldo"); + + } else { + txtNumeroContoCorrente.setText(Integer.toString(MyBank.getConti().getLast().getNumeroContoCorrente())); + } lblNumeroContoCorrente.setVisible(true); txtNumeroContoCorrente.setVisible(true); diff --git a/src/logic/ContoCorrenteWrapper.java b/src/logic/ContoCorrenteWrapper.java new file mode 100644 index 0000000..eafcdee --- /dev/null +++ b/src/logic/ContoCorrenteWrapper.java @@ -0,0 +1,19 @@ +package logic; + +public class ContoCorrenteWrapper { + ContoCorrente conto; + boolean isImported; + + public ContoCorrenteWrapper(ContoCorrente conto, boolean isImported) { + this.conto = conto; + this.isImported = isImported; + } + + public ContoCorrente getConto() { + return conto; + } + + public boolean isImported() { + return isImported; + } +} diff --git a/src/logic/MyBank.java b/src/logic/MyBank.java index 0af6a65..8a651a1 100644 --- a/src/logic/MyBank.java +++ b/src/logic/MyBank.java @@ -35,6 +35,7 @@ public class MyBank { static final String ERRORE_GENERICO = "Errore: opzione non valida."; static final String ERRORE_CONTI_VUOTO = "Errore: è necessario aggiungere almeno un conto corrente prima di proseguire."; public static final String PATH_CONTI = "./src/logic/conti/"; + static final String FORMATO_DATA = "dd/MM/yyyy"; private static ArrayList conti; public static void setConti(ArrayList conti) { @@ -49,7 +50,7 @@ public class MyBank { ArrayList conti = new ArrayList<>(); File percorsoConti = new File(PATH_CONTI); ObjectMapper mapper = new ObjectMapper(); - mapper.setDateFormat(new SimpleDateFormat("dd/MM/yyyy")); + mapper.setDateFormat(new SimpleDateFormat(FORMATO_DATA)); StringBuilder sb; String riga; @@ -80,11 +81,12 @@ public class MyBank { return conti; } - public static ContoCorrente aggiungiConto(String nome, String cognome, String codiceFiscale, Date dataDiNascita, + public static ContoCorrenteWrapper aggiungiConto(String nome, String cognome, String codiceFiscale, Date dataDiNascita, double saldoIniziale) throws IOException{ int numeroContoCorrente; ContoCorrente contoCorrente; boolean exit = false; + boolean isImported; int i = 0; numeroContoCorrente = Math.abs(codiceFiscale.hashCode()); @@ -94,6 +96,7 @@ public class MyBank { exit = conti.get(i).getNumeroContoCorrente() == numeroContoCorrente; } contoCorrente = conti.get(i); + isImported = true; } else { File percorsoConti = new File(PATH_CONTI); if (!percorsoConti.exists()) { @@ -103,9 +106,10 @@ public class MyBank { numeroContoCorrente); conti.add(contoCorrente); salvaContoCorrente(contoCorrente); + isImported = false; } - return contoCorrente; + return new ContoCorrenteWrapper(contoCorrente, isImported); } public static boolean isCodiceFiscaleValid(String codiceFiscale) { @@ -114,12 +118,17 @@ public class MyBank { } public static Date dataDiNascita(String dataDiNascita) throws ParseException { - final String FORMATO_DATA = "dd/MM/yyyy"; SimpleDateFormat sdf = new SimpleDateFormat(FORMATO_DATA); sdf.setLenient(false); return sdf.parse(dataDiNascita); } + public static String dataDiNascita(Date dataDiNascita) { + SimpleDateFormat sdf = new SimpleDateFormat(FORMATO_DATA); + sdf.setLenient(false); + return sdf.format(dataDiNascita); + } + public static double valoreDouble(String numeroDouble) throws NumberFormatException { double valoreDouble;