Documentos de Académico
Documentos de Profesional
Documentos de Cultura
ENVIO: ENTREGA:
UNIDAD N° 4: LISTAS
PAQUETE PRINCIPAL
Clase Principal
import controlador.Controlador;
import modelo.ContactoDAO;
import vista.ContactoVista;
vista.setControlador(control);
vista.arranca();
}
}
PAQUETE CONTROLADOR
Clase Controlador
package controlador;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JOptionPane;
import modelo.Contacto;
import modelo.ContactoDAO;
import vista.ContactoVista;
@Override
public void actionPerformed(ActionEvent e) {
switch(e.getActionCommand()) {
case "crear":
if(modelo.crear(vista.getContacto())) {
JOptionPane.showMessageDialog(vista, "Contacto
ingresado exitosamente", "Información", JOptionPane.INFORMATION_MESSAGE);
}
else{
JOptionPane.showMessageDialog(vista, "Contacto NO
se pudo ingresar", "Error", JOptionPane.ERROR_MESSAGE);
}
vista.limpiar();
break;
case "consultar":
Contacto contacto = modelo.consultar(vista.getEmail());
if(contacto != null) {
vista.verContacto(contacto);
JOptionPane.showMessageDialog(vista, "Contacto
consultado exitosamente", "Información", JOptionPane.INFORMATION_MESSAGE);
}
else
JOptionPane.showMessageDialog(vista, "No existe un
contacto con ese email", "Error", JOptionPane.ERROR_MESSAGE);
break;
case "actualizar":
if(modelo.actualizar(vista.getContacto())) {
JOptionPane.showMessageDialog(vista, "Contacto
actualizado exitosamente", "Información", JOptionPane.INFORMATION_MESSAGE);
}
else{
JOptionPane.showMessageDialog(vista, "Contacto NO
se pudo actualizar", "Error", JOptionPane.ERROR_MESSAGE);
}
vista.limpiar();
break;
case "eliminar":
if(modelo.eliminar(vista.getContacto())) {
JOptionPane.showMessageDialog(vista, "Contacto
eliminado exitosamente", "Información", JOptionPane.INFORMATION_MESSAGE);
}
else{
JOptionPane.showMessageDialog(vista, "Contacto NO
se pudo eliminar", "Error", JOptionPane.ERROR_MESSAGE);
}
vista.limpiar();
break;
case "limpiar":
vista.limpiar();
break;
}
}
}
PAQUETE MODELO
Clase Conexión
package modelo;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
try {
Class.forName("org.postgresql.Driver");
con = DriverManager.getConnection(url, user, password);
}
catch(SQLException e) {
System.out.println("No se pudo conectar a la base de
datos");
e.printStackTrace();
}
catch (ClassNotFoundException e) {
System.out.println("Driver de la BD no instalado");
e.printStackTrace();
}
return con;
}
}
Clase Contacto
package modelo;
import java.time.LocalDate;
/**
*
*/
private String nombre;
private transient String email;
private LocalDate nacimiento;
private double sueldo;
/**
* @param nombre
* @param email
* @param nacimiento *
* @param sueldo
*/
public Contacto(String nombre, String email, LocalDate nacimiento,
double sueldo) {
super();
this.nombre = nombre;
this.email = email;
this.nacimiento = nacimiento;
this.sueldo = sueldo;
}
/**
* @return the nombre
*/
public String getNombre() {
return nombre;
}
/**
* @param nombre the nombre to set
*/
public void setNombre(String nombre) {
this.nombre = nombre;
}
/**
* @return the email
*/
public String getEmail() {
return email;
}
/**
* @param email the email to set
*/
public void setEmail(String email) {
this.email = email;
}
/**
* @return the nacimiento
*/
public LocalDate getNacimiento() {
return nacimiento;
}
/**
* @param nacimiento the nacimiento to set
*/
public void setNacimiento(LocalDate nacimiento) {
this.nacimiento = nacimiento;
}
/**
* @return the sueldo
*/
public double getSueldo() {
return sueldo;
}
/**
* @param sueldo the sueldo to set
*/
public void setSueldo(double sueldo) {
this.sueldo = sueldo;
}
@Override
public String toString() {
return "Contacto [nombre=" + nombre + ", email=" + email + ",
nacimiento=" + nacimiento + ", sueldo=" + sueldo + "]";
}
}
ClaseContactoDAO
package modelo;
import java.sql.Connection;
import java.sql.Date;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
try {
con = Conexion.conectar();
stm = con.createStatement();
stm.execute(sql);
creado = true;
stm.close();
con.close();
}
catch(SQLException e) {
System.out.println("Error: Clase ContactoDAO, método
crear");
e.printStackTrace();
}
return creado;
}
/**
* Devuelve el contacto desde la base datos consultado por email
* @param email E-mail del contacto a consultar
* @return Contacto consultado o null si no existe alguno con el email
ingresado
*/
public Contacto consultar(String email) {
Statement stm = null;
Connection con = null;
Contacto contacto = null;
ResultSet rs = null;
String sql = "select nombre, email, nacimiento, sueldo from
contacto where email = '" + email + "';";
try {
con = Conexion.conectar();
stm = con.createStatement();
rs = stm.executeQuery(sql);
if(rs.next()) {
contacto = new Contacto(rs.getString(1),
rs.getString(2), LocalDate.parse(rs.getString(3),
DateTimeFormatter.ofPattern("yyyy-MM-dd")) , rs.getDouble(4));
}
rs.close();
stm.close();
con.close();
}
catch(SQLException e) {
System.out.println("Error: Clase ContactoDAO, método
consultar");
e.printStackTrace();
}
return contacto;
}
try {
con = Conexion.conectar();
stm = con.createStatement();
stm.execute(sql);
actualizado = true;
stm.close();
con.close();
}
catch(SQLException e) {
System.out.println("Error: Clase ContactoDAO, método
actualizar");
e.printStackTrace();
}
return actualizado;
}
PAQUETE VISTA
Clase ContactoVista
package vista;
import javax.swing.JFrame;
import javax.swing.JLabel;
import java.awt.Component;
import java.awt.Font;
import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
import javax.swing.JTextField;
import controlador.Controlador;
import modelo.Contacto;
import javax.swing.JButton;
import java.awt.Rectangle;
@SuppressWarnings("serial")
public class ContactoVista extends JFrame {
private JTextField txtNombre;
private JTextField txtEmail;
private JTextField txtNacimiento;
private JTextField txtSueldo;
private JButton btnCrear;
private JButton btnConsultar;
private JButton btnActualizar;
private JButton btnEliminar;
private JButton btnLimpiar;
public ContactoVista() {
setResizable(false);
setBounds(new Rectangle(0, 0, 420, 210));
this.setDefaultCloseOperation(EXIT_ON_CLOSE);
setTitle("Contacto");
getContentPane().setLayout(null);
/**
* Borra el texto de todos los JTextField de esta ventana
*/
public void limpiar() {
for(Component componente :
this.getContentPane().getComponents()) {
if(componente instanceof JTextField)
((JTextField)componente).setText(null);
}
}
}