From 3c6b3b26a253ed1810edb7cb1805833938334902 Mon Sep 17 00:00:00 2001 From: Mina Guevara <107224237+minaguevara@users.noreply.github.com> Date: Fri, 1 Sep 2023 20:44:47 -0500 Subject: [PATCH 1/3] Add files via upload --- bin/jdbc/controller/HuespedesController.java | 37 ++++++ bin/jdbc/controller/ReservasController.java | 38 ++++++ bin/jdbc/dao/HuespedesDAO.java | 118 +++++++++++++++++++ bin/jdbc/dao/ReservaDAO.java | 112 ++++++++++++++++++ bin/jdbc/factory/ConnectionFactory.java | 31 +++++ bin/jdbc/factory/TesteConexion.java | 19 +++ bin/jdbc/modelo/Huespedes.java | 95 +++++++++++++++ bin/jdbc/modelo/Reserva.java | 63 ++++++++++ 8 files changed, 513 insertions(+) create mode 100644 bin/jdbc/controller/HuespedesController.java create mode 100644 bin/jdbc/controller/ReservasController.java create mode 100644 bin/jdbc/dao/HuespedesDAO.java create mode 100644 bin/jdbc/dao/ReservaDAO.java create mode 100644 bin/jdbc/factory/ConnectionFactory.java create mode 100644 bin/jdbc/factory/TesteConexion.java create mode 100644 bin/jdbc/modelo/Huespedes.java create mode 100644 bin/jdbc/modelo/Reserva.java diff --git a/bin/jdbc/controller/HuespedesController.java b/bin/jdbc/controller/HuespedesController.java new file mode 100644 index 00000000..63b291f6 --- /dev/null +++ b/bin/jdbc/controller/HuespedesController.java @@ -0,0 +1,37 @@ +package jdbc.controller; +import java.sql.Connection; +import java.sql.Date; +import java.util.List; + +import jdbc.dao.HuespedesDAO; +import jdbc.factory.ConnectionFactory; +import jdbc.modelo.Huespedes; + + +public class HuespedesController { + private HuespedesDAO huespedDAO; + + public HuespedesController() { + Connection connection = new ConnectionFactory().recuperarConexion(); + this.huespedDAO = new HuespedesDAO(connection); + } + + public void guardar(Huespedes huespedes) { + this.huespedDAO.guardar(huespedes); + } + public List listarHuespedes() { + return this.huespedDAO.listarHuespedes(); + } + + public List listarHuespedesId(String id) { + return this.huespedDAO.buscarId(id); + } + + public void actualizar(String nombre, String apellido, Date fechaN, String nacionalidad, String telefono, Integer idReserva, Integer id) { + this.huespedDAO.Actualizar(nombre, apellido, fechaN, nacionalidad, telefono, idReserva, id); + } + + public void Eliminar(Integer id) { + this.huespedDAO.Eliminar(id); + } +} diff --git a/bin/jdbc/controller/ReservasController.java b/bin/jdbc/controller/ReservasController.java new file mode 100644 index 00000000..0fd4b267 --- /dev/null +++ b/bin/jdbc/controller/ReservasController.java @@ -0,0 +1,38 @@ +package jdbc.controller; + +import java.sql.Connection; +import java.sql.Date; +import java.util.List; + +import jdbc.dao.ReservaDAO; +import jdbc.factory.ConnectionFactory; +import jdbc.modelo.Reserva; + +public class ReservasController { + private ReservaDAO reservaDAO; + + public ReservasController() { + Connection connection = new ConnectionFactory().recuperarConexion(); + this.reservaDAO = new ReservaDAO(connection); + } + + public void guardar(Reserva reserva) { + this.reservaDAO.guardar(reserva); + } + + public List buscar() { + return this.reservaDAO.buscar(); + } + + public List buscarId(String id) { + return this.reservaDAO.buscarId(id); + } + + public void actualizar(Date fechaE, Date fechaS, String valor, String formaPago, Integer id) { + this.reservaDAO.Actualizar(fechaE, fechaS, valor, formaPago, id); + } + + public void Eliminar(Integer id) { + this.reservaDAO.Eliminar(id); + } +} diff --git a/bin/jdbc/dao/HuespedesDAO.java b/bin/jdbc/dao/HuespedesDAO.java new file mode 100644 index 00000000..2109d3bd --- /dev/null +++ b/bin/jdbc/dao/HuespedesDAO.java @@ -0,0 +1,118 @@ +package jdbc.dao; + +import java.sql.Connection; +import java.sql.Date; +import java.sql.PreparedStatement; +import java.sql.ResultSet; +import java.sql.SQLException; +import java.sql.Statement; +import java.util.ArrayList; +import java.util.List; + +import jdbc.modelo.Huespedes; +import jdbc.modelo.Reserva; + + +public class HuespedesDAO { +private Connection connection; + + public HuespedesDAO(Connection connection) { + this.connection = connection; + } + + public void guardar(Huespedes huesped) { + try { + String sql = "INSERT INTO huespedes (nombre, apellido, fecha_nacimiento, nacionalidad, telefono, idReserva) VALUES (?, ?, ?, ?,?,?)"; + + try (PreparedStatement pstm = connection.prepareStatement(sql, Statement.RETURN_GENERATED_KEYS)) { + + pstm.setString(1, huesped.getNombre()); + pstm.setString(2, huesped.getApellido()); + pstm.setDate(3, huesped.getFechaNacimiento()); + pstm.setString(4, huesped.getNacionalidad()); + pstm.setString(5, huesped.getTelefono()); + pstm.setInt(6, huesped.getIdReserva()); + + pstm.execute(); + + try (ResultSet rst = pstm.getGeneratedKeys()) { + while (rst.next()) { + huesped.setId(rst.getInt(1)); + } + } + } + } catch (SQLException e) { + throw new RuntimeException(e); + } + } + public List listarHuespedes() { + List huespedes = new ArrayList(); + try { + String sql = "SELECT id, nombre, apellido, fecha_nacimiento, nacionalidad, telefono, idReserva FROM huespedes"; + + try (PreparedStatement pstm = connection.prepareStatement(sql)) { + pstm.execute(); + + transformarResultSetEnHuesped(huespedes, pstm); + } + return huespedes; + } catch (SQLException e) { + throw new RuntimeException(e); + } + } + + public List buscarId(String id) { + List huespedes = new ArrayList(); + try { + + String sql = "SELECT id, nombre, apellido, fecha_nacimiento, nacionalidad, telefono, idReserva FROM huespedes WHERE idReserva = ?"; + + try (PreparedStatement pstm = connection.prepareStatement(sql)) { + pstm.setString(1, id); + pstm.execute(); + + transformarResultSetEnHuesped(huespedes, pstm); + } + return huespedes; + } catch (SQLException e) { + throw new RuntimeException(e); + } + } + + public void Actualizar(String nombre, String apellido, Date fechaN, String nacionalidad, String telefono, Integer idReserva, Integer id) { + try (PreparedStatement stm = connection + .prepareStatement("UPDATE huespedes SET nombre = ?, apellido = ?, fecha_nacimiento = ?, nacionalidad = ?, telefono = ?, idReserva = ? WHERE id = ?")) { + stm.setString(1, nombre); + stm.setString(2, apellido); + stm.setDate(3, fechaN); + stm.setString(4, nacionalidad); + stm.setString(5, telefono); + stm.setInt(6, idReserva); + stm.setInt(7, id); + stm.execute(); + } catch (SQLException e) { + throw new RuntimeException(e); + } + } + public void Eliminar(Integer id) { + try (PreparedStatement stm = connection.prepareStatement("DELETE FROM huespedes WHERE id = ?")) { + stm.setInt(1, id); + stm.execute(); + } catch (SQLException e) { + throw new RuntimeException(e); + } + } + + private void transformarResultSetEnHuesped(List reservas, PreparedStatement pstm) throws SQLException { + try (ResultSet rst = pstm.getResultSet()) { + while (rst.next()) { + Huespedes huespedes = new Huespedes(rst.getInt(1), rst.getString(2), rst.getString(3), rst.getDate(4), rst.getString(5), rst.getString(6), rst.getInt(7)); + reservas.add(huespedes); + } + } + } + + + +} + diff --git a/bin/jdbc/dao/ReservaDAO.java b/bin/jdbc/dao/ReservaDAO.java new file mode 100644 index 00000000..129663b1 --- /dev/null +++ b/bin/jdbc/dao/ReservaDAO.java @@ -0,0 +1,112 @@ +package jdbc.dao; + +import java.sql.Connection; +import java.sql.Date; +import java.sql.PreparedStatement; +import java.sql.ResultSet; +import java.sql.SQLException; +import java.sql.Statement; +import java.util.ArrayList; +import java.util.List; +import jdbc.modelo.Reserva; + +public class ReservaDAO { + + private Connection connection; + + public ReservaDAO(Connection connection) { + this.connection = connection; + } + + public void guardar(Reserva reserva) { + try { + String sql = "INSERT INTO reservas (fecha_entrada, fecha_salida, valor, formaPago) VALUES (?, ?, ?, ?)"; + + try (PreparedStatement pstm = connection.prepareStatement(sql, Statement.RETURN_GENERATED_KEYS)) { + + pstm.setDate(1, reserva.getfechaE()); + pstm.setDate(2, reserva.getfechaS()); + pstm.setString(3, reserva.getvalor()); + pstm.setString(4, reserva.getformaPago()); + + pstm.executeUpdate(); + + try (ResultSet rst = pstm.getGeneratedKeys()) { + while (rst.next()) { + reserva.setId(rst.getInt(1)); + } + } + } + } catch (SQLException e) { + throw new RuntimeException(e); + } + + } + + public List buscar() { + List reservas = new ArrayList(); + try { + String sql = "SELECT id, fecha_entrada, fecha_salida, valor, forma_pago FROM reservas"; + + try (PreparedStatement pstm = connection.prepareStatement(sql)) { + pstm.execute(); + + transformarResultSetEnReserva(reservas, pstm); + } + return reservas; + } catch (SQLException e) { + throw new RuntimeException(e); + } + } + + public List buscarId(String id) { + List reservas = new ArrayList(); + try { + + String sql = "SELECT id, fecha_entrada, fecha_salida, valor, formaPago FROM reservas WHERE id = ?"; + + try (PreparedStatement pstm = connection.prepareStatement(sql)) { + pstm.setString(1, id); + pstm.execute(); + + transformarResultSetEnReserva(reservas, pstm); + } + return reservas; + } catch (SQLException e) { + throw new RuntimeException(e); + } + } + + public void Eliminar(Integer id) { + try (PreparedStatement stm = connection.prepareStatement("DELETE FROM reservas WHERE id = ?")) { + stm.setInt(1, id); + stm.execute(); + } catch (SQLException e) { + throw new RuntimeException(e); + } + } + + public void Actualizar(Date fechaE, Date fechaS, String valor, String formaPago, Integer id) { + try (PreparedStatement stm = connection + .prepareStatement("UPDATE reservas SET fecha_entrada = ?, fecha_salida = ?, valor = ?, formaPago = ? WHERE id = ?")) { + stm.setDate(1, fechaE); + stm.setDate(2, fechaS); + stm.setString(3, valor); + stm.setString(4, formaPago); + stm.setInt(5, id); + stm.execute(); + } catch (SQLException e) { + throw new RuntimeException(e); + } + } + + private void transformarResultSetEnReserva(List reservas, PreparedStatement pstm) throws SQLException { + try (ResultSet rst = pstm.getResultSet()) { + while (rst.next()) { + Reserva produto = new Reserva(rst.getInt(1), rst.getDate(2), rst.getDate(3), rst.getString(4), rst.getString(5)); + + reservas.add(produto); + } + } + } +} diff --git a/bin/jdbc/factory/ConnectionFactory.java b/bin/jdbc/factory/ConnectionFactory.java new file mode 100644 index 00000000..16c27330 --- /dev/null +++ b/bin/jdbc/factory/ConnectionFactory.java @@ -0,0 +1,31 @@ +package jdbc.factory; + +import java.sql.Connection; +import java.sql.SQLException; + +import javax.sql.DataSource; + +import com.mchange.v2.c3p0.ComboPooledDataSource; + +public class ConnectionFactory { + + public DataSource dataSource; + + public ConnectionFactory() { + ComboPooledDataSource comboPooledDataSource = new ComboPooledDataSource(); + comboPooledDataSource.setJdbcUrl("jdbc:mysql://localhost/hotelalura?useTimezone=true&serverTimezone=UTC"); + comboPooledDataSource.setUser("root"); + comboPooledDataSource.setPassword("aluraLatam1234"); + + + this.dataSource = comboPooledDataSource; + } + + public Connection recuperarConexion() { + try { + return this.dataSource.getConnection(); + } catch (SQLException e) { + throw new RuntimeException(e); + } + } +} diff --git a/bin/jdbc/factory/TesteConexion.java b/bin/jdbc/factory/TesteConexion.java new file mode 100644 index 00000000..0c6890e0 --- /dev/null +++ b/bin/jdbc/factory/TesteConexion.java @@ -0,0 +1,19 @@ +package jdbc.factory; +import java.sql.Connection; +import java.sql.SQLException; + +public class TesteConexion { + + public static void main(String[] args) throws SQLException { + + ConnectionFactory connectionFactory = new ConnectionFactory(); + Connection connection = connectionFactory.recuperarConexion(); + + System.out.println("Probando conexion!!"); + + connection.close(); + + System.out.println("Conexión cerrada!!"); + } + +} diff --git a/bin/jdbc/modelo/Huespedes.java b/bin/jdbc/modelo/Huespedes.java new file mode 100644 index 00000000..fc988394 --- /dev/null +++ b/bin/jdbc/modelo/Huespedes.java @@ -0,0 +1,95 @@ +package jdbc.modelo; + +import java.sql.Date; + +public class Huespedes { + private Integer Id; + private String Nombre; + private String Apellido; + private Date FechaNacimiento; + private String Nacionalidad; + private String Telefono; + private Integer IdReserva; + + public Huespedes(String nombre, String apellido, Date fechaNacimiento, String nacionalidad, String telefono, + Integer idReserva) { + super(); + Nombre = nombre; + Apellido = apellido; + FechaNacimiento = fechaNacimiento; + Nacionalidad = nacionalidad; + Telefono = telefono; + IdReserva = idReserva; + } + + public Huespedes(Integer id, String nombre, String apellido, Date fechaNacimiento, String nacionalidad, + String telefono, Integer idReserva) { + super(); + Id = id; + Nombre = nombre; + Apellido = apellido; + FechaNacimiento = fechaNacimiento; + Nacionalidad = nacionalidad; + Telefono = telefono; + IdReserva = idReserva; + } + + + public Integer getId() { + return Id; + } + + public void setId(Integer id) { + Id = id; + } + + + public String getNombre() { + return Nombre; + } + + public void setNombre(String nombre) { + Nombre = nombre; + } + + public String getApellido() { + return Apellido; + } + + public void setApellido(String apellido) { + Apellido = apellido; + } + + public String getNacionalidad() { + return Nacionalidad; + } + + public void setNacionalidad(String nacionalidad) { + Nacionalidad = nacionalidad; + } + + public Date getFechaNacimiento() { + return FechaNacimiento; + } + + public void setFechaNacimiento(Date fechaNacimiento) { + FechaNacimiento = fechaNacimiento; + } + + public String getTelefono() { + return Telefono; + } + + public void setTelefono(String telefono) { + Telefono = telefono; + } + + public Integer getIdReserva() { + return IdReserva; + } + + public void setIdReserva(Integer idReserva) { + IdReserva = idReserva; + } + +} diff --git a/bin/jdbc/modelo/Reserva.java b/bin/jdbc/modelo/Reserva.java new file mode 100644 index 00000000..4be35f17 --- /dev/null +++ b/bin/jdbc/modelo/Reserva.java @@ -0,0 +1,63 @@ +package jdbc.modelo; + +import java.sql.Date; + +public class Reserva { + + private Integer id; + private Date fechaE; + private Date fechaS; + private String valor; + private String formaPago; + + + public Reserva(Date fechaE, Date fechaS, String valor, String formaPago) { + this.fechaE = fechaE; + this.fechaS = fechaS; + this.valor = valor; + this.formaPago = formaPago; + } + + public Reserva(Integer id, Date fechaE, Date fechaS, String valor, String formaPago) { + this.id = id; + this.fechaE = fechaE; + this.fechaS = fechaS; + this.valor = valor; + this.formaPago = formaPago; + } + + public Integer getId() { + return id; + } + + public void setId(Integer id) { + this.id = id; + } + + public Date getfechaE() { + return fechaE; + } + + public Date getfechaS() { + return fechaS; + } + + public String getvalor() { + return valor; + } + + public String getformaPago() { + return formaPago; + } + + +// @Override +// public String toString() { +// // TODO Auto-generated method stub +// return String.format("La reserva generada fue: %d, %s, %s, %s, %s", this.id, this.fechaE, this.fechaS, this.valor, this.formaPago); +// } +// + + +} + From c9c51075d0afa747f96db9f274e4072eda6841a0 Mon Sep 17 00:00:00 2001 From: Mina Guevara <107224237+minaguevara@users.noreply.github.com> Date: Fri, 1 Sep 2023 20:48:01 -0500 Subject: [PATCH 2/3] Add files via upload --- src/jdbc/controller/HuespedesController.java | 37 ++++++ src/jdbc/controller/ReservasController.java | 38 ++++++ src/jdbc/dao/HuespedesDAO.java | 118 +++++++++++++++++++ src/jdbc/dao/ReservaDAO.java | 112 ++++++++++++++++++ src/jdbc/factory/ConnectionFactory.java | 31 +++++ src/jdbc/factory/TesteConexion.java | 19 +++ src/jdbc/modelo/Huespedes.java | 95 +++++++++++++++ src/jdbc/modelo/Reserva.java | 63 ++++++++++ 8 files changed, 513 insertions(+) create mode 100644 src/jdbc/controller/HuespedesController.java create mode 100644 src/jdbc/controller/ReservasController.java create mode 100644 src/jdbc/dao/HuespedesDAO.java create mode 100644 src/jdbc/dao/ReservaDAO.java create mode 100644 src/jdbc/factory/ConnectionFactory.java create mode 100644 src/jdbc/factory/TesteConexion.java create mode 100644 src/jdbc/modelo/Huespedes.java create mode 100644 src/jdbc/modelo/Reserva.java diff --git a/src/jdbc/controller/HuespedesController.java b/src/jdbc/controller/HuespedesController.java new file mode 100644 index 00000000..63b291f6 --- /dev/null +++ b/src/jdbc/controller/HuespedesController.java @@ -0,0 +1,37 @@ +package jdbc.controller; +import java.sql.Connection; +import java.sql.Date; +import java.util.List; + +import jdbc.dao.HuespedesDAO; +import jdbc.factory.ConnectionFactory; +import jdbc.modelo.Huespedes; + + +public class HuespedesController { + private HuespedesDAO huespedDAO; + + public HuespedesController() { + Connection connection = new ConnectionFactory().recuperarConexion(); + this.huespedDAO = new HuespedesDAO(connection); + } + + public void guardar(Huespedes huespedes) { + this.huespedDAO.guardar(huespedes); + } + public List listarHuespedes() { + return this.huespedDAO.listarHuespedes(); + } + + public List listarHuespedesId(String id) { + return this.huespedDAO.buscarId(id); + } + + public void actualizar(String nombre, String apellido, Date fechaN, String nacionalidad, String telefono, Integer idReserva, Integer id) { + this.huespedDAO.Actualizar(nombre, apellido, fechaN, nacionalidad, telefono, idReserva, id); + } + + public void Eliminar(Integer id) { + this.huespedDAO.Eliminar(id); + } +} diff --git a/src/jdbc/controller/ReservasController.java b/src/jdbc/controller/ReservasController.java new file mode 100644 index 00000000..0fd4b267 --- /dev/null +++ b/src/jdbc/controller/ReservasController.java @@ -0,0 +1,38 @@ +package jdbc.controller; + +import java.sql.Connection; +import java.sql.Date; +import java.util.List; + +import jdbc.dao.ReservaDAO; +import jdbc.factory.ConnectionFactory; +import jdbc.modelo.Reserva; + +public class ReservasController { + private ReservaDAO reservaDAO; + + public ReservasController() { + Connection connection = new ConnectionFactory().recuperarConexion(); + this.reservaDAO = new ReservaDAO(connection); + } + + public void guardar(Reserva reserva) { + this.reservaDAO.guardar(reserva); + } + + public List buscar() { + return this.reservaDAO.buscar(); + } + + public List buscarId(String id) { + return this.reservaDAO.buscarId(id); + } + + public void actualizar(Date fechaE, Date fechaS, String valor, String formaPago, Integer id) { + this.reservaDAO.Actualizar(fechaE, fechaS, valor, formaPago, id); + } + + public void Eliminar(Integer id) { + this.reservaDAO.Eliminar(id); + } +} diff --git a/src/jdbc/dao/HuespedesDAO.java b/src/jdbc/dao/HuespedesDAO.java new file mode 100644 index 00000000..2109d3bd --- /dev/null +++ b/src/jdbc/dao/HuespedesDAO.java @@ -0,0 +1,118 @@ +package jdbc.dao; + +import java.sql.Connection; +import java.sql.Date; +import java.sql.PreparedStatement; +import java.sql.ResultSet; +import java.sql.SQLException; +import java.sql.Statement; +import java.util.ArrayList; +import java.util.List; + +import jdbc.modelo.Huespedes; +import jdbc.modelo.Reserva; + + +public class HuespedesDAO { +private Connection connection; + + public HuespedesDAO(Connection connection) { + this.connection = connection; + } + + public void guardar(Huespedes huesped) { + try { + String sql = "INSERT INTO huespedes (nombre, apellido, fecha_nacimiento, nacionalidad, telefono, idReserva) VALUES (?, ?, ?, ?,?,?)"; + + try (PreparedStatement pstm = connection.prepareStatement(sql, Statement.RETURN_GENERATED_KEYS)) { + + pstm.setString(1, huesped.getNombre()); + pstm.setString(2, huesped.getApellido()); + pstm.setDate(3, huesped.getFechaNacimiento()); + pstm.setString(4, huesped.getNacionalidad()); + pstm.setString(5, huesped.getTelefono()); + pstm.setInt(6, huesped.getIdReserva()); + + pstm.execute(); + + try (ResultSet rst = pstm.getGeneratedKeys()) { + while (rst.next()) { + huesped.setId(rst.getInt(1)); + } + } + } + } catch (SQLException e) { + throw new RuntimeException(e); + } + } + public List listarHuespedes() { + List huespedes = new ArrayList(); + try { + String sql = "SELECT id, nombre, apellido, fecha_nacimiento, nacionalidad, telefono, idReserva FROM huespedes"; + + try (PreparedStatement pstm = connection.prepareStatement(sql)) { + pstm.execute(); + + transformarResultSetEnHuesped(huespedes, pstm); + } + return huespedes; + } catch (SQLException e) { + throw new RuntimeException(e); + } + } + + public List buscarId(String id) { + List huespedes = new ArrayList(); + try { + + String sql = "SELECT id, nombre, apellido, fecha_nacimiento, nacionalidad, telefono, idReserva FROM huespedes WHERE idReserva = ?"; + + try (PreparedStatement pstm = connection.prepareStatement(sql)) { + pstm.setString(1, id); + pstm.execute(); + + transformarResultSetEnHuesped(huespedes, pstm); + } + return huespedes; + } catch (SQLException e) { + throw new RuntimeException(e); + } + } + + public void Actualizar(String nombre, String apellido, Date fechaN, String nacionalidad, String telefono, Integer idReserva, Integer id) { + try (PreparedStatement stm = connection + .prepareStatement("UPDATE huespedes SET nombre = ?, apellido = ?, fecha_nacimiento = ?, nacionalidad = ?, telefono = ?, idReserva = ? WHERE id = ?")) { + stm.setString(1, nombre); + stm.setString(2, apellido); + stm.setDate(3, fechaN); + stm.setString(4, nacionalidad); + stm.setString(5, telefono); + stm.setInt(6, idReserva); + stm.setInt(7, id); + stm.execute(); + } catch (SQLException e) { + throw new RuntimeException(e); + } + } + public void Eliminar(Integer id) { + try (PreparedStatement stm = connection.prepareStatement("DELETE FROM huespedes WHERE id = ?")) { + stm.setInt(1, id); + stm.execute(); + } catch (SQLException e) { + throw new RuntimeException(e); + } + } + + private void transformarResultSetEnHuesped(List reservas, PreparedStatement pstm) throws SQLException { + try (ResultSet rst = pstm.getResultSet()) { + while (rst.next()) { + Huespedes huespedes = new Huespedes(rst.getInt(1), rst.getString(2), rst.getString(3), rst.getDate(4), rst.getString(5), rst.getString(6), rst.getInt(7)); + reservas.add(huespedes); + } + } + } + + + +} + diff --git a/src/jdbc/dao/ReservaDAO.java b/src/jdbc/dao/ReservaDAO.java new file mode 100644 index 00000000..129663b1 --- /dev/null +++ b/src/jdbc/dao/ReservaDAO.java @@ -0,0 +1,112 @@ +package jdbc.dao; + +import java.sql.Connection; +import java.sql.Date; +import java.sql.PreparedStatement; +import java.sql.ResultSet; +import java.sql.SQLException; +import java.sql.Statement; +import java.util.ArrayList; +import java.util.List; +import jdbc.modelo.Reserva; + +public class ReservaDAO { + + private Connection connection; + + public ReservaDAO(Connection connection) { + this.connection = connection; + } + + public void guardar(Reserva reserva) { + try { + String sql = "INSERT INTO reservas (fecha_entrada, fecha_salida, valor, formaPago) VALUES (?, ?, ?, ?)"; + + try (PreparedStatement pstm = connection.prepareStatement(sql, Statement.RETURN_GENERATED_KEYS)) { + + pstm.setDate(1, reserva.getfechaE()); + pstm.setDate(2, reserva.getfechaS()); + pstm.setString(3, reserva.getvalor()); + pstm.setString(4, reserva.getformaPago()); + + pstm.executeUpdate(); + + try (ResultSet rst = pstm.getGeneratedKeys()) { + while (rst.next()) { + reserva.setId(rst.getInt(1)); + } + } + } + } catch (SQLException e) { + throw new RuntimeException(e); + } + + } + + public List buscar() { + List reservas = new ArrayList(); + try { + String sql = "SELECT id, fecha_entrada, fecha_salida, valor, forma_pago FROM reservas"; + + try (PreparedStatement pstm = connection.prepareStatement(sql)) { + pstm.execute(); + + transformarResultSetEnReserva(reservas, pstm); + } + return reservas; + } catch (SQLException e) { + throw new RuntimeException(e); + } + } + + public List buscarId(String id) { + List reservas = new ArrayList(); + try { + + String sql = "SELECT id, fecha_entrada, fecha_salida, valor, formaPago FROM reservas WHERE id = ?"; + + try (PreparedStatement pstm = connection.prepareStatement(sql)) { + pstm.setString(1, id); + pstm.execute(); + + transformarResultSetEnReserva(reservas, pstm); + } + return reservas; + } catch (SQLException e) { + throw new RuntimeException(e); + } + } + + public void Eliminar(Integer id) { + try (PreparedStatement stm = connection.prepareStatement("DELETE FROM reservas WHERE id = ?")) { + stm.setInt(1, id); + stm.execute(); + } catch (SQLException e) { + throw new RuntimeException(e); + } + } + + public void Actualizar(Date fechaE, Date fechaS, String valor, String formaPago, Integer id) { + try (PreparedStatement stm = connection + .prepareStatement("UPDATE reservas SET fecha_entrada = ?, fecha_salida = ?, valor = ?, formaPago = ? WHERE id = ?")) { + stm.setDate(1, fechaE); + stm.setDate(2, fechaS); + stm.setString(3, valor); + stm.setString(4, formaPago); + stm.setInt(5, id); + stm.execute(); + } catch (SQLException e) { + throw new RuntimeException(e); + } + } + + private void transformarResultSetEnReserva(List reservas, PreparedStatement pstm) throws SQLException { + try (ResultSet rst = pstm.getResultSet()) { + while (rst.next()) { + Reserva produto = new Reserva(rst.getInt(1), rst.getDate(2), rst.getDate(3), rst.getString(4), rst.getString(5)); + + reservas.add(produto); + } + } + } +} diff --git a/src/jdbc/factory/ConnectionFactory.java b/src/jdbc/factory/ConnectionFactory.java new file mode 100644 index 00000000..16c27330 --- /dev/null +++ b/src/jdbc/factory/ConnectionFactory.java @@ -0,0 +1,31 @@ +package jdbc.factory; + +import java.sql.Connection; +import java.sql.SQLException; + +import javax.sql.DataSource; + +import com.mchange.v2.c3p0.ComboPooledDataSource; + +public class ConnectionFactory { + + public DataSource dataSource; + + public ConnectionFactory() { + ComboPooledDataSource comboPooledDataSource = new ComboPooledDataSource(); + comboPooledDataSource.setJdbcUrl("jdbc:mysql://localhost/hotelalura?useTimezone=true&serverTimezone=UTC"); + comboPooledDataSource.setUser("root"); + comboPooledDataSource.setPassword("aluraLatam1234"); + + + this.dataSource = comboPooledDataSource; + } + + public Connection recuperarConexion() { + try { + return this.dataSource.getConnection(); + } catch (SQLException e) { + throw new RuntimeException(e); + } + } +} diff --git a/src/jdbc/factory/TesteConexion.java b/src/jdbc/factory/TesteConexion.java new file mode 100644 index 00000000..0c6890e0 --- /dev/null +++ b/src/jdbc/factory/TesteConexion.java @@ -0,0 +1,19 @@ +package jdbc.factory; +import java.sql.Connection; +import java.sql.SQLException; + +public class TesteConexion { + + public static void main(String[] args) throws SQLException { + + ConnectionFactory connectionFactory = new ConnectionFactory(); + Connection connection = connectionFactory.recuperarConexion(); + + System.out.println("Probando conexion!!"); + + connection.close(); + + System.out.println("Conexión cerrada!!"); + } + +} diff --git a/src/jdbc/modelo/Huespedes.java b/src/jdbc/modelo/Huespedes.java new file mode 100644 index 00000000..fc988394 --- /dev/null +++ b/src/jdbc/modelo/Huespedes.java @@ -0,0 +1,95 @@ +package jdbc.modelo; + +import java.sql.Date; + +public class Huespedes { + private Integer Id; + private String Nombre; + private String Apellido; + private Date FechaNacimiento; + private String Nacionalidad; + private String Telefono; + private Integer IdReserva; + + public Huespedes(String nombre, String apellido, Date fechaNacimiento, String nacionalidad, String telefono, + Integer idReserva) { + super(); + Nombre = nombre; + Apellido = apellido; + FechaNacimiento = fechaNacimiento; + Nacionalidad = nacionalidad; + Telefono = telefono; + IdReserva = idReserva; + } + + public Huespedes(Integer id, String nombre, String apellido, Date fechaNacimiento, String nacionalidad, + String telefono, Integer idReserva) { + super(); + Id = id; + Nombre = nombre; + Apellido = apellido; + FechaNacimiento = fechaNacimiento; + Nacionalidad = nacionalidad; + Telefono = telefono; + IdReserva = idReserva; + } + + + public Integer getId() { + return Id; + } + + public void setId(Integer id) { + Id = id; + } + + + public String getNombre() { + return Nombre; + } + + public void setNombre(String nombre) { + Nombre = nombre; + } + + public String getApellido() { + return Apellido; + } + + public void setApellido(String apellido) { + Apellido = apellido; + } + + public String getNacionalidad() { + return Nacionalidad; + } + + public void setNacionalidad(String nacionalidad) { + Nacionalidad = nacionalidad; + } + + public Date getFechaNacimiento() { + return FechaNacimiento; + } + + public void setFechaNacimiento(Date fechaNacimiento) { + FechaNacimiento = fechaNacimiento; + } + + public String getTelefono() { + return Telefono; + } + + public void setTelefono(String telefono) { + Telefono = telefono; + } + + public Integer getIdReserva() { + return IdReserva; + } + + public void setIdReserva(Integer idReserva) { + IdReserva = idReserva; + } + +} diff --git a/src/jdbc/modelo/Reserva.java b/src/jdbc/modelo/Reserva.java new file mode 100644 index 00000000..4be35f17 --- /dev/null +++ b/src/jdbc/modelo/Reserva.java @@ -0,0 +1,63 @@ +package jdbc.modelo; + +import java.sql.Date; + +public class Reserva { + + private Integer id; + private Date fechaE; + private Date fechaS; + private String valor; + private String formaPago; + + + public Reserva(Date fechaE, Date fechaS, String valor, String formaPago) { + this.fechaE = fechaE; + this.fechaS = fechaS; + this.valor = valor; + this.formaPago = formaPago; + } + + public Reserva(Integer id, Date fechaE, Date fechaS, String valor, String formaPago) { + this.id = id; + this.fechaE = fechaE; + this.fechaS = fechaS; + this.valor = valor; + this.formaPago = formaPago; + } + + public Integer getId() { + return id; + } + + public void setId(Integer id) { + this.id = id; + } + + public Date getfechaE() { + return fechaE; + } + + public Date getfechaS() { + return fechaS; + } + + public String getvalor() { + return valor; + } + + public String getformaPago() { + return formaPago; + } + + +// @Override +// public String toString() { +// // TODO Auto-generated method stub +// return String.format("La reserva generada fue: %d, %s, %s, %s, %s", this.id, this.fechaE, this.fechaS, this.valor, this.formaPago); +// } +// + + +} + From b6718df27f8e64f45b803caf7fd3ad09fa21ac33 Mon Sep 17 00:00:00 2001 From: Mina Guevara <107224237+minaguevara@users.noreply.github.com> Date: Fri, 1 Sep 2023 20:56:20 -0500 Subject: [PATCH 3/3] Update README.md --- README.md | 282 +----------------------------------------------------- 1 file changed, 4 insertions(+), 278 deletions(-) diff --git a/README.md b/README.md index 248b01b0..e3c569fe 100644 --- a/README.md +++ b/README.md @@ -1,16 +1,11 @@ # Challenge ONE | Java | Back-end | Hotel Alura

- +

--- -## Primeros Pasos: - - -#### 🔹 Marca este proyecto con una ⭐ -#### 🔹 Sigue las orientaciones que tenemos en este repositorio. 📚 -#### 🔹 ¡Visita la página del desafío haciendo clic aquí! [Link do Challenge](https://www.aluracursos.com/challenges/oracle-one-back-end/hotelalura) 📃 +#### Este proyecto es un forked repository del Challenge ONE de Alura, orientado al desarrollo del back-end de un sistema de gestión de reservas para un hotel. El objetivo principal de este proyecto es crear una aplicación que permita a los usuarios realizar reservas de habitaciones en el hotel Alura.
## 🖥️ Tecnologías Utilizadas: @@ -22,276 +17,7 @@ - Plugin WindowBuilder
--- -## ⚠️ Importante! ⚠️ - -☕ Use Java versión 8 o superior para compatibilidad.

-📝 Recomendamos usar el editor de Eclipse para compatibilidad con la Interfaz Gráfica.

-🎨 La interfaz contiene dos métodos importantes: -- setResizable(false): determina el tamaño de la ventana, y a través del parámetro false, la pantalla no se puede maximizar; -- setLocationRelativeTo(null): determina la ubicación de la ventana, y a través del parámetro null la mantiene centrada en la pantalla. - -#### Para este desafío, concéntrate en la parte lógica y la conexión con la base de datos, después de completar el desafío, siéntete libre de agregar nuevas funciones y modificar la interfaz gráfica. ---- - -## 🔍 ¡Analizando nuestro repositorio! - -### Este es el repositorio base de nuestro proyecto, en el encontrarás: +### Este repositorio contiene dos ramas principales: "repositorio-base" y "proyecto-final". La rama "proyecto-final" ha sido modificada por mí e incluye lo siguiente: #### 🔹 src/views: carpeta con toda la interfaz gráfica de las pantallas necesarias para desarrollar el programa; #### 🔹 src/imagenes: carpeta con imágenes que puedes usar en tu proyecto. Siéntete libre de usar otros, si lo deseas; -
- -## ⬇️ Download - -### Cómo descargar: - -#### 🔹 Fork - -1 - Haz el fork del proyecto. En la parte superior derecha, al hacer clic en el icono se creará un repositorio del proyecto en tu cuenta personal de GitHub.
- -

- -

- -2 - Una vez que tengas el repositorio "forkado" en tu cuenta, comprueba si la URL de la página es la del repositorio de tu cuenta. - -

- -

- -3 - Haz clic en la opción Code. Se mostrarán tres formas de instalar el repositorio en su máquina, y destacamos dos: - -

- -


- -#### 🔹 Clonar o descargar el ZIP - -1 - Para clonar, simplemente copia el url resaltado en la imagen y ubicado justo debajo del HTTPS, crea una carpeta en tu computadora, abre el cmd o el git bash dentro de esa carpeta y luego ingresa el comando git clone y con el botón derecho del mouse dentro del terminal haz click en la opcion Paste para pegar el url y presiona Enter. - -

- -

- -2 - La segunda opción es descargar el código en un paquete "zipado" y extraer la carpeta a tu computadora. -

- -## 📝 Eclipse - -### ¿Cómo importar mi proyecto a Eclipse? - -1 - Una vez dentro del Editor al lado izquierdo, haz clic en el Files que está en el menú en la parte superior, elige la opción Open Projects from File System. - -

- -

- -Luego haz click en Directory y ubica el directorio del proyecto "clonado" o "extraído" en tu computadora. Haz click en Finish para completar la importación. - -

- -

- -2 - La segunda forma de importar es en File en la opción Import. O a través del Project Explorer haz clic en el campo vacío con el botón derecho del mouse y elijas la opción Import. - -

- -

- -

- -

- -Si te decides por el Import, se abrirá la ventana correspondiente. Haz clic en la opción Existing Projects Into Workspace y en el botón Next. - -

- -

- -Luego haz clic en el botón Browse y busca el proyecto en el directorio local. - -

- -

- -## 📅 JCalendar - -Tras realizar la importación a tu editor, es necesario instalar la librería JCalendar, de lo contrário, el proyecto presentará un error y no será posible abrir la ventana de Reservas.
- -Para instalar, se necesita descargar el paquete a través de ese enlace: -🔹 [Link para el JCalendar](https://toedter.com/jcalendar/) - -

- -

- -El siguiente paso es extraer los archivos a una carpeta e importar los archivos desde la carpeta lib a una carpeta local e importar los archivos a Eclipse. - -

- -

- -Archivos de carpeta lib: - -

- -

- -Haz click con el botón derecho encima del proyecto ubicado en el Package Explorer, elijas la opción Build Path y Configure Build Path. - -

- -

- -El proyecto tendrá un mensaje de error que indica que la ruta de la biblioteca no existe en tu computadora. Haz click en Libraries, luego en Classpath seleccione el archivo JCalendar, elije la opción Remove y Apply and Close. - -

- -

- -Para importar el Jcalendar desde tu computadora, después de haber "extraído" los archivos de la descarga, pulsa en ClassPath y luego en Add External JARS agrega uno por uno o selecciona todos de una vez y haz click en Apply and Close. - -

- -

- -Por lo tanto, el proyecto debe contener los siguientes archivos después de las importaciones: - -

- -

- - -## 🚧 Proyecto - -#### Al clonar o descargar el proyecto base y tener instalado el JCalendar, tendrás esta presentación al ejecutar el proyecto en Eclipse: - -

- -

- -### ⚠️ Descargué el proyecto pero los caracteres especiales no funcionan: - -Si tu proyecto tiene errores como los de la imagen, siga los pasos a continuación: - -

- -

- -Ve a Window y haz clic en Preferences. - -

- -

- -Luego haz clic en General y en Workspace. Si tu Text File Enconding no está con el Default (UTF-8), haz clic en Other, y eliges la opción UTF-8, y finaliza haciendo clic Apply and Close. - -

- -

- -## 📊 Base de Dados - -### ¿Cómo importar MySqlConnector al proyecto? - -Es la misma ruta descrita para importar el JCalendar, haga clic con el botón derecho en el proyecto, Build Path, Configure Build Path, Libraries, Add External JARs. Para encontrar la ruta de este archivo .jar, ve al disco duro de tu computadora e ingresa a la carpeta Archivos de Programas (x86). - -- Archivos de Programas (x86): -

- -

- -- MySQL -

- -

- -- Connector J 8.0: - -

- -

- -- My SQL Connector Java: -

- -

- -### Modelado de tablas: - -Para este reto te proponemos dos tablas: Reservas y Huéspedes. La tabla de huéspedes debe contener la clave externa (foreign key) idReserva. - -

- -

- - -## 🗔 Plugin WindowBuilder - -En el menú de Eclipse, ir a la pestaña Help y seleccione la opción Eclipse Marketplace. - -

- -

- -En la barra de búsqueda, ingresa window builder y haz click en Go. Después de la búsqueda, selecciona la primera opción y haz click en Install. - -

- -

- -En la siguiente ventana, selecciona el botón Confirm. - -

- -

- -Haz click en la opción para aceptar los Términos de Uso, y para finalizar haz clic en Finish. - -

- -

- -Después de la instalación, será necesario reiniciar el Eclipse. - -### ¿Cómo abrir cada ventana de diseño? - -Una vez que completes el desafío, si quieres explorar el Window Builder y agregar nuevas ventanas, o cambiar el diseño de las existentes, haz clic en el archivo .java, y luego en Open With y finalmente en Window Builder Editor. - -

- -

- -La pestaña de Design se abrirá por encima de la zona del Console. ¡Aquí puedes liberar al artista que llevas dentro de ti! - -

- -

- -## 📬 Entrega - -### ¿Cómo incluir mi proyecto con el "#" del desafío? - -1) Ten el Fork del proyecto en tu repositorio en Github. -2) Utiliza el topico **challengeonehotelaluralatam4**
-3) Ve a la pestaña derecha de tu proyecto y haz clic en el engranaje de configuración en la sección About, selecciona el campo **topics** e inserae la etiqueta **challengeonehotelaluralatam4** - - -### ¿Cómo hago la entrega final de mi Proyecto? - -4) Rellena el siguiente formulario con tus datos personales, junto con el enlace de tu repositorio. 🔹 [Link para o formulário](https://lp.alura.com.br/alura-latam-entrega-challenge-one-esp-back-end) - -

- -

- -5) Ve a tu correo electrónico y canjea tu insignia obtenida al completar otro desafío del Proyecto ONE! 🏆 - -6) ¡No olvides poner un enlace o video de tu proyecto en Linkedin! Etiqueta a #Oracle y #AluraLatam 🏁 - -🧡 Oracle
- - - -💙 Alura Latam
- - +#### 🔹 src/jdbc: En esta carpeta se encuentra la funcionalidad JDBC, junto con el programa que incluye una interfaz gráfica para interactuar con la base de datos;