diff --git a/pom.xml b/pom.xml index 1741d4e..af0b331 100644 --- a/pom.xml +++ b/pom.xml @@ -20,6 +20,11 @@ + + org.xerial + sqlite-jdbc + 3.16.1 + org.openjfx javafx-controls 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 7b193f0..d013206 100644 --- a/src/main/java/fr/univ_amu/iut/dao/DAOUsage.java +++ b/src/main/java/fr/univ_amu/iut/dao/DAOUsage.java @@ -9,5 +9,5 @@ import java.util.List; public interface DAOUsage extends DAO{ List findByCriterias(Thematique thematique, Discipline discipline, Academie academie); - List findByName(String substring); + List findByNamePart(String substring); } 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 1c0a6cd..b339d31 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 @@ -40,9 +40,9 @@ public class DAOUsageJPA extends DAOBaseClassJPA implements DAOUsage { @Override - public List findByName(String substring) { - TypedQuery query = entityManager.createNamedQuery("Usage.findByName", Usage.class); - query.setParameter("substring", "%"+substring+"%"); + public List findByNamePart(String substring) { + TypedQuery query = entityManager.createNamedQuery("Usage.findByNamePart", Usage.class); + query.setParameter("substring", "%"+substring.toLowerCase()+"%"); return query.getResultList(); } } diff --git a/src/main/java/fr/univ_amu/iut/model/Discipline.java b/src/main/java/fr/univ_amu/iut/model/Discipline.java index 4393540..1d9c6a1 100644 --- a/src/main/java/fr/univ_amu/iut/model/Discipline.java +++ b/src/main/java/fr/univ_amu/iut/model/Discipline.java @@ -15,21 +15,21 @@ public class Discipline implements Serializable { private static final List INSTANCES = new ArrayList<>(); - @Transient + public static Discipline Toutes = new Discipline("Toutes disciplines"); - @Transient + public static Discipline HistoireGeographie = new Discipline("Histoire-géographie"); - @Transient + public static Discipline PhysiqueChimie = new Discipline("Physique-chimie"); - @Transient + public static Discipline ScienceEtVieDeLaTerre = new Discipline("SVT"); - @Transient + public static Discipline Technologie = new Discipline("Technologie"); - @Transient + public static Discipline Francais = new Discipline("Français"); - @Transient + public static Discipline EconomieGestion = new Discipline("Économie Gestion"); - @Transient + public static Discipline LangueVivante = new Discipline("Langue Vivante"); @Id diff --git a/src/main/java/fr/univ_amu/iut/model/Ressource.java b/src/main/java/fr/univ_amu/iut/model/Ressource.java index dd676c8..80fb508 100644 --- a/src/main/java/fr/univ_amu/iut/model/Ressource.java +++ b/src/main/java/fr/univ_amu/iut/model/Ressource.java @@ -26,8 +26,7 @@ public class Ressource implements Serializable { try{ return new URL(url); }catch(MalformedURLException e){ - e.printStackTrace(); - return null; + throw new RuntimeException(e); } } diff --git a/src/main/java/fr/univ_amu/iut/model/Usage.java b/src/main/java/fr/univ_amu/iut/model/Usage.java index 9591944..6914018 100644 --- a/src/main/java/fr/univ_amu/iut/model/Usage.java +++ b/src/main/java/fr/univ_amu/iut/model/Usage.java @@ -9,7 +9,7 @@ import java.util.List; @NamedQueries({ @NamedQuery(name = "Usage.findAll", query = "SELECT p FROM Usage p"), @NamedQuery(name = "Usage.findById", query = "SELECT p FROM Usage p WHERE p.id = :id"), - @NamedQuery(name = "Usage.findByName", query = "SELECT p FROM Usage p WHERE p.nom LIKE :substring"), + @NamedQuery(name = "Usage.findByNamePart", query = "SELECT p FROM Usage p WHERE LOWER(p.nom) LIKE :substring"), @NamedQuery(name = "Usage.findByCriterias", query = "SELECT p FROM Usage p WHERE" + "(:thematique is null or :thematique=p.thematique)" + "AND (:discipline is null or :discipline=p.discipline)"+ diff --git a/src/main/java/fr/univ_amu/iut/test/DAOUsageTest.java b/src/main/java/fr/univ_amu/iut/test/DAOUsageTest.java index 44f681e..e5267a2 100644 --- a/src/main/java/fr/univ_amu/iut/test/DAOUsageTest.java +++ b/src/main/java/fr/univ_amu/iut/test/DAOUsageTest.java @@ -57,7 +57,7 @@ public class DAOUsageTest implements DAOUsage{ } @Override - public List findByName(String substring) { + public List findByNamePart(String substring) { // TODO Auto-generated method stub return null; } diff --git a/src/main/resources/META-INF/persistence.xml b/src/main/resources/META-INF/persistence.xml index 427110d..9d40b7c 100644 --- a/src/main/resources/META-INF/persistence.xml +++ b/src/main/resources/META-INF/persistence.xml @@ -7,7 +7,7 @@ - + @@ -27,7 +27,8 @@ - + + diff --git a/src/test/java/fr/univ_amu/iut/BackendTest.java b/src/test/java/fr/univ_amu/iut/BackendTest.java index 7ada42e..cb94d2f 100644 --- a/src/test/java/fr/univ_amu/iut/BackendTest.java +++ b/src/test/java/fr/univ_amu/iut/BackendTest.java @@ -1,17 +1,12 @@ package fr.univ_amu.iut; -import fr.univ_amu.iut.dao.factory.DAOFactory; import fr.univ_amu.iut.dao.jpa.DAOFactoryJPA; import fr.univ_amu.iut.model.*; -import org.assertj.core.api.Assertions; +import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.BeforeAll; -import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; -import java.io.PrintStream; - import static org.assertj.core.api.Assertions.assertThat; -import static org.mockito.Mockito.mock; public class BackendTest { @@ -22,11 +17,31 @@ public class BackendTest { daoFactory = new DAOFactoryJPA("gestionUsagesPUTest"); Usage usage = new Usage(); - usage.setNom("Nom d'usage n°1"); - usage.addActeur(new Acteur("Thomas", "Developpeur")); - usage.addActeur(new Acteur("Djalim", "Developpeur")); + usage.setNom("Premier usage"); + usage.addActeur(new Acteur("Thomas", "Developpeur back-end")); + usage.addActeur(new Acteur("Djalim", "Developpeur Linux")); usage.addRessource(new Ressource("Google", "https://google.com", "Site web")); usage.setDiscipline(new Discipline("Informatique")); + usage.setThematique(Thematique.ExpressionOrale); + usage.setDiscipline(Discipline.Francais); + + daoFactory.createDAOUsage().insert(usage); + + usage = new Usage(); + usage.setNom("Second usage"); + usage.addActeur(new Acteur("Lucas", "Hacker professionnel")); + usage.addRessource(new Ressource("Google", "https://google.com", "Site web")); + usage.addRessource(new Ressource("Stackoverflow", "http://stackoverflow.com", "Site web")); + usage.setDiscipline(Discipline.Francais); + usage.setThematique(Thematique.ClasseInversee); + + daoFactory.createDAOUsage().insert(usage); + + usage = new Usage(); + usage.setNom("Troisieme usage"); + usage.addActeur(new Acteur("Lucas", "Beta testeur")); + usage.setDiscipline(Discipline.PhysiqueChimie); + usage.setThematique(Thematique.CreationNumerique); daoFactory.createDAOUsage().insert(usage); } @@ -43,15 +58,58 @@ public class BackendTest { @Test public void thematiques_contains_ecole_inclusive() { - // on ne créé pas une fonction findByName car elle ne serait utilisée que pour le test - - boolean ecoleInclusiveFound = false; - for(Thematique thematique : daoFactory.createDAOThematique().findAll()) { - if (thematique.getNom().equals("École inclusive")) { - ecoleInclusiveFound = true; - break; - } - } - assertThat(ecoleInclusiveFound).isTrue(); + assertThat(daoFactory.createDAOThematique().findAll()).contains(Thematique.EcoleInclusive); } -} \ No newline at end of file + + @Test + public void disciplines_contains_svt() { + assertThat(daoFactory.createDAODiscipline().findAll()).contains(Discipline.ScienceEtVieDeLaTerre); + } + + @Test + public void disciplines_does_not_contains_uninserted() { + assertThat(daoFactory.createDAODiscipline().findAll()).doesNotContain(new Discipline("Bienséance")); + } + + @Test + public void usage_find_name_part() { + var list = daoFactory.createDAOUsage().findByNamePart("Premier"); + assertThat(list.size()).isEqualTo(1); + assertThat(list.get(0).getNom()).isEqualTo("Premier usage"); + + } + @Test + public void usage_find_name_part_with_case() { + var list = daoFactory.createDAOUsage().findByNamePart("pReMiEr"); + assertThat(list.size()).isEqualTo(1); + assertThat(list.get(0).getNom()).isEqualTo("Premier usage"); + } + + @Test + public void usage_find_by_thematique() { + var list = daoFactory.createDAOUsage().findByCriterias(Thematique.ExpressionOrale, null, null); + assertThat(list.size()).isEqualTo(1); + assertThat(list.get(0).getNom()).isEqualTo("Premier usage"); + } + + @Test + public void usage_find_by_discipline(){ + var list = daoFactory.createDAOUsage().findByCriterias(null, Discipline.Francais, null); + assertThat(list.size()).isEqualTo(2); + assertThat(list.get(0).getNom()).isEqualTo("Premier usage"); + assertThat(list.get(1).getNom()).isEqualTo("Second usage"); + } + + @Test + public void usage_find_by_thematique_and_discipline(){ + var list = daoFactory.createDAOUsage().findByCriterias(Thematique.ClasseInversee, Discipline.Francais, null); + assertThat(list.size()).isEqualTo(1); + assertThat(list.get(0).getNom()).isEqualTo("Second usage"); + } + + @Test + public void should_not_insert_again(){ + daoFactory.createDAOThematique().insert(Thematique.ExpressionOrale); + daoFactory.createDAOThematique().insert(Thematique.ExpressionOrale); + } +}