feat: dev-web - add entityManager.getTransaction functions in Servlets

This commit is contained in:
kmitresse
2024-03-29 09:48:20 +01:00
parent 7a467efb83
commit f3698f5f78
2 changed files with 15 additions and 0 deletions
@@ -6,6 +6,7 @@
package uppa.project.servlet; package uppa.project.servlet;
import jakarta.persistence.EntityManager;
import jakarta.servlet.ServletException; import jakarta.servlet.ServletException;
import jakarta.servlet.annotation.WebServlet; import jakarta.servlet.annotation.WebServlet;
import jakarta.servlet.http.HttpServlet; import jakarta.servlet.http.HttpServlet;
@@ -17,6 +18,7 @@ import javax.mail.Message;
import uppa.project.Global; import uppa.project.Global;
import uppa.project.dao.DAO; import uppa.project.dao.DAO;
import uppa.project.dao.DAOException; import uppa.project.dao.DAOException;
import uppa.project.dao.jpa.DAO_JPA_RecoveryPasswordToken;
import uppa.project.dao.jpa.DAO_JPA_User; import uppa.project.dao.jpa.DAO_JPA_User;
import uppa.project.dao.jpa.Game_JPA_DAO_Factory; import uppa.project.dao.jpa.Game_JPA_DAO_Factory;
import uppa.project.pojo.RecoveryPasswordToken; import uppa.project.pojo.RecoveryPasswordToken;
@@ -24,10 +26,12 @@ import uppa.project.pojo.User;
import java.util.Properties; import java.util.Properties;
import javax.mail.*; import javax.mail.*;
import javax.mail.internet.*; import javax.mail.internet.*;
import uppa.project.provider.EntityManagerProvider;
@WebServlet(name = "forgottenPasswordServlet", value = "/forgotten-password") @WebServlet(name = "forgottenPasswordServlet", value = "/forgotten-password")
public class ForgottenPasswordServlet extends HttpServlet { public class ForgottenPasswordServlet extends HttpServlet {
final static EntityManager em = EntityManagerProvider.getInstance();
public void init() { public void init() {
} }
@@ -53,6 +57,7 @@ public class ForgottenPasswordServlet extends HttpServlet {
RecoveryPasswordToken recoveryPasswordToken = new RecoveryPasswordToken(token, user); RecoveryPasswordToken recoveryPasswordToken = new RecoveryPasswordToken(token, user);
CreateToken(recoveryPasswordToken); CreateToken(recoveryPasswordToken);
sendRecoveryEmail(email, token); sendRecoveryEmail(email, token);
response.sendRedirect(request.getContextPath() + "/forgotten-password?success=200"); response.sendRedirect(request.getContextPath() + "/forgotten-password?success=200");
} }
@@ -119,10 +124,13 @@ public class ForgottenPasswordServlet extends HttpServlet {
} }
public static void CreateToken(RecoveryPasswordToken token){ public static void CreateToken(RecoveryPasswordToken token){
Game_JPA_DAO_Factory jpaDaoFactory = new Game_JPA_DAO_Factory(); Game_JPA_DAO_Factory jpaDaoFactory = new Game_JPA_DAO_Factory();
em.getTransaction().begin();
try { try {
DAO<RecoveryPasswordToken> daoJpaRecoveryPasswordToken = jpaDaoFactory.getDAORecoveryPasswordToken(); DAO<RecoveryPasswordToken> daoJpaRecoveryPasswordToken = jpaDaoFactory.getDAORecoveryPasswordToken();
daoJpaRecoveryPasswordToken.create(token); daoJpaRecoveryPasswordToken.create(token);
em.getTransaction().commit();
} catch (DAOException e) { } catch (DAOException e) {
em.getTransaction().rollback();
throw new RuntimeException(e); throw new RuntimeException(e);
} }
} }
@@ -6,6 +6,7 @@
package uppa.project.servlet; package uppa.project.servlet;
import jakarta.persistence.EntityManager;
import jakarta.servlet.ServletException; import jakarta.servlet.ServletException;
import jakarta.servlet.annotation.WebServlet; import jakarta.servlet.annotation.WebServlet;
import jakarta.servlet.http.HttpServlet; import jakarta.servlet.http.HttpServlet;
@@ -19,10 +20,12 @@ import java.util.Locale;
import uppa.project.dao.DAOException; import uppa.project.dao.DAOException;
import uppa.project.dao.jpa.DAO_JPA_User; import uppa.project.dao.jpa.DAO_JPA_User;
import uppa.project.pojo.User; import uppa.project.pojo.User;
import uppa.project.provider.EntityManagerProvider;
@WebServlet(name = "registerServlet", value = "/register") @WebServlet(name = "registerServlet", value = "/register")
public class RegisterServlet extends HttpServlet { public class RegisterServlet extends HttpServlet {
static final EntityManager em = EntityManagerProvider.getInstance();
public void init() { public void init() {
} }
@@ -60,14 +63,18 @@ public class RegisterServlet extends HttpServlet {
} }
public static void createAccount(String username, String email, String password, Date birth, String gender){ public static void createAccount(String username, String email, String password, Date birth, String gender){
em.getTransaction().begin();
try{ try{
DAO_JPA_User daoJpaUser = new DAO_JPA_User(); DAO_JPA_User daoJpaUser = new DAO_JPA_User();
User user = new User(username, email, password, birth, User.getGender(gender)); User user = new User(username, email, password, birth, User.getGender(gender));
daoJpaUser.create(user); daoJpaUser.create(user);
em.getTransaction().commit();
} catch (DAOException | IllegalArgumentException e) { } catch (DAOException | IllegalArgumentException e) {
em.getTransaction().rollback();
throw new RuntimeException(e); throw new RuntimeException(e);
} }
} }
public void destroy() { public void destroy() {
} }
} }