package dao; import java.sql.Connection; import java.sql.Date; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; import java.time.LocalDate; import java.util.ArrayList; import bean.Contatto; public class ContattoDao implements ContattoDaoI { OracleConnection c = new OracleConnection(); @Override public boolean create(String nome, String cognome, String servizio_sociale, String area, String indirizzo, long telefono, String email, int numero_persone, String composizione_nucleo, String note_sacchetto) { Connection connection = c.open(); String query = "insert into contatti (nome, cognome, servizio_sociale, area, indirizzo, telefono, email, numero, composizione_nucleo, note_sacchetto) values (?, ?, ?, ?, ?, ?, ?, ?, ?, ?)"; int n = -1; try { PreparedStatement st = connection.prepareStatement(query); st.setString(1, nome); st.setString(2, cognome); st.setString(3, servizio_sociale); st.setString(4, area); st.setString(5, indirizzo); st.setLong(6, telefono); st.setString(7, email); st.setInt(8, numero_persone); st.setString(9, composizione_nucleo); st.setString(10, note_sacchetto); n = st.executeUpdate(); } catch (SQLException e) { e.printStackTrace(); } c.close(); return n == -1 ? false : true; } @Override public Contatto read(long telefono) { String query = "select nome, cognome, email, servizio_sociale, area, indirizzo, numero, composizione_nucleo, note_sacchetto, ultima_consegna from contatti where telefono = ?"; Contatto contatto = null; Connection connection = c.open(); try { PreparedStatement st = connection.prepareStatement(query); st.setLong(1, telefono); ResultSet rs = st.executeQuery(); while (rs.next()) { contatto = new Contatto(); contatto.setTelefono(telefono); contatto.setNome(rs.getString(1)); contatto.setCognome(rs.getString(2)); contatto.setEmail(rs.getString(3)); contatto.setServizio_sociale(rs.getString(4)); contatto.setArea(rs.getString(5)); contatto.setIndirizzo(rs.getString(6)); contatto.setNumero_persone(rs.getInt(7)); contatto.setComposizione_nucleo(rs.getString(8)); contatto.setNote_sacchetto(rs.getString(9)); Date data = rs.getDate(10); if (data != null) { contatto.setUltima_consegna(data.toLocalDate()); } } } catch (SQLException e) { e.printStackTrace(); } c.close(); return contatto; } @Override public boolean updateConsegna(long telefono, LocalDate data_consegna) { String query = "update contatti set ultima_consegna=? where telefono=?"; int n = -1; Connection connection = c.open(); try { PreparedStatement st = connection.prepareStatement(query); st.setDate(1, Date.valueOf(data_consegna)); st.setLong(2, telefono); n = st.executeUpdate(); } catch (SQLException e) { e.printStackTrace(); } c.close(); return n == -1 ? false : true; } @Override public boolean update(String nome, String cognome, String servizio_sociale, String area, String indirizzo, long telefono, String email, int numero_persone, String composizione_nucleo, String note_sacchetto) { String query = "update contatti set nome=?, cognome=?, servizio_sociale=?, area=?, indirizzo=?, telefono=?, email = ?, numero=?, composizione_nucleo=?, note_sacchetto=? where telefono=?"; int n = -1; Connection connection = c.open(); try { PreparedStatement st = connection.prepareStatement(query); st.setString(1, nome); st.setString(2, cognome); st.setString(3, servizio_sociale); st.setString(4, area); st.setString(5, indirizzo); st.setLong(6, telefono); st.setString(7, email); st.setInt(8, numero_persone); st.setString(9, composizione_nucleo); st.setString(10, note_sacchetto); st.setLong(11, telefono); n = st.executeUpdate(); } catch (SQLException e) { e.printStackTrace(); } c.close(); return n == -1 ? false : true; } @Override public boolean delete(long telefono) { String query = "delete from contatti where telefono=?"; int n = -1; Connection connection = c.open(); try { PreparedStatement st = connection.prepareStatement(query); st.setLong(1, telefono); n = st.executeUpdate(); } catch (SQLException e) { e.printStackTrace(); } c.close(); return n == -1 ? false : true; } @Override public ArrayList leggiTutti() { String query = "select telefono, email, nome, cognome, servizio_sociale, area, indirizzo, numero, composizione_nucleo, note_sacchetto, ultima_consegna from contatti"; ArrayList contatti = new ArrayList(); Connection connection = c.open(); try { PreparedStatement st = connection.prepareStatement(query); ResultSet rs = st.executeQuery(); while (rs.next()) { Contatto contatto = new Contatto(); contatto.setTelefono(rs.getLong(1)); contatto.setEmail(rs.getString(2)); contatto.setNome(rs.getString(3)); contatto.setCognome(rs.getString(4)); contatto.setServizio_sociale(rs.getString(5)); contatto.setArea(rs.getString(6)); contatto.setIndirizzo(rs.getString(7)); contatto.setNumero_persone(rs.getInt(8)); contatto.setComposizione_nucleo(rs.getString(9)); contatto.setNote_sacchetto(rs.getString(10)); Date data = rs.getDate(11); if (data != null) { contatto.setUltima_consegna(data.toLocalDate()); } contatti.add(contatto); } } catch (SQLException e) { e.printStackTrace(); } c.close(); return contatti; } }