merge avec main

This commit is contained in:
Djalim Simaila 2022-06-07 09:05:25 +02:00
commit 8d0d1dd81b
9 changed files with 143 additions and 79 deletions

View File

@ -1,4 +1,4 @@
name: Java CI with Maven
name: Java CI/CD with Maven
on:
- push
@ -15,7 +15,13 @@ jobs:
distribution: 'zulu'
java-package: 'jdk+fx'
cache: maven
- name: Run headless test
- name: Build and run headless test
uses: GabrielBB/xvfb-action@v1
with:
run: mvn -B package --file pom.xml
- name: Upload resulting executable
uses: actions/upload-artifact@v2
with:
name: jar file
path: target/sae201-1.0-SNAPSHOT.jar

View File

@ -14,42 +14,25 @@ public abstract class DAOBaseClassJPA<T> implements DAO<T> {
}
public boolean insert(T etudiant) {
try{
entityManager.getTransaction().begin();
entityManager.persist(etudiant);
entityManager.getTransaction().commit();
return true;
}catch(Exception e){
e.printStackTrace();
return false;
}
entityManager.getTransaction().begin();
entityManager.persist(etudiant);
entityManager.getTransaction().commit();
return true;
}
public boolean update(T obj) {
try {
entityManager.getTransaction().begin();
entityManager.merge(obj);
entityManager.getTransaction().commit();
return true;
} catch (Exception e) {
e.printStackTrace();
return false;
}
entityManager.getTransaction().begin();
entityManager.merge(obj);
entityManager.getTransaction().commit();
return true;
}
@Override
public boolean delete(T obj) {
try {
entityManager.getTransaction().begin();
entityManager.remove(obj);
entityManager.getTransaction().commit();
entityManager.getTransaction().begin();
entityManager.remove(obj);
entityManager.getTransaction().commit();
return true;
} catch (Exception e) {
e.printStackTrace();
return false;
}
return true;
}
}

View File

@ -17,34 +17,39 @@ 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 String unitName;
// Nous ne sommes pas sûrs de ou initialiser la base de données
private <T> void insertAllHelper(DAO<T> dao, Collection<T> list){
if(dao.findAll().size()==0){
entityManager.getTransaction().begin();
list.forEach(obj -> entityManager.persist(obj));
System.out.println("LOOP");
System.out.flush();
for(var a : list){
entityManager.persist(a);
}
// list.forEach(obj -> entityManager.persist(obj));
entityManager.getTransaction().commit();
}
}
public DAOFactoryJPA(){
public DAOFactoryJPA(String unitName){
this.unitName = unitName;
insertAllHelper(createDAORegionAcademique(), RegionAcademique.toutes());
insertAllHelper(createDAOAcademie(), Academie.toutes());
insertAllHelper(createDAOThematique(), Thematique.toutes());
insertAllHelper(createDAODiscipline(), Discipline.toutes());
}
public DAOFactoryJPA(){
this("gestionUsagesPU");
}
public EntityManager getEntityManager() {
if(entityManager == null){
EntityManagerFactory entityManagerFactory = Persistence.createEntityManagerFactory("gestionUsagesPU");
EntityManagerFactory entityManagerFactory = Persistence.createEntityManagerFactory(unitName);
entityManager = entityManagerFactory.createEntityManager();
}
return entityManager;

View File

@ -40,16 +40,15 @@ public class Discipline implements Serializable {
String nom;
public Discipline() {
INSTANCES.add(this);
}
public Discipline(String nom) {
this();
this.nom = nom;
INSTANCES.add(this);
}
public static List<Discipline> toutes() {
return new ArrayList<>(INSTANCES);
return INSTANCES;
}
public static Discipline getById(int id){

View File

@ -15,43 +15,43 @@ public class RegionAcademique implements Serializable {
private static List<RegionAcademique> INSTANCES = new ArrayList<>();
@Transient
public static RegionAcademique AuvergneRhoneAlpes = new RegionAcademique("Région académique Auvergne-Rhône-Alpes");
@Transient
public static RegionAcademique BourgogneFrancheComte = new RegionAcademique("Région académique Bourgogne-Franche-Comté");
@Transient
public static RegionAcademique Bretagne = new RegionAcademique("Région académique Bretagne");
@Transient
public static RegionAcademique CentreValDeLoire = new RegionAcademique("Région académique Centre-Val de Loire");
@Transient
public static RegionAcademique Corse = new RegionAcademique("Région académique Corse");
@Transient
public static RegionAcademique GrandEst = new RegionAcademique("Région académique Grand Est");
@Transient
public static RegionAcademique Guadeloupe = new RegionAcademique("Région académique Guadeloupe");
@Transient
public static RegionAcademique Guyane = new RegionAcademique("Région académique Guyane");
@Transient
public static RegionAcademique HautsDeFrance = new RegionAcademique("Région académique Hauts-de-France");
@Transient
public static RegionAcademique IleDeFrance = new RegionAcademique("Région académique Île-de-France");
@Transient
public static RegionAcademique Martinique = new RegionAcademique("Région académique Martinique");
@Transient
public static RegionAcademique Normandie = new RegionAcademique("Région académique Normandie");
@Transient
public static RegionAcademique NouvelleAquitaine = new RegionAcademique("Région académique Nouvelle-Aquitaine");
@Transient
public static RegionAcademique Occitanie = new RegionAcademique("Région académique Occitanie");
@Transient
public static RegionAcademique PaysDeLaLoire = new RegionAcademique("Région académique Pays de la Loire");
@Transient
public static RegionAcademique ProvenceAlpesCoteDAzur = new RegionAcademique("Région académique Provence-Alpes-Côte d'Azur");
@Transient
public static RegionAcademique Reunion = new RegionAcademique("Région académique La Réunion");
@Transient
public static RegionAcademique Mayotte = new RegionAcademique("Région académique Mayotte");
@Id
@GeneratedValue
int id;
@ -60,10 +60,11 @@ public class RegionAcademique implements Serializable {
String nom;
public RegionAcademique() {
INSTANCES.add(this);
}
public RegionAcademique(String nom) {
this();
INSTANCES.add(this);
this.nom = nom;
}
@ -87,6 +88,14 @@ public class RegionAcademique implements Serializable {
}
@Override
public String toString() {
return "RegionAcademique{" +
"id=" + id +
", nom='" + nom + '\'' +
'}';
}
@Override
public boolean equals(Object o) {
if (this == o) return true;

View File

@ -18,13 +18,7 @@ public class DAORessourceTest implements DAORessource {
public List<Ressource> findAll() {
List<Ressource> liste = new ArrayList<>();
for (int i = 0; i < 12; i++){
URL url = null;
try {
url = new URL("http://google.com");
} catch (MalformedURLException e) {
e.printStackTrace();
}
Ressource ressource = new Ressource("google", url, "site web");
Ressource ressource = new Ressource("google", "http://google.com", "site web");
liste.add(ressource);
}
return liste;

View File

@ -18,13 +18,7 @@ public class DAOThematiqueTest implements DAOThematique {
public List<Thematique> findAll() {
List<Thematique> liste = new ArrayList<>();
for (int i = 0; i < 12; i++){
URL url = null;
try {
url = new URL("http://google.com");
} catch (MalformedURLException e) {
e.printStackTrace();
}
Thematique thematique = new Thematique(String.valueOf(i));
Thematique thematique = new Thematique("Thematique n° "+i);
liste.add(thematique);
}
return liste;

View File

@ -7,7 +7,7 @@
<properties>
<!-- database connection properties -->
<property name="jakarta.persistence.jdbc.url" value="jdbc:mysql://localhost:3306/devapp"/>
<property name="jakarta.persistence.jdbc.url" value="jdbc:mysql://lagrottedeneotaku.hopto.org:6776/devapp"/>
<property name="jakarta.persistence.jdbc.user" value="devapp"/>
<property name="jakarta.persistence.jdbc.password" value="7kPoWBgoV5ahygxyXYGzaL"/>
<!-- Nous ne devrions pas commit le mot de passe dans le dépot, mais... je ne pense pas que le projet ne respecte la moindre règle de sécurité de toute facon (pas d'architecture trois tiers)-->
@ -15,6 +15,23 @@
<property name="eclipselink.ddl-generation.output-mode" value="database"/>
<property name="eclipselink.ddl-generation" value="create-tables"/>
<!-- configure logging -->
<property name="eclipselink.logging.level" value="INFO"/>
<property name="eclipselink.logging.level.sql" value="FINE"/>
<property name="eclipselink.logging.parameters" value="true"/>
</properties>
</persistence-unit>
<persistence-unit name="gestionUsagesPUTest" transaction-type="RESOURCE_LOCAL">
<provider>org.eclipse.persistence.jpa.PersistenceProvider</provider>
<exclude-unlisted-classes>false</exclude-unlisted-classes>
<properties>
<!-- database connection properties -->
<property name="jakarta.persistence.jdbc.url" value="jdbc:derby:memory:devapp;create=true"/>
<property name="eclipselink.ddl-generation.output-mode" value="database"/>
<property name="eclipselink.ddl-generation" value="create-tables"/>
<!-- configure logging -->
<property name="eclipselink.logging.level" value="INFO"/>
<property name="eclipselink.logging.level.sql" value="FINE"/>

View File

@ -0,0 +1,57 @@
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.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 {
private static DAOFactoryJPA daoFactory;
@BeforeAll
public static void setUp() throws Exception {
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.addRessource(new Ressource("Google", "https://google.com", "Site web"));
usage.setDiscipline(new Discipline("Informatique"));
daoFactory.createDAOUsage().insert(usage);
}
@Test
public void beforeeach_works() {
assertThat(true).isTrue();
}
@Test
public void thematiques_are_not_empty() {
assertThat(daoFactory.createDAOThematique().findAll().size()).isNotZero();
}
@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();
}
}