Browse Source

proyecto inventario jakarta base de datos modificaciones v2

master
chore 6 months ago
parent
commit
647d2f350e
  1. 20
      si-ejb/src/java/hola/BL/TipoBL.java
  2. 4
      si-ejb/src/java/hola/BL/TipoBLLocal.java
  3. 3
      si-ejb/src/java/hola/BL/UsuarioBL.java
  4. 1
      si-ejb/src/java/hola/dao/TipoDAO.java
  5. 30
      si-ejb/src/java/hola/dao/UsuarioDAO.java
  6. 14
      si-ejb/src/java/hola/modelo/Usuario.java
  7. 25
      si-ejb/src/java/hola/token/TokenGenerator.java
  8. 160
      si-war/src/java/hola/servicios/TipoEndpoint.java

20
si-ejb/src/java/hola/BL/TipoBL.java

@ -60,45 +60,51 @@ public class TipoBL implements TipoBLLocal {
} }
@Override @Override
public void eliminarId(Tipo tipo) { public Mensaje eliminarId(Tipo tipo) {
// Comentario de lógica: Método para eliminar un proveedor por ID // Comentario de lógica: Método para eliminar un proveedor por ID
TipoDAO tdao = new TipoDAO(); TipoDAO tdao = new TipoDAO();
if (tdao.eliminar(tipo)) { if (tdao.eliminar(tipo)) {
System.out.println(Mensaje.SIN_ERROR); System.out.println(Mensaje.SIN_ERROR);
return Mensaje.SIN_ERROR;
} else { } else {
System.out.println(Mensaje.NO_EXISTE); System.out.println(Mensaje.NO_EXISTE);
return Mensaje.NO_EXISTE;
} }
} }
@Override @Override
public void editar(Tipo tipo) { public Mensaje editar(Tipo tipo) {
// Comentario de lógica: Método para editar un proveedor // Comentario de lógica: Método para editar un proveedor
Mensaje mensaje = null;
TipoDAO tipoDAO = new TipoDAO(); TipoDAO tipoDAO = new TipoDAO();
// Validar que los campos requeridos no estén vacíos // Validar que los campos requeridos no estén vacíos
if (tipo.getNombre().isEmpty() if (tipo.getNombre().isEmpty()
|| tipo.getNombre().isEmpty()
|| tipo.getStatus() == null) { ) {
// Enviar mensaje de error si algún campo está incompleto // Enviar mensaje de error si algún campo está incompleto
System.out.println(Mensaje.CAMPOS_INCOMPLETOS); System.out.println(Mensaje.CAMPOS_INCOMPLETOS);
return; return mensaje.CAMPOS_INCOMPLETOS;
} }
try { try {
// Editar el proveedor solo si todas las validaciones son exitosas // Editar el proveedor solo si todas las validaciones son exitosas
if (tipoDAO.editar(tipo) == true) { if (tipoDAO.editar(tipo) == true) {
System.out.println(Mensaje.SIN_ERROR); System.out.println(Mensaje.SIN_ERROR);
mensaje = Mensaje.SIN_ERROR;
} else { } else {
System.out.println(Mensaje.NO_EXISTE); System.out.println(Mensaje.NO_EXISTE);
mensaje = Mensaje.N0_EXISTE;
} }
} catch (Exception e) { } catch (Exception e) {
// Capturar cualquier excepción que ocurra durante la edición del proveedor // Capturar cualquier excepción que ocurra durante la edición del proveedor
System.out.println(Mensaje.DATOS_INCORRECTOS); System.out.println(Mensaje.DATOS_INCORRECTOS);
mensaje = Mensaje.DATOS_INCORRECTOS;
e.printStackTrace(); e.printStackTrace();
} }
return mensaje;
} }
@Override @Override

4
si-ejb/src/java/hola/BL/TipoBLLocal.java

@ -20,9 +20,9 @@ public interface TipoBLLocal {
public Tipo buscarId(Tipo tipo); public Tipo buscarId(Tipo tipo);
public void eliminarId(Tipo tipo); public Mensaje eliminarId(Tipo tipo);
public void editar(Tipo tipo); public Mensaje editar(Tipo tipo);
public List<Tipo> buscarValidos(boolean estado); public List<Tipo> buscarValidos(boolean estado);

3
si-ejb/src/java/hola/BL/UsuarioBL.java

@ -102,7 +102,8 @@ public class UsuarioBL implements UsuarioBLLocal {
|| usuario.getStatus() == null || usuario.getStatus() == null
|| usuario.getPaisId().getNombre().isEmpty() || usuario.getPaisId().getNombre().isEmpty()
|| usuario.getEstadoIdestado().getNombre().isEmpty() || usuario.getEstadoIdestado().getNombre().isEmpty()
|| usuario.getRolIdrol().getNombre().isEmpty()) { || usuario.getRolIdrol().getNombre().isEmpty()
) {
// Enviar mensaje de error si algún campo está incompleto // Enviar mensaje de error si algún campo está incompleto
m = Mensaje.CAMPOS_INCOMPLETOS; m = Mensaje.CAMPOS_INCOMPLETOS;

1
si-ejb/src/java/hola/dao/TipoDAO.java

@ -39,6 +39,7 @@ public class TipoDAO {
return false; return false;
} else { } else {
em.getTransaction().begin(); em.getTransaction().begin();
tipo.setStatus(1);
em.merge(tipo);//edita en la base de datos em.merge(tipo);//edita en la base de datos
em.getTransaction().commit(); em.getTransaction().commit();
return true; return true;

30
si-ejb/src/java/hola/dao/UsuarioDAO.java

@ -5,10 +5,12 @@
package hola.dao; package hola.dao;
import hola.modelo.Usuario; import hola.modelo.Usuario;
import hola.token.TokenGenerator;
import java.util.List; import java.util.List;
import java.util.Optional; import java.util.Optional;
import javax.persistence.EntityManager; import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory; import javax.persistence.EntityManagerFactory;
import javax.persistence.NoResultException;
import javax.persistence.Persistence; import javax.persistence.Persistence;
import javax.persistence.Query; import javax.persistence.Query;
@ -27,6 +29,8 @@ public class UsuarioDAO {
public void agregar(Usuario usuario) { public void agregar(Usuario usuario) {
em.getTransaction().begin(); em.getTransaction().begin();
usuario.setStatus(1); usuario.setStatus(1);
String token = TokenGenerator.generateToken();
usuario.setToken(token);
em.persist(usuario);//Almacenar en DB em.persist(usuario);//Almacenar en DB
em.getTransaction().commit(); em.getTransaction().commit();
@ -142,5 +146,31 @@ public class UsuarioDAO {
return Optional.empty(); return Optional.empty();
} }
} }
public Optional<Usuario> token(Usuario usuarios) {
Query q1 = em.createNamedQuery("Usuario.findByToken");
q1.setParameter("token", usuarios.getToken());
List<Usuario> resToken = q1.getResultList();
if (!resToken.isEmpty()) {
Usuario tokenEncontrado = resToken.stream()
.findFirst()
.orElse(null);
return Optional.ofNullable(tokenEncontrado);
} else {
return Optional.empty();
}
}
public String tokenEnd(String token) {
try {
Query q = em.createQuery("SELECT u.token FROM Usuario u WHERE u.token = :token");
q.setParameter("token", token);
return (String) q.getSingleResult();
} catch (NoResultException e) {
System.out.println("No token found for: " + token);
return null; // O lanza una excepción específica si prefieres manejarlo de esa manera
}
}
} }

14
si-ejb/src/java/hola/modelo/Usuario.java

@ -36,7 +36,8 @@ import javax.xml.bind.annotation.XmlRootElement;
@NamedQuery(name = "Usuario.findByDireccion", query = "SELECT u FROM Usuario u WHERE u.direccion = :direccion"), @NamedQuery(name = "Usuario.findByDireccion", query = "SELECT u FROM Usuario u WHERE u.direccion = :direccion"),
@NamedQuery(name = "Usuario.findByStatus", query = "SELECT u FROM Usuario u WHERE u.status = :status"), @NamedQuery(name = "Usuario.findByStatus", query = "SELECT u FROM Usuario u WHERE u.status = :status"),
@NamedQuery(name = "Usuario.findByNpila", query = "SELECT u FROM Usuario u WHERE u.npila = :npila"), @NamedQuery(name = "Usuario.findByNpila", query = "SELECT u FROM Usuario u WHERE u.npila = :npila"),
@NamedQuery(name = "Usuario.findByUsername", query = "SELECT u FROM Usuario u WHERE u.username = :username")}) @NamedQuery(name = "Usuario.findByUsername", query = "SELECT u FROM Usuario u WHERE u.username = :username"),
@NamedQuery(name = "Usuario.findByToken", query = "SELECT u FROM Usuario u WHERE u.token = :token")})
public class Usuario implements Serializable { public class Usuario implements Serializable {
private static final long serialVersionUID = 1L; private static final long serialVersionUID = 1L;
@ -67,6 +68,9 @@ public class Usuario implements Serializable {
@Size(max = 20) @Size(max = 20)
@Column(name = "username") @Column(name = "username")
private String username; private String username;
@Size(max = 50)
@Column(name = "token")
private String token;
@JoinColumn(name = "estado_idestado", referencedColumnName = "id") @JoinColumn(name = "estado_idestado", referencedColumnName = "id")
@ManyToOne(optional = false) @ManyToOne(optional = false)
private Estado estadoIdestado; private Estado estadoIdestado;
@ -156,6 +160,14 @@ public class Usuario implements Serializable {
this.username = username; this.username = username;
} }
public String getToken() {
return token;
}
public void setToken(String token) {
this.token = token;
}
public Estado getEstadoIdestado() { public Estado getEstadoIdestado() {
return estadoIdestado; return estadoIdestado;
} }

25
si-ejb/src/java/hola/token/TokenGenerator.java

@ -0,0 +1,25 @@
/*
* Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license
* Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Class.java to edit this template
*/
package hola.token;
import java.security.SecureRandom;
/**
*
* @author chore
*/
public class TokenGenerator {
private static final String CHARACTERS = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-._~";
private static final int TOKEN_LENGTH = 50;
private static final SecureRandom secureRandom = new SecureRandom();
public static String generateToken() {
StringBuilder token = new StringBuilder(TOKEN_LENGTH);
for (int i = 0; i < TOKEN_LENGTH; i++) {
token.append(CHARACTERS.charAt(secureRandom.nextInt(CHARACTERS.length())));
}
return token.toString();
}
}

160
si-war/src/java/hola/servicios/TipoEndpoint.java

@ -0,0 +1,160 @@
/*
* Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license
* Click nbfs://nbhost/SystemFileSystem/Templates/JSP_Servlet/Servlet.java to edit this template
*/
package hola.servicios;
import hola.BL.TipoBLLocal;
import hola.dao.UsuarioDAO;
import hola.modelo.Tipo;
import hola.modelo.Usuario;
import hola.msg.Mensaje;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.List;
import javax.ejb.EJB;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
/**
*
* @author chore
*/
@WebServlet(name = "TipoEndpoint", urlPatterns = {"/TipoEndpoint"})
public class TipoEndpoint extends HttpServlet {
@EJB
private TipoBLLocal tipoBL;
/**
* Processes requests for both HTTP <code>GET</code> and <code>POST</code>
* methods.
*
* @param request servlet request
* @param response servlet response
* @throws ServletException if a servlet-specific error occurs
* @throws IOException if an I/O error occurs
*/
protected void processRequest(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("text/html;charset=UTF-8");
try (PrintWriter out = response.getWriter()) {
/* TODO output your page here. You may use following sample code. */
// Obtener el token de la solicitud
String token = request.getParameter("token");
// Verificar si el token es válido
UsuarioDAO usuarioDAO = new UsuarioDAO();
Usuario usuario = new Usuario();
usuario.setToken(token);
String s = usuarioDAO.tokenEnd(token);
System.out.println(s);
if (s == null) {
// Token no válido
out.println("<h1>Token no valido</h1>");
//response.sendError(HttpServletResponse.SC_UNAUTHORIZED, "Token no válido");
List<Tipo> listaTipo = tipoBL.buscarValidos(true);
if (listaTipo != null && !listaTipo.isEmpty()) {
for (Tipo tipo : listaTipo) {
out.println("<p>" + tipo.getId() + " --- " + tipo.getNombre() + "</p>");
}
}
return;
}
Tipo tipo = new Tipo();
String opc = request.getParameter("op");
String id = request.getParameter("id");
String nombre = request.getParameter("nombre");
Mensaje mensaje = null;
if (opc != null) {
switch (Integer.parseInt(opc)) {
case 1:
tipo.setNombre(nombre);
mensaje = tipoBL.agregar(tipo);
break;
case 2:
tipo.setId(Integer.valueOf(id));
tipo.setNombre(nombre);
mensaje = tipoBL.editar(tipo);
break;
case 3:
tipo.setId(Integer.valueOf(id));
mensaje = tipoBL.eliminarId(tipo);
break;
default:
throw new AssertionError();
}
}
List<Tipo> listaTipo = tipoBL.buscarValidos(true);
if (listaTipo != null && !listaTipo.isEmpty()) {
for (Tipo tipos : listaTipo) {
out.println("<p>" + tipos.getId() + " --- " + tipos.getNombre() + "</p>");
}
out.println("<h>"+mensaje+"</h>" );
}
}
}
// <editor-fold defaultstate="collapsed" desc="HttpServlet methods. Click on the + sign on the left to edit the code.">
/**
* Handles the HTTP <code>GET</code> method.
*
* @param request servlet request
* @param response servlet response
* @throws ServletException if a servlet-specific error occurs
* @throws IOException if an I/O error occurs
*/
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
processRequest(request, response);
}
/**
* Handles the HTTP <code>POST</code> method.
*
* @param request servlet request
* @param response servlet response
* @throws ServletException if a servlet-specific error occurs
* @throws IOException if an I/O error occurs
*/
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
processRequest(request, response);
}
/**
* Returns a short description of the servlet.
*
* @return a String containing servlet description
*/
@Override
public String getServletInfo() {
return "Short description";
}// </editor-fold>
}
Loading…
Cancel
Save