ajout de la recherche côté JPA +

This commit is contained in:
Thomas Rubini 2022-06-06 16:14:16 +02:00
parent c5c530d52c
commit 843b3f3a87
No known key found for this signature in database
GPG Key ID: C7D287C8C1CAC373
4 changed files with 52 additions and 1 deletions

View File

@ -1,6 +1,12 @@
package fr.univ_amu.iut.dao; package fr.univ_amu.iut.dao;
import fr.univ_amu.iut.model.Academie;
import fr.univ_amu.iut.model.Discipline;
import fr.univ_amu.iut.model.Thematique;
import fr.univ_amu.iut.model.Usage; import fr.univ_amu.iut.model.Usage;
import java.util.List;
public interface DAOUsage extends DAO<Usage>{ public interface DAOUsage extends DAO<Usage>{
List<Usage> search(Thematique thematique, Discipline discipline, Academie academie);
} }

View File

@ -2,14 +2,46 @@ package fr.univ_amu.iut.dao.jpa;
import fr.univ_amu.iut.dao.*; import fr.univ_amu.iut.dao.*;
import fr.univ_amu.iut.dao.factory.DAOFactory; import fr.univ_amu.iut.dao.factory.DAOFactory;
import fr.univ_amu.iut.model.Academie;
import fr.univ_amu.iut.model.Discipline;
import fr.univ_amu.iut.model.RegionAcademique;
import fr.univ_amu.iut.model.Thematique;
import jakarta.persistence.EntityManager; import jakarta.persistence.EntityManager;
import jakarta.persistence.EntityManagerFactory; import jakarta.persistence.EntityManagerFactory;
import jakarta.persistence.Persistence; import jakarta.persistence.Persistence;
import java.util.ArrayList;
import java.util.Collection;
public class DAOFactoryJPA implements DAOFactory { public class DAOFactoryJPA implements DAOFactory {
private EntityManager entityManager; private EntityManager entityManager;
// Pas sûr de ou initialiser la base de données
/*
On part du principe que les données dans la base de données sont inconnues :
certaines données peuvent être insérées et d'autres non. Nous faisons attention aux erreurs
Nous essayons d'être persistents aux erreurs
*/
private <T> void insertAllHelper(DAO<T> dao, Collection<T> list){
if(dao.findAll().size()==0){
entityManager.getTransaction().begin();
list.forEach(obj -> entityManager.persist(obj));
entityManager.getTransaction().commit();
}
}
public DAOFactoryJPA(){
insertAllHelper(createDAORegionAcademique(), RegionAcademique.toutes());
insertAllHelper(createDAOAcademie(), Academie.toutes());
insertAllHelper(createDAOThematique(), Thematique.toutes());
insertAllHelper(createDAODiscipline(), Discipline.toutes());
}
public EntityManager getEntityManager() { public EntityManager getEntityManager() {
if(entityManager == null){ if(entityManager == null){
EntityManagerFactory entityManagerFactory = Persistence.createEntityManagerFactory("gestionUsagesPU"); EntityManagerFactory entityManagerFactory = Persistence.createEntityManagerFactory("gestionUsagesPU");

View File

@ -22,7 +22,7 @@ public class DAOThematiqueJPA extends DAOBaseClassJPA<Thematique> implements DAO
@Override @Override
public Thematique getById(int id) { public Thematique getById(int id) {
TypedQuery<Thematique> query = entityManager.createNamedQuery("Thematique.findById", Thematique.class); TypedQuery<Thematique> query = entityManager.createNamedQuery("Thematique.findById", Thematique.class);
query.setParameter("numEt", id); query.setParameter("id", id);
return query.getSingleResult(); return query.getSingleResult();
} }
} }

View File

@ -1,10 +1,14 @@
package fr.univ_amu.iut.dao.jpa; package fr.univ_amu.iut.dao.jpa;
import fr.univ_amu.iut.dao.DAOUsage; import fr.univ_amu.iut.dao.DAOUsage;
import fr.univ_amu.iut.model.Academie;
import fr.univ_amu.iut.model.Discipline;
import fr.univ_amu.iut.model.Thematique;
import fr.univ_amu.iut.model.Usage; import fr.univ_amu.iut.model.Usage;
import jakarta.persistence.EntityManager; import jakarta.persistence.EntityManager;
import jakarta.persistence.TypedQuery; import jakarta.persistence.TypedQuery;
import java.io.DataInput;
import java.util.List; import java.util.List;
public class DAOUsageJPA extends DAOBaseClassJPA<Usage> implements DAOUsage { public class DAOUsageJPA extends DAOBaseClassJPA<Usage> implements DAOUsage {
@ -25,4 +29,13 @@ public class DAOUsageJPA extends DAOBaseClassJPA<Usage> implements DAOUsage {
query.setParameter("numEt", id); query.setParameter("numEt", id);
return query.getSingleResult(); return query.getSingleResult();
} }
@Override
public List<Usage> search(Thematique thematique, Discipline discipline, Academie academie) {
TypedQuery<Usage> query = entityManager.createNamedQuery("Usage.search", Usage.class);
query.setParameter("thematique", thematique);
query.setParameter("discipline", discipline);
query.setParameter("academie", academie);
return query.getResultList();
}
} }