From de989d43f5adf76f06913ee756f4e0ad81a24653 Mon Sep 17 00:00:00 2001 From: La Programmatrice Verde Date: Tue, 3 Mar 2026 23:00:00 +0100 Subject: [PATCH] Esportazione ed importazione conti correnti corretta --- build/classes/gui/GUIMyBank$1.class | Bin 805 -> 853 bytes build/classes/gui/GUIMyBank$2.class | Bin 808 -> 805 bytes build/classes/gui/GUIMyBank$3.class | Bin 814 -> 808 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$6.class | Bin 0 -> 814 bytes build/classes/gui/GUIMyBank.class | Bin 14378 -> 15436 bytes build/classes/gui/GUIMyBank.form | 19 +++- build/classes/logic/ContoCorrente.class | Bin 5500 -> 5363 bytes build/classes/logic/MyBank.class | Bin 7731 -> 8231 bytes .../classes/logic/conti/conto_692979128.json | 8 -- .../logic/conti/movimenti_692979128.txt | 39 ------- src/gui/GUIMyBank.form | 19 +++- src/gui/GUIMyBank.java | 107 ++++++++++++++---- src/logic/ContoCorrente.java | 63 ++++++----- src/logic/MyBank.java | 101 ++++++++++------- src/logic/conti/conto_692979128.json | 8 -- src/logic/conti/movimenti_692979128.txt | 39 ------- 18 files changed, 209 insertions(+), 194 deletions(-) create mode 100644 build/classes/gui/GUIMyBank$6.class delete mode 100644 build/classes/logic/conti/conto_692979128.json delete mode 100644 build/classes/logic/conti/movimenti_692979128.txt delete mode 100644 src/logic/conti/conto_692979128.json delete mode 100644 src/logic/conti/movimenti_692979128.txt diff --git a/build/classes/gui/GUIMyBank$1.class b/build/classes/gui/GUIMyBank$1.class index 4765437d220ec6dccd393e22c462aa02e1ff4d26..18b9df5b9cc77dcd6a9770c7376756ed954c9954 100644 GIT binary patch delta 362 zcmaJ+Jxjx25PmMEu}1s=V+W0jR%;ri!J(iy73o%R5ER_r+LsUs?+Zzqxb-)b{0031 zf;c$1xH-7_cf>QU;vM(#+&y>PJy@TX{r>gx3ZRdJseRvYZ$&NwQDlM4rOJY(Q)W2Q(7#J8_8MG#HEfJN@N-Rs%Pb@FdPc2K$E75n$PcAKz$j<{BS3KF0DTy&<@*F0edI<(51}UJM9f33xkml6d!oaS*jX`)L zki*0v4J5h15@`$^4CxFqK)x76A%iS~9FPap!l1~Y#K6cP4`j140yzu}EDXv(l8Hfu bK^4psVNhex0E>t)XaZ?2pmGi%4KfJ;C%;3B diff --git a/build/classes/gui/GUIMyBank$2.class b/build/classes/gui/GUIMyBank$2.class index cd0505aa59eb32219b27dd2546aff4ac495ca41c..d64bcbeefaf67bbdf371b4785c57599aef4cc4e0 100644 GIT binary patch delta 32 ocmZ3%wv=tc4_2X)iW0v~j8%+`xs$7zLRs?}I2Z~hUu6mg0JhEwQ2+n{ delta 35 rcmZ3=wt{WK4-V0iiW2Ai^t_FKs~8!xCRZ?pvgR;wFyv0Y#1sqw@=^?Z diff --git a/build/classes/gui/GUIMyBank$3.class b/build/classes/gui/GUIMyBank$3.class index 0e82a8c8b25a961d7eeb98a7c7e28dd581ae46dc..b6a09584068aaa9b8f408c81c7b579c73cb6de65 100644 GIT binary patch delta 38 ucmZ3-wt{WK4=&M?iW2Ai^t}As%^ZvsjEu#T8<|2`OBpyA$|m1t3I+fPI1HQs delta 44 zcmZ3%wvKJW4*}_tiW2Ail+5H*x6InL=4B7&sUzC*NiY1^_rV4a5Kd diff --git a/build/classes/gui/GUIMyBank$5.class b/build/classes/gui/GUIMyBank$5.class index fa65b2633b4a61e3d154eac05d8b1e7f405f37ca..e4e0ad8aeec05a82e8642d52f5838ef2221e26c3 100644 GIT binary patch delta 41 xcmZ3-wvKJWA6}Qll0=tGzr^C?%#y^-oQ&m+jP;WnnL=3`88{f4Cf{ZX1^_ub4c`C& delta 41 xcmZ3-wvKJWAKu`^oRoaeyv(Z1#GKU4oQ&m+j5U)RnL=6X7&sW}C*NiY1^_@U4io?Y diff --git a/build/classes/gui/GUIMyBank$6.class b/build/classes/gui/GUIMyBank$6.class new file mode 100644 index 0000000000000000000000000000000000000000..9d28982d2d4211b682775666bf61f01f356f5070 GIT binary patch literal 814 zcmZuvU2hUW6g>l!h3ys=#9FP^RW9hI(3d)RX6fHhRsSRhIw3#X0S%}-%=JCWG&bZ7U3}DN0F@WJ!a+vFyTcuTk{sJyizC^1gl5r(p+j{a9 z?C~d9wJ%uu5Cc~!rokw_#bt`iQz))rjdnmjrewHE>jg6Z#wGANR%YBgl#N=p_7T?B zXPo=PYF;t$j+%S_7jyQMIg1TkBeEIu27yz!PBDQpZp6D1Hc^QyB~&Tf1kX^W?-vb- Bu#5lz literal 0 HcmV?d00001 diff --git a/build/classes/gui/GUIMyBank.class b/build/classes/gui/GUIMyBank.class index c116f6aec3b244d8d01c5ba7d8f10d38316358dd..85d8fd6719e312b32cbbdc4ce72273c3eface378 100644 GIT binary patch literal 15436 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
n>_z@zRqz0zAdk;PmX?Cdnam=)W$dsU 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 - + + + @@ -60,7 +62,7 @@ - + @@ -120,7 +122,10 @@ - + + + + @@ -238,5 +243,13 @@ + + + + + + + + diff --git a/build/classes/logic/ContoCorrente.class b/build/classes/logic/ContoCorrente.class index e179b8bae025761aa9786412b6b670094e66b1f6..86eaf6816d94e8f992ea5115cf76968c7fd43c3a 100644 GIT binary patch literal 5363 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 literal 7731 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 diff --git a/build/classes/logic/conti/conto_692979128.json b/build/classes/logic/conti/conto_692979128.json deleted file mode 100644 index 75ff43f..0000000 --- a/build/classes/logic/conti/conto_692979128.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "nome" : "Verde", - "cognome" : "Bassanetti", - "codiceFiscale" : "AAAAAA12A123Z", - "saldo" : 200.0, - "numeroContoCorrente" : 692979128, - "dataDiNascita" : "04/07/2008" -} \ No newline at end of file diff --git a/build/classes/logic/conti/movimenti_692979128.txt b/build/classes/logic/conti/movimenti_692979128.txt deleted file mode 100644 index ceafdde..0000000 --- a/build/classes/logic/conti/movimenti_692979128.txt +++ /dev/null @@ -1,39 +0,0 @@ -[12:04:00.000 03/03/2026] Apertura del conto con saldo iniziale di 200.0 -[12:04:02.002 03/03/2026] Versamento di 5000.0 effettuato con successo. -[12:04:02.002 03/03/2026] Saldo corrente: 5200.0 -[12:04:05.005 03/03/2026] Prelievo di 20.0 effettuato con successo. -[12:04:05.005 03/03/2026] Saldo corrente: 5180.0 -[16:33:26.026 03/03/2026] Versamento di 2.0E11 effettuato con successo. -[16:33:26.026 03/03/2026] Saldo corrente: 2.000000002E11 -[16:33:48.048 03/03/2026] Prelievo di 2.0E10 effettuato con successo. -[16:33:48.048 03/03/2026] Saldo corrente: 1.800000002E11 -[16:33:57.057 03/03/2026] Tentato prelievo di 2.0E11 fallito per superamento saldo. -[16:33:57.057 03/03/2026] Saldo corrente: 1.800000002E11 -[16:34:00.000 03/03/2026] Prelievo di 2000000.0 effettuato con successo. -[16:34:00.000 03/03/2026] Saldo corrente: 1.799980002E11 -[16:34:05.005 03/03/2026] Tentato prelievo di 2.0E11 fallito per superamento saldo. -[16:34:05.005 03/03/2026] Saldo corrente: 1.799980002E11 -[16:34:08.008 03/03/2026] Prelievo di 9.9999999E7 effettuato con successo. -[16:34:08.008 03/03/2026] Saldo corrente: 1.79898000201E11 -[16:34:13.013 03/03/2026] Prelievo di 9.99999999E8 effettuato con successo. -[16:34:13.013 03/03/2026] Saldo corrente: 1.78898000202E11 -[16:34:17.017 03/03/2026] Prelievo di 9.999999999E9 effettuato con successo. -[16:34:17.017 03/03/2026] Saldo corrente: 1.68898000203E11 -[16:34:21.021 03/03/2026] Tentato prelievo di 1.0E17 fallito per superamento saldo. -[16:34:21.021 03/03/2026] Saldo corrente: 1.68898000203E11 -[16:34:23.023 03/03/2026] Tentato prelievo di 9.999999999999E12 fallito per superamento saldo. -[16:34:23.023 03/03/2026] Saldo corrente: 1.68898000203E11 -[16:34:25.025 03/03/2026] Prelievo di 9.99999999E8 effettuato con successo. -[16:34:25.025 03/03/2026] Saldo corrente: 1.67898000204E11 -[16:34:29.029 03/03/2026] Prelievo di 9.999999999E9 effettuato con successo. -[16:34:29.029 03/03/2026] Saldo corrente: 1.57898000205E11 -[16:34:37.037 03/03/2026] Prelievo di 1.0E11 effettuato con successo. -[16:34:37.037 03/03/2026] Saldo corrente: 5.7898000205E10 -[16:34:43.043 03/03/2026] Prelievo di 5.0E10 effettuato con successo. -[16:34:43.043 03/03/2026] Saldo corrente: 7.898000205E9 -[16:34:47.047 03/03/2026] Prelievo di 7.0E9 effettuato con successo. -[16:34:47.047 03/03/2026] Saldo corrente: 8.98000205E8 -[16:34:50.050 03/03/2026] Prelievo di 8.0E8 effettuato con successo. -[16:34:50.050 03/03/2026] Saldo corrente: 9.8000205E7 -[16:34:53.053 03/03/2026] Prelievo di 9.0E7 effettuato con successo. -[16:34:53.053 03/03/2026] Saldo corrente: 8000205.0 diff --git a/src/gui/GUIMyBank.form b/src/gui/GUIMyBank.form index 40771b4..bba498e 100644 --- a/src/gui/GUIMyBank.form +++ b/src/gui/GUIMyBank.form @@ -26,7 +26,9 @@ - + + + @@ -60,7 +62,7 @@ - + @@ -120,7 +122,10 @@ - + + + + @@ -238,5 +243,13 @@ + + + + + + + + diff --git a/src/gui/GUIMyBank.java b/src/gui/GUIMyBank.java index 2c69ce1..69543ae 100644 --- a/src/gui/GUIMyBank.java +++ b/src/gui/GUIMyBank.java @@ -7,7 +7,6 @@ package gui; import java.awt.Color; import java.io.IOException; import java.text.ParseException; -import java.util.ArrayList; import java.util.Date; import logic.MyBank; import logic.ContoCorrente; @@ -36,10 +35,10 @@ public class GUIMyBank extends javax.swing.JFrame { public GUIMyBank() { initComponents(); try { - ArrayList conti = (ArrayList) MyBank.importaConti(); - MyBank.setConti(conti); + MyBank.importaConti(); } catch (IOException e) { JOptionPane.showMessageDialog(null, e.getMessage()); + System.exit(3); } lblNumeroContoCorrente.setVisible(false); txtNumeroContoCorrente.setVisible(false); @@ -49,6 +48,14 @@ public class GUIMyBank extends javax.swing.JFrame { btnListaMovimenti.setVisible(false); txtaListaMovimenti.setVisible(false); txtaListaMovimenti.setEditable(false); + btnChiudereContoCorrente.setVisible(false); + + addWindowListener(new java.awt.event.WindowAdapter() { + @Override + public void windowClosing(java.awt.event.WindowEvent e) { + salva(true); + } + }); } /** @@ -62,6 +69,7 @@ public class GUIMyBank extends javax.swing.JFrame { // //GEN-BEGIN:initComponents private void initComponents() { @@ -84,6 +92,7 @@ public class GUIMyBank extends javax.swing.JFrame { txtaListaMovimenti = new javax.swing.JTextArea(); lblNumeroContoCorrente = new javax.swing.JLabel(); txtNumeroContoCorrente = new javax.swing.JTextField(); + btnChiudereContoCorrente = new javax.swing.JButton(); setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE); @@ -147,6 +156,9 @@ public class GUIMyBank extends javax.swing.JFrame { lblNumeroContoCorrente.setText("Numero conto corrente:"); + btnChiudereContoCorrente.setText("Chiudere conto corrente"); + btnChiudereContoCorrente.addActionListener(this::btnChiudereContoCorrenteActionPerformed); + javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane()); getContentPane().setLayout(layout); layout.setHorizontalGroup( @@ -154,7 +166,9 @@ public class GUIMyBank extends javax.swing.JFrame { .addGroup(layout.createSequentialGroup() .addGap(99, 99, 99) .addComponent(btnAprireContoCorrente) - .addContainerGap(187, Short.MAX_VALUE)) + .addGap(18, 18, 18) + .addComponent(btnChiudereContoCorrente) + .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) .addGroup(layout.createSequentialGroup() .addGap(17, 17, 17) .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) @@ -194,8 +208,8 @@ public class GUIMyBank extends javax.swing.JFrame { .addComponent(txtCognome, javax.swing.GroupLayout.PREFERRED_SIZE, 113, javax.swing.GroupLayout.PREFERRED_SIZE)))) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 39, - Short.MAX_VALUE) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, + javax.swing.GroupLayout.DEFAULT_SIZE, 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) @@ -261,7 +275,9 @@ public class GUIMyBank extends javax.swing.JFrame { .addGap(18, 18, 18) .addComponent(btnListaMovimenti))) .addGap(18, 18, 18) - .addComponent(btnAprireContoCorrente) + .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) + .addComponent(btnAprireContoCorrente) + .addComponent(btnChiudereContoCorrente)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(jScrollPane1) .addGap(14, 14, 14))); @@ -269,13 +285,63 @@ public class GUIMyBank extends javax.swing.JFrame { pack(); }// //GEN-END:initComponents - private void btnListaMovimentiActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_btnListaMovimentiActionPerformed - try { - txtaListaMovimenti.setText(contoCorrenteAperto.getLog()); - txtaListaMovimenti.setVisible(true); - } catch (IOException e) { - JOptionPane.showMessageDialog(null, e.getMessage()); + private void btnChiudereContoCorrenteActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_btnChiudereContoCorrenteActionPerformed + salva(false); + lblNumeroContoCorrente.setVisible(false); + txtNumeroContoCorrente.setVisible(false); + btnVersamento.setVisible(false); + btnPrelievo.setVisible(false); + btnListaMovimenti.setVisible(false); + txtNome.setEditable(true); + txtCognome.setEditable(true); + txtCodiceFiscale.setEditable(true); + txtDataDiNascita.setEditable(true); + txtSaldoIniziale.setEditable(true); + btnAprireContoCorrente.setEnabled(true); + btnDataDiNascita.setEnabled(true); + btnChiudereContoCorrente.setVisible(false); + txtaListaMovimenti.setVisible(false); + lblSaldoIniziale.setText("Saldo iniziale"); + txtNome.setText(""); + txtCognome.setText(""); + txtCodiceFiscale.setText(""); + txtDataDiNascita.setText(""); + txtSaldoIniziale.setText(""); + }// GEN-LAST:event_btnChiudereContoCorrenteActionPerformed + + private void salva(boolean isProgramQuitting) { + String messaggioSalvataggio = isProgramQuitting ? "Conti correnti salvati correttamente." + : "Conto corrente salvato correttamente."; + switch (JOptionPane.showConfirmDialog(null, "Salvare?", "Esci", JOptionPane.YES_NO_OPTION)) { + case 0: + try { + if (isProgramQuitting) { + MyBank.salvaContiCorrenti(); + } else { + MyBank.salvaContoCorrente(contoCorrenteAperto); + } + JOptionPane.showMessageDialog(null, messaggioSalvataggio); + } catch (IOException e) { + JOptionPane.showMessageDialog(null, e.getMessage()); + } + break; + case 1: + if (!isProgramQuitting) { + try { + MyBank.annullaUltimoContoCorrente(); + } catch (IOException e) { + JOptionPane.showMessageDialog(null, e.getMessage()); + } + } + break; + default: + break; } + } + + private void btnListaMovimentiActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_btnListaMovimentiActionPerformed + txtaListaMovimenti.setText(contoCorrenteAperto.getLogAsString()); + txtaListaMovimenti.setVisible(true); }// GEN-LAST:event_btnListaMovimentiActionPerformed private void txtNomeFocusGained(java.awt.event.FocusEvent evt) {// GEN-FIRST:event_txtNomeFocusGained @@ -313,8 +379,6 @@ public class GUIMyBank extends javax.swing.JFrame { } catch (NumberFormatException _) { JOptionPane.showMessageDialog(null, "L'importo che si desidera versare non è valido."); error = true; - } catch (IOException e) { - JOptionPane.showMessageDialog(null, e.getMessage()); } } while (error); }// GEN-LAST:event_btnVersamentoActionPerformed @@ -337,8 +401,6 @@ public class GUIMyBank extends javax.swing.JFrame { } catch (IllegalArgumentException e) { JOptionPane.showMessageDialog(null, e.getMessage()); error = true; - } catch (IOException e) { - JOptionPane.showMessageDialog(null, e.getMessage()); } } while (error); }// GEN-LAST:event_btnPrelievoActionPerformed @@ -399,13 +461,13 @@ public class GUIMyBank extends javax.swing.JFrame { return; } - try { - ContoCorrenteWrapper conto = MyBank.aggiungiConto(nome, cognome, codiceFiscale, dataDiNascita, + 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."); + 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()); @@ -430,9 +492,7 @@ public class GUIMyBank extends javax.swing.JFrame { txtSaldoIniziale.setEditable(false); btnAprireContoCorrente.setEnabled(false); btnDataDiNascita.setEnabled(false); - } catch (IOException e) { - JOptionPane.showMessageDialog(null, e.getMessage()); - } + btnChiudereContoCorrente.setVisible(true); }// GEN-LAST:event_btnAprireContoCorrenteActionPerformed @@ -467,6 +527,7 @@ public class GUIMyBank extends javax.swing.JFrame { // Variables declaration - do not modify//GEN-BEGIN:variables private javax.swing.JButton btnAprireContoCorrente; + private javax.swing.JButton btnChiudereContoCorrente; private javax.swing.JButton btnDataDiNascita; private javax.swing.JButton btnListaMovimenti; private javax.swing.JButton btnPrelievo; diff --git a/src/logic/ContoCorrente.java b/src/logic/ContoCorrente.java index 89bb01c..bd37bcd 100644 --- a/src/logic/ContoCorrente.java +++ b/src/logic/ContoCorrente.java @@ -4,9 +4,7 @@ */ package logic; -import java.io.BufferedReader; import java.io.BufferedWriter; -import java.io.FileReader; import java.io.FileWriter; import java.io.IOException; import java.text.SimpleDateFormat; @@ -30,15 +28,16 @@ public class ContoCorrente { private static ArrayList numeriContiCorrenti = new ArrayList<>(); - @JsonFormat - (shape = JsonFormat.Shape.STRING, pattern = "dd/MM/yyyy") + @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "dd/MM/yyyy") private Date dataDiNascita; + StringBuilder sb = new StringBuilder(); + public ContoCorrente() { } public ContoCorrente(String nome, String cognome, String codiceFiscale, Date dataDiNascita, double saldo, - int numeroContoCorrente) throws IOException{ + int numeroContoCorrente) { this.nome = nome; this.cognome = cognome; this.codiceFiscale = codiceFiscale; @@ -48,67 +47,67 @@ public class ContoCorrente { numeriContiCorrenti.add(numeroContoCorrente); log("Apertura del conto con saldo iniziale di " + this.saldo); } - + public static List getNumeriContiCorrenti() { return numeriContiCorrenti; } public static void setNumeriContiCorrenti(List numeriContiCorrenti) { - ContoCorrente.numeriContiCorrenti = (ArrayList)numeriContiCorrenti; + ContoCorrente.numeriContiCorrenti = (ArrayList) numeriContiCorrenti; } public int getNumeroContoCorrente() { return numeroContoCorrente; } - public void versa(double quantita) throws IOException{ + public void delNumeroContoCorrente() { + numeriContiCorrenti.removeLast(); + } + + public void versa(double quantita) { this.saldo += quantita; log("Versamento di " + quantita + " effettuato con successo."); logSaldoCorrente(); } - - public void preleva(double quantita) throws IllegalArgumentException, IOException{ + + public void preleva(double quantita) throws IllegalArgumentException { if (quantita > this.saldo) { log("Tentato prelievo di " + quantita + " fallito per superamento saldo."); logSaldoCorrente(); throw new IllegalArgumentException("La quantità desiderata eccede il saldo corrente."); - } - else { + } else { this.saldo -= quantita; log("Prelievo di " + quantita + " effettuato con successo."); logSaldoCorrente(); } } - private void logSaldoCorrente() throws IOException{ + private void logSaldoCorrente() { log("Saldo corrente: " + this.saldo); } - private void log(String messaggio) throws IOException{ - StringBuilder sb = new StringBuilder(); + private void log(String messaggio) { SimpleDateFormat sdf = new SimpleDateFormat("HH:mm:ss.sss dd/MM/yyyy"); - try (BufferedWriter bw = new BufferedWriter( - new FileWriter(MyBank.PATH_CONTI + "movimenti_" + this.numeroContoCorrente + ".txt", true))) { - sb.append("["); - sb.append(sdf.format(new Date())); - sb.append("] "); - sb.append(messaggio); - sb.append("\n"); + sb.append("["); + sb.append(sdf.format(new Date())); + sb.append("] "); + sb.append(messaggio); + sb.append("\n"); + } - bw.write(sb.toString()); + public void salvaLog() throws IOException { + try (BufferedWriter bw = new BufferedWriter( + new FileWriter(MyBank.PATH_CONTI + "movimenti_" + this.numeroContoCorrente + ".txt"))) { + + bw.write(this.sb.toString()); } catch (IOException _) { throw new IOException("Errore nella scrittura del movimento."); } } @JsonIgnore - public String getLog() throws IOException{ - try (BufferedReader br = new BufferedReader( - new FileReader(MyBank.PATH_CONTI + "movimenti_" + this.numeroContoCorrente + ".txt"))) { - return br.readAllAsString(); - } catch (IOException _) { - throw new IOException("Errore nella lettura dei movimenti."); - } + public String getLogAsString() { + return this.sb.toString(); } public String getNome() { @@ -130,4 +129,8 @@ public class ContoCorrente { public double getSaldo() { return saldo; } + + public StringBuilder getSb() { + return this.sb; + } } \ No newline at end of file diff --git a/src/logic/MyBank.java b/src/logic/MyBank.java index 8a651a1..c3ae08a 100644 --- a/src/logic/MyBank.java +++ b/src/logic/MyBank.java @@ -14,7 +14,6 @@ import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Date; -import java.util.List; import java.util.Scanner; import java.util.regex.Pattern; @@ -36,53 +35,55 @@ public class MyBank { 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) { - MyBank.conti = conti; - } + static final String ESTENSIONE_FILE = ".json"; + private static ArrayList conti = new ArrayList<>(); public static ArrayList getConti() { return conti; } - public static List importaConti() throws IOException{ - ArrayList conti = new ArrayList<>(); + public static void importaConti() throws IOException { File percorsoConti = new File(PATH_CONTI); - ObjectMapper mapper = new ObjectMapper(); - mapper.setDateFormat(new SimpleDateFormat(FORMATO_DATA)); - StringBuilder sb; - String riga; if (percorsoConti.exists() && percorsoConti.listFiles().length != 0) { for (File conto : percorsoConti.listFiles()) { - if (conto.getName().substring(conto.getName().lastIndexOf(".")).equals(".json")) { - try (BufferedReader bf = new BufferedReader(new FileReader(conto))) { - sb = new StringBuilder(); - riga = bf.readLine(); - - while (riga != null) { - sb.append(riga); - riga = bf.readLine(); - } - conti.add(mapper.readerFor(ContoCorrente.class).readValue(sb.toString())); - - ArrayList numeriContiCorrenti = (ArrayList) ContoCorrente - .getNumeriContiCorrenti(); - numeriContiCorrenti.add(conti.getLast().getNumeroContoCorrente()); - ContoCorrente.setNumeriContiCorrenti(numeriContiCorrenti); - - } catch (IOException e) { - throw new IOException("Errore nella lettura del file di conto corrente:\n" + e.getMessage()); - } + if (conto.getName().substring(conto.getName().lastIndexOf(".")).equals(ESTENSIONE_FILE)) { + importaConto(conto); } } } - return conti; } - public static ContoCorrenteWrapper aggiungiConto(String nome, String cognome, String codiceFiscale, Date dataDiNascita, - double saldoIniziale) throws IOException{ + static ContoCorrente importaConto(File conto) throws IOException { + StringBuilder sb; + String riga; + ObjectMapper mapper = new ObjectMapper(); + mapper.setDateFormat(new SimpleDateFormat(FORMATO_DATA)); + + try (BufferedReader bf = new BufferedReader(new FileReader(conto))) { + sb = new StringBuilder(); + riga = bf.readLine(); + + while (riga != null) { + sb.append(riga); + riga = bf.readLine(); + } + conti.add(mapper.readerFor(ContoCorrente.class).readValue(sb.toString())); + + ArrayList numeriContiCorrenti = (ArrayList) ContoCorrente + .getNumeriContiCorrenti(); + numeriContiCorrenti.add(conti.getLast().getNumeroContoCorrente()); + ContoCorrente.setNumeriContiCorrenti(numeriContiCorrenti); + + return conti.getLast(); + } catch (IOException e) { + throw new IOException("Errore nella lettura del file di conto corrente:\n" + e.getMessage()); + } + } + + public static ContoCorrenteWrapper aggiungiConto(String nome, String cognome, String codiceFiscale, + Date dataDiNascita, + double saldoIniziale) { int numeroContoCorrente; ContoCorrente contoCorrente; boolean exit = false; @@ -92,10 +93,10 @@ public class MyBank { numeroContoCorrente = Math.abs(codiceFiscale.hashCode()); if (ContoCorrente.getNumeriContiCorrenti().contains(numeroContoCorrente)) { - for (; i < conti.size() && exit; i++) { + for (; i < conti.size() && !exit; i++) { exit = conti.get(i).getNumeroContoCorrente() == numeroContoCorrente; } - contoCorrente = conti.get(i); + contoCorrente = conti.get(i - 1); isImported = true; } else { File percorsoConti = new File(PATH_CONTI); @@ -105,7 +106,6 @@ public class MyBank { contoCorrente = new ContoCorrente(nome, cognome, codiceFiscale, dataDiNascita, saldoIniziale, numeroContoCorrente); conti.add(contoCorrente); - salvaContoCorrente(contoCorrente); isImported = false; } @@ -141,13 +141,32 @@ public class MyBank { return valoreDouble; } - static void salvaContoCorrente(ContoCorrente conto) { + public static void salvaContoCorrente(ContoCorrente conto) throws IOException { try (BufferedWriter bw = new BufferedWriter( - new FileWriter(PATH_CONTI + "conto_" + conto.getNumeroContoCorrente() + ".json"))) { + new FileWriter(PATH_CONTI + "conto_" + conto.getNumeroContoCorrente() + ESTENSIONE_FILE))) { ObjectWriter ow = new ObjectMapper().writer().withDefaultPrettyPrinter(); bw.write(ow.writeValueAsString(conto)); - } catch (IOException _) { - System.out.println("Errore: impossibile salvare il conto corrente."); + conto.salvaLog(); + } catch (IOException e) { + throw new IOException( + "Errore: impossibile salvare il conto corrente.\n" + e.getMessage() + "\n" + e.getStackTrace()); } } + + public static void salvaContiCorrenti() throws IOException { + for (ContoCorrente contoCorrente : conti) { + salvaContoCorrente(contoCorrente); + } + } + + public static void annullaUltimoContoCorrente() throws IOException{ + int numeroUltimoConto = conti.getLast().getNumeroContoCorrente(); + conti.getLast().delNumeroContoCorrente(); + conti.removeLast(); + File percorsoUltimoConto = new File(PATH_CONTI + "conto_" + numeroUltimoConto + ESTENSIONE_FILE); + if (percorsoUltimoConto.exists()) { + importaConto(percorsoUltimoConto); + } + } + } diff --git a/src/logic/conti/conto_692979128.json b/src/logic/conti/conto_692979128.json deleted file mode 100644 index 75ff43f..0000000 --- a/src/logic/conti/conto_692979128.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "nome" : "Verde", - "cognome" : "Bassanetti", - "codiceFiscale" : "AAAAAA12A123Z", - "saldo" : 200.0, - "numeroContoCorrente" : 692979128, - "dataDiNascita" : "04/07/2008" -} \ No newline at end of file diff --git a/src/logic/conti/movimenti_692979128.txt b/src/logic/conti/movimenti_692979128.txt deleted file mode 100644 index ceafdde..0000000 --- a/src/logic/conti/movimenti_692979128.txt +++ /dev/null @@ -1,39 +0,0 @@ -[12:04:00.000 03/03/2026] Apertura del conto con saldo iniziale di 200.0 -[12:04:02.002 03/03/2026] Versamento di 5000.0 effettuato con successo. -[12:04:02.002 03/03/2026] Saldo corrente: 5200.0 -[12:04:05.005 03/03/2026] Prelievo di 20.0 effettuato con successo. -[12:04:05.005 03/03/2026] Saldo corrente: 5180.0 -[16:33:26.026 03/03/2026] Versamento di 2.0E11 effettuato con successo. -[16:33:26.026 03/03/2026] Saldo corrente: 2.000000002E11 -[16:33:48.048 03/03/2026] Prelievo di 2.0E10 effettuato con successo. -[16:33:48.048 03/03/2026] Saldo corrente: 1.800000002E11 -[16:33:57.057 03/03/2026] Tentato prelievo di 2.0E11 fallito per superamento saldo. -[16:33:57.057 03/03/2026] Saldo corrente: 1.800000002E11 -[16:34:00.000 03/03/2026] Prelievo di 2000000.0 effettuato con successo. -[16:34:00.000 03/03/2026] Saldo corrente: 1.799980002E11 -[16:34:05.005 03/03/2026] Tentato prelievo di 2.0E11 fallito per superamento saldo. -[16:34:05.005 03/03/2026] Saldo corrente: 1.799980002E11 -[16:34:08.008 03/03/2026] Prelievo di 9.9999999E7 effettuato con successo. -[16:34:08.008 03/03/2026] Saldo corrente: 1.79898000201E11 -[16:34:13.013 03/03/2026] Prelievo di 9.99999999E8 effettuato con successo. -[16:34:13.013 03/03/2026] Saldo corrente: 1.78898000202E11 -[16:34:17.017 03/03/2026] Prelievo di 9.999999999E9 effettuato con successo. -[16:34:17.017 03/03/2026] Saldo corrente: 1.68898000203E11 -[16:34:21.021 03/03/2026] Tentato prelievo di 1.0E17 fallito per superamento saldo. -[16:34:21.021 03/03/2026] Saldo corrente: 1.68898000203E11 -[16:34:23.023 03/03/2026] Tentato prelievo di 9.999999999999E12 fallito per superamento saldo. -[16:34:23.023 03/03/2026] Saldo corrente: 1.68898000203E11 -[16:34:25.025 03/03/2026] Prelievo di 9.99999999E8 effettuato con successo. -[16:34:25.025 03/03/2026] Saldo corrente: 1.67898000204E11 -[16:34:29.029 03/03/2026] Prelievo di 9.999999999E9 effettuato con successo. -[16:34:29.029 03/03/2026] Saldo corrente: 1.57898000205E11 -[16:34:37.037 03/03/2026] Prelievo di 1.0E11 effettuato con successo. -[16:34:37.037 03/03/2026] Saldo corrente: 5.7898000205E10 -[16:34:43.043 03/03/2026] Prelievo di 5.0E10 effettuato con successo. -[16:34:43.043 03/03/2026] Saldo corrente: 7.898000205E9 -[16:34:47.047 03/03/2026] Prelievo di 7.0E9 effettuato con successo. -[16:34:47.047 03/03/2026] Saldo corrente: 8.98000205E8 -[16:34:50.050 03/03/2026] Prelievo di 8.0E8 effettuato con successo. -[16:34:50.050 03/03/2026] Saldo corrente: 9.8000205E7 -[16:34:53.053 03/03/2026] Prelievo di 9.0E7 effettuato con successo. -[16:34:53.053 03/03/2026] Saldo corrente: 8000205.0