feat(DevWeb): Edit findByField to search with int/boolean etc...

This commit is contained in:
Lucàs
2024-03-28 17:38:25 +01:00
parent a46a1a0f1a
commit 29388a96dd
5 changed files with 18 additions and 29 deletions
@@ -78,5 +78,5 @@ public abstract class DAO<D> {
* @throws DAOException en cas de problème * @throws DAOException en cas de problème
* @see D * @see D
*/ */
public abstract D[] findByField(String field, String value) throws DAOException; public abstract D[] findByField(String field, Object value) throws DAOException;
} }
@@ -10,6 +10,7 @@ import jakarta.persistence.EntityManager;
import jakarta.persistence.TypedQuery; import jakarta.persistence.TypedQuery;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.util.List; import java.util.List;
import java.util.Objects;
import uppa.project.dao.DAO; import uppa.project.dao.DAO;
import uppa.project.dao.DAOException; import uppa.project.dao.DAOException;
import uppa.project.pojo.Game; import uppa.project.pojo.Game;
@@ -41,16 +42,15 @@ public class DAO_JPA_Game extends DAO<Game> {
@Override @Override
public Game findById(int id) throws DAOException { public Game findById(int id) throws DAOException {
Game result = entityManager.find(Game.class, new BigDecimal(id)); return entityManager.find(Game.class, new BigDecimal(id));
entityManager.flush();
return result;
} }
@Override @Override
public Game[] findByField(String field, String value) throws DAOException { public Game[] findByField(String field, Object value) throws DAOException {
TypedQuery<Game> query = entityManager.createQuery("SELECT u FROM Game u WHERE ?1=?2", Game.class); String sqlQuery = String.format("SELECT u FROM Game u WHERE u.%s = (:val)", field);
query.setParameter(1, field);
query.setParameter(2, value); TypedQuery<Game> query = entityManager.createQuery(sqlQuery, Game.class);
query.setParameter("val", value);
List<Game> results = query.getResultList(); List<Game> results = query.getResultList();
return results.toArray(new Game[0]); return results.toArray(new Game[0]);
} }
@@ -69,15 +69,11 @@ public class DAO_JPA_Game extends DAO<Game> {
@Override @Override
public void update(Game data) throws DAOException { public void update(Game data) throws DAOException {
entityManager.getTransaction().begin();
entityManager.merge(data); entityManager.merge(data);
entityManager.getTransaction().commit();
} }
@Override @Override
public void delete(Game data) throws DAOException { public void delete(Game data) throws DAOException {
entityManager.getTransaction().begin();
entityManager.remove(data); entityManager.remove(data);
entityManager.getTransaction().commit();
} }
} }
@@ -36,16 +36,15 @@ public class DAO_JPA_Player extends DAO<Player> {
@Override @Override
public Player findById(int id) throws DAOException { public Player findById(int id) throws DAOException {
Player result = entityManager.find(Player.class, new BigDecimal(id)); return entityManager.find(Player.class, new BigDecimal(id));
entityManager.flush();
return result;
} }
@Override @Override
public Player[] findByField(String field, String value) throws DAOException { public Player[] findByField(String field, Object value) throws DAOException {
TypedQuery<Player> query = entityManager.createQuery("SELECT p FROM Player p WHERE ?1=?2", Player.class); String sqlQuery = String.format("SELECT p FROM Player p WHERE p.%s = (:val)", field);
query.setParameter(1, field);
query.setParameter(2, value); TypedQuery<Player> query = entityManager.createQuery(sqlQuery, Player.class);
query.setParameter("val", value);
List<Player> results = query.getResultList(); List<Player> results = query.getResultList();
return results.toArray(new Player[0]); return results.toArray(new Player[0]);
} }
@@ -64,15 +63,11 @@ public class DAO_JPA_Player extends DAO<Player> {
@Override @Override
public void update(Player data) throws DAOException { public void update(Player data) throws DAOException {
entityManager.getTransaction().begin();
entityManager.merge(data); entityManager.merge(data);
entityManager.getTransaction().commit();
} }
@Override @Override
public void delete(Player data) throws DAOException { public void delete(Player data) throws DAOException {
entityManager.getTransaction().begin();
entityManager.remove(data); entityManager.remove(data);
entityManager.getTransaction().commit();
} }
} }
@@ -36,11 +36,10 @@ public class DAO_JPA_RecoveryPasswordToken extends DAO<RecoveryPasswordToken> {
@Override @Override
public RecoveryPasswordToken findById(int id) throws DAOException { public RecoveryPasswordToken findById(int id) throws DAOException {
RecoveryPasswordToken result = entityManager.find(RecoveryPasswordToken.class, new BigDecimal(id)); return entityManager.find(RecoveryPasswordToken.class, new BigDecimal(id));
return result;
} }
public RecoveryPasswordToken[] findByField(String field, String value) throws DAOException { public RecoveryPasswordToken[] findByField(String field, Object value) throws DAOException {
String sqlQuery = String.format("SELECT r FROM RecoveryPasswordToken r WHERE r.%s = (:val)", field); String sqlQuery = String.format("SELECT r FROM RecoveryPasswordToken r WHERE r.%s = (:val)", field);
TypedQuery<RecoveryPasswordToken> query = entityManager.createQuery(sqlQuery, RecoveryPasswordToken.class); TypedQuery<RecoveryPasswordToken> query = entityManager.createQuery(sqlQuery, RecoveryPasswordToken.class);
@@ -36,11 +36,10 @@ public class DAO_JPA_User extends DAO<User> {
@Override @Override
public User findById(int id) throws DAOException { public User findById(int id) throws DAOException {
User result = entityManager.find(User.class, new BigDecimal(id)); return entityManager.find(User.class, new BigDecimal(id));
return result;
} }
public User[] findByField(String field, String value) throws DAOException { public User[] findByField(String field, Object value) throws DAOException {
String sqlQuery = String.format("SELECT u FROM User u WHERE u.%s = (:val)", field); String sqlQuery = String.format("SELECT u FROM User u WHERE u.%s = (:val)", field);
TypedQuery<User> query = entityManager.createQuery(sqlQuery, User.class); TypedQuery<User> query = entityManager.createQuery(sqlQuery, User.class);