Guest User

cache

a guest
Jul 28th, 2017
35
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 5.37 KB | None | 0 0
  1. import java.sql.*;
  2. import java.time.*;
  3. import java.util.*;
  4. import javafx.scene.chart.*;
  5.  
  6. /**
  7.  * DataBaseSpese: classe che realizza il back-end e tutte le operazioni da effettuare sulla base di dati.
  8.  */
  9. public class DataBaseSpese {
  10.  
  11.     private static Connection connessioneADatabase;
  12.     private static PreparedStatement statementGetSpeseInserite;
  13.     private static PreparedStatement statementGetCategorie;
  14.     private static PreparedStatement statementGetStorico;
  15.     private static PreparedStatement statementAggiungiSpesa;
  16.     private static PreparedStatement statementEliminaSpesa;
  17.     private static String url;
  18.     private static String usernameDatabase;
  19.     private static String passwordDatabase;
  20.  
  21.    
  22.     public DataBaseSpese (ParametriConfigurazione p) {
  23.         String indirizzoIP = p.getParametriDatabase().getIndirizzoIpDb();
  24.         int porta = p.getParametriDatabase().getPortaDb();
  25.         String nomeDB = p.getParametriDatabase().getNomeDb();
  26.         usernameDatabase = p.getParametriDatabase().getUsernameDb();
  27.         passwordDatabase = p.getParametriDatabase().getPwdDb();
  28.         url = "jdbc:mysql://"+indirizzoIP+":"+porta+"/"+nomeDB;
  29.         String numRow = String.valueOf(p.getParametriStilistici().getMaxRecord());
  30.        
  31.         try { //(1)
  32.             connessioneADatabase = DriverManager.getConnection(url, usernameDatabase, passwordDatabase);
  33.             statementGetSpeseInserite = connessioneADatabase.prepareStatement("SELECT * FROM spesa ORDER BY data DESC LIMIT "+numRow);
  34.             statementGetCategorie = connessioneADatabase.prepareStatement("SELECT nome FROM categoria ORDER BY nome");
  35.             statementGetStorico = connessioneADatabase.prepareStatement("SELECT SUM(costo) as costo, categoria FROM spesa WHERE data>=? AND data<=? GROUP BY categoria");    
  36.             statementAggiungiSpesa = connessioneADatabase.prepareStatement("INSERT INTO spesa VALUES (?,?,?,?,?)");
  37.             statementEliminaSpesa = connessioneADatabase.prepareStatement("DELETE FROM spesa WHERE idSpesa = ?");
  38.         } catch(SQLException e) {
  39.             System.err.println(e.getMessage());            
  40.         }
  41.      
  42.     }
  43.  
  44.     public List<Spesa> ottieniListaSpese() { //(2)
  45.         List<Spesa> listaSpese = new ArrayList<>();
  46.         try(ResultSet rs = statementGetSpeseInserite.executeQuery();) {
  47.             while(rs.next())
  48.                 listaSpese.add(new Spesa(rs.getInt("idSpesa"), rs.getDouble("costo"), rs.getString("categoria"), rs.getString("descrizione"), rs.getDate("data").toString()));
  49.         } catch(SQLException e ) {
  50.             System.err.println(e.getMessage());
  51.         }
  52.         return listaSpese;
  53.     }
  54.    
  55.     public List<String> ottieniCategorie() { //(3)
  56.         List<String> listaCategorie = new ArrayList<>();
  57.         try(ResultSet rs = statementGetCategorie.executeQuery();) {
  58.             while(rs.next())
  59.                 listaCategorie.add(rs.getString("nome"));
  60.         } catch(SQLException e ) {
  61.             System.err.println(e.getMessage());
  62.         }
  63.         return listaCategorie;
  64.     }
  65.    
  66.     public List<PieChart.Data> ottieniStoricoSpese(LocalDate dataInizio, LocalDate dataFine) { //(4)
  67.         List<PieChart.Data> listaStorico = new ArrayList<>();
  68.         try {
  69.             statementGetStorico.setDate(1, java.sql.Date.valueOf(dataInizio));
  70.             statementGetStorico.setDate(2, java.sql.Date.valueOf(dataFine));
  71.             ResultSet rs = statementGetStorico.executeQuery();
  72.            
  73.             while(rs.next())
  74.                 listaStorico.add(new PieChart.Data(rs.getString("categoria"), rs.getDouble("costo")));
  75.            
  76.         } catch(SQLException e) {
  77.             e.printStackTrace();
  78.         }
  79.         return listaStorico;
  80.     }
  81.    
  82.     public void aggiungiSpesa(double costo, String categoria, String descrizione, LocalDate data) { //(5)
  83.         try{
  84.             statementAggiungiSpesa.setInt(1, 0);
  85.             statementAggiungiSpesa.setDouble(2, costo);
  86.             statementAggiungiSpesa.setString(3, categoria);
  87.             statementAggiungiSpesa.setString(4, descrizione);
  88.             statementAggiungiSpesa.setDate(5, java.sql.Date.valueOf(data));
  89.  
  90.             statementAggiungiSpesa.executeUpdate();
  91.             System.out.println("Spesa salvata.");
  92.  
  93.         } catch(SQLException e) {
  94.             System.err.println(e.getMessage());
  95.         }        
  96.     }
  97.    
  98.     public void eliminaSpesa(int idSpesa) { //(6)
  99.         try{
  100.             statementEliminaSpesa.setInt(1, idSpesa);
  101.             statementEliminaSpesa.executeUpdate();
  102.             System.out.println("Spesa eliminata.");
  103.         } catch(SQLException e) {
  104.             System.err.println(e.getMessage());
  105.         }
  106.     }
  107.      
  108. }
  109. /*Note
  110. 1)Si settano tutte le query da utilizzare. Si utilizza inoltre anche il parametro di configurazione del numero massimo
  111. di record da estrarre dalla base di dati.
  112.  
  113. 2)Metodo che restituisce la lista delle spese archiviate nel database ed utilizzate dalla TableView della classe TabellaUltimeSpese.
  114.  
  115. 3)Metodo che restituisce la lista delle categorie archiviate nel database ed utilizzade dal comboBox della classe NuovaSpesa.
  116.  
  117. 4)Restituisce la lista di dati utili a popolare il diagramma, cioè le spese raggruppate per categoria.
  118.  
  119. 5)Archivia la spesa inserita nel form della classe NuovaSpesa.
  120.  
  121. 6)Elimina la spesa seleziona dalla tabella della classe TabellaUltimeSpese
  122. */
Add Comment
Please, Sign In to add comment