Iteración 6 - AndresGutierrezCR/In4MatesSD_P1 GitHub Wiki
En esta iteración se va a desarrollar el sexto caso de uso: Autenticarse.
Los usuarios que accedan al sistema deben autenticarse mediante el uso de un nombre de usuario y una contraseña que se encontraran almacenados previamente en la base de datos.
La interfaz IU_Autenticación se comunica con la funcionalidad de Gestor_Login y a su vez accede a los datos de la base de datos de usuarios registrados (empleados).
El usuario envia datos de login y si son correctos se muestra una confirmación de validez y permite el acceso al programa.
El usuario envia datos de login pero si son incorrectos se muestra una ventana de "error al introducir datos, datos incorrectos" y de deniega el acceso al programa.
El usuario introduce datos de login en la interfaz de LogIn, que los envía para ser contrastados con los existentes en la base de datos de usuarios, y si coinciden con un usuario registrado se le permite el acceso.
El usuario introduce datos de login en la interfaz de LogIn, que los envía para ser contrastados con los existentes en la base de datos de usuarios, y si no coinciden con un usuario registrado se le deniega el acceso.
En el paquete de presentación tenemos la interfaz IU_Autenticacion. En el paquete de dominio tenemos la clase Usuario, con los datos más importantes del mismo (Nombre, Contraseña y Tipo). En el paquete de persistencia tenemos la clase GestorAutenticacion justo con su Agente.
El usuario escribe un nombre de usuario registrado y una contraseña, que se envían y contrastan con datos existentes para confirmar o denegar el acceso al programa para el usuario que introduce los datos de login.
En el paquete de presentación tenemos la interfaz IU_Autenticacion. En el paquete de dominio tenemos la clase Usuario, con los datos más importantes del mismo (Nombre, Contraseña y Tipo). En el paquete de persistencia tenemos la clase GestorAutenticacion justo con su Agente. Se añaden nuevas funcionalidades dentro de la clase Usuario para esta versión final del Diagrama de Clases de la iteración 6.
Boceto de ventana correspondiente a la Autenticación del programa por parte de los usuarios. Presenta los campos para Usuario, Contraseña, y un botón con el texto "Entrar" para verificar los datos y acceder al programa.
Ventana correspondiente a la Autenticación del programa por parte de los usuarios. Presenta los campos para Nombre de Usuario, Contraseña, y un botón de acceso con el texto "Entrar".
Clase usuario para la generacion de objetos de tipo usuario, para su creacion primero declaramos los distintos atributos y creamos un constructor vacio y otro con todos los atributos, a su vez creamos los distintos getters y setters.
package org.Autenticacion.Dominio;
import org.Autenticacion.Persistencia.GestorUsuario;
public class Usuario {
private String nombre;
private String password;
private String tipo;
private GestorUsuario gestorUsuario;
public Usuario() {
this.gestorUsuario=new GestorUsuario();
}
public Usuario(String nombre,String password,String tipo) {
this.gestorUsuario= new GestorUsuario();
this.nombre=nombre;
this.password=password;
this.tipo=tipo;
}
public String getNombre() {
return nombre;
}
public void setNombre(String nombre) {
this.nombre = nombre;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public String getTipo() {
return tipo;
}
public void setTipo(String tipo) {
this.tipo = tipo;
}
public GestorUsuario getGestorUsuario() {
return gestorUsuario;
}
public void eliminar () {
gestorUsuario.delete(this);
}
public boolean leer() {
return gestorUsuario.read(this);
}
public void leerTodo() {
gestorUsuario.readAll();
}
public void modificar() {
gestorUsuario.update(this);
}
public void insertar() {
gestorUsuario.insert(this);
}
}
El gestor de autenticacion nos servira de intermediario ente el agente de la base de datos y la capa de dominio, para ello crearemos una lista de usuarios donde se recogeran los distintos usuarios que esten registrados en la BBDD, este gestor nos permitira, añadir, leer, eliminar y modificar usuarios en nuestra BBDD.
package org.Autenticacion.Persistencia; import java.sql.ResultSet; import java.sql.SQLException; import java.util.ArrayList;
import org.Autenticacion.Dominio.Usuario;
public class GestorUsuario {
private ArrayList <Usuario> listaUsuarios;
public GestorUsuario() {
this.listaUsuarios=new ArrayList<Usuario>();
}
public ArrayList<Usuario> getListaUsuarios() {
return this.listaUsuarios;
}
public void delete(Usuario usuario) {
try {
Agente.getAgente().modificar("DELETE FROM usuarios WHERE nombre = '"+usuario.getNombre()+"'");
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public void update(Usuario usuario) {
try {
Agente.getAgente().modificar("UPDATE usuarios SET nombre='"+usuario.getNombre()+"', "
+ "pass='"+usuario.getPassword()+"', tipo='"+usuario.getTipo()+"'"
+ " WHERE nombre = "+usuario.getNombre()+" AND pass='"+usuario.getPassword()+"' AND "
+ "tipo='"+usuario.getTipo()+"'");
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public void insert(Usuario usuario) {
try {
Agente.getAgente().modificar("INSERT INTO usuarios VALUES ('"+usuario.getNombre()+"',"
+ "'"+usuario.getPassword()+"','"+usuario.getTipo()+"')");
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public boolean read(Usuario usuario) {
ResultSet resultado;
boolean existe=false;
try {
resultado=Agente.getAgente().leer("SELECT * FROM usuarios WHERE nombre='"+usuario.getNombre()+"'"
+ " AND pass='"+usuario.getPassword()+"'");
while(resultado.next()) {
existe=true;
usuario.setNombre(resultado.getString(1));
usuario.setPassword(resultado.getString(2));
usuario.setTipo(resultado.getString(3));
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return existe;
}
public void readAll() {
ResultSet resultado;
try {
resultado = Agente.getAgente().leer("SELECT * FROM usuarios");
Usuario usuario;
while (resultado.next()){
usuario=new Usuario(resultado.getString(1),resultado.getString(2),resultado.getString(3));
listaUsuarios.add(usuario);
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}










