From 843b3f3a8769d7783ecd251c645afcff009864b9 Mon Sep 17 00:00:00 2001 From: Thomas Rubini <74205383+ThomasRubini@users.noreply.github.com> Date: Mon, 6 Jun 2022 16:14:16 +0200 Subject: [PATCH] =?UTF-8?q?ajout=20de=20la=20recherche=20c=C3=B4t=C3=A9=20?= =?UTF-8?q?JPA=20+?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/fr/univ_amu/iut/dao/DAOUsage.java | 6 ++++ .../univ_amu/iut/dao/jpa/DAOFactoryJPA.java | 32 +++++++++++++++++++ .../iut/dao/jpa/DAOThematiqueJPA.java | 2 +- .../fr/univ_amu/iut/dao/jpa/DAOUsageJPA.java | 13 ++++++++ 4 files changed, 52 insertions(+), 1 deletion(-) diff --git a/src/main/java/fr/univ_amu/iut/dao/DAOUsage.java b/src/main/java/fr/univ_amu/iut/dao/DAOUsage.java index 24a649d..5b622a0 100644 --- a/src/main/java/fr/univ_amu/iut/dao/DAOUsage.java +++ b/src/main/java/fr/univ_amu/iut/dao/DAOUsage.java @@ -1,6 +1,12 @@ 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 java.util.List; + public interface DAOUsage extends DAO{ + List search(Thematique thematique, Discipline discipline, Academie academie); } diff --git a/src/main/java/fr/univ_amu/iut/dao/jpa/DAOFactoryJPA.java b/src/main/java/fr/univ_amu/iut/dao/jpa/DAOFactoryJPA.java index b4d0549..e6a4d63 100644 --- a/src/main/java/fr/univ_amu/iut/dao/jpa/DAOFactoryJPA.java +++ b/src/main/java/fr/univ_amu/iut/dao/jpa/DAOFactoryJPA.java @@ -2,14 +2,46 @@ package fr.univ_amu.iut.dao.jpa; import fr.univ_amu.iut.dao.*; 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.EntityManagerFactory; import jakarta.persistence.Persistence; +import java.util.ArrayList; +import java.util.Collection; + public class DAOFactoryJPA implements DAOFactory { 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 void insertAllHelper(DAO dao, Collection 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() { if(entityManager == null){ EntityManagerFactory entityManagerFactory = Persistence.createEntityManagerFactory("gestionUsagesPU"); diff --git a/src/main/java/fr/univ_amu/iut/dao/jpa/DAOThematiqueJPA.java b/src/main/java/fr/univ_amu/iut/dao/jpa/DAOThematiqueJPA.java index fd29a25..da39696 100644 --- a/src/main/java/fr/univ_amu/iut/dao/jpa/DAOThematiqueJPA.java +++ b/src/main/java/fr/univ_amu/iut/dao/jpa/DAOThematiqueJPA.java @@ -22,7 +22,7 @@ public class DAOThematiqueJPA extends DAOBaseClassJPA implements DAO @Override public Thematique getById(int id) { TypedQuery query = entityManager.createNamedQuery("Thematique.findById", Thematique.class); - query.setParameter("numEt", id); + query.setParameter("id", id); return query.getSingleResult(); } } diff --git a/src/main/java/fr/univ_amu/iut/dao/jpa/DAOUsageJPA.java b/src/main/java/fr/univ_amu/iut/dao/jpa/DAOUsageJPA.java index 5101fe5..4b959a8 100644 --- a/src/main/java/fr/univ_amu/iut/dao/jpa/DAOUsageJPA.java +++ b/src/main/java/fr/univ_amu/iut/dao/jpa/DAOUsageJPA.java @@ -1,10 +1,14 @@ package fr.univ_amu.iut.dao.jpa; 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 jakarta.persistence.EntityManager; import jakarta.persistence.TypedQuery; +import java.io.DataInput; import java.util.List; public class DAOUsageJPA extends DAOBaseClassJPA implements DAOUsage { @@ -25,4 +29,13 @@ public class DAOUsageJPA extends DAOBaseClassJPA implements DAOUsage { query.setParameter("numEt", id); return query.getSingleResult(); } + + @Override + public List search(Thematique thematique, Discipline discipline, Academie academie) { + TypedQuery query = entityManager.createNamedQuery("Usage.search", Usage.class); + query.setParameter("thematique", thematique); + query.setParameter("discipline", discipline); + query.setParameter("academie", academie); + return query.getResultList(); + } }