Merge branch 'main' of gitpro:IUTInfoAix-R202-2022/sae-concombre into liaison

Ajout des nouvelles fonctionnalités de la DAO
This commit is contained in:
Djalim Simaila 2022-06-06 17:55:59 +02:00
commit fda0ca493b
12 changed files with 221 additions and 9 deletions

View File

@ -1,6 +1,13 @@
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<Usage>{
List<Usage> findByCriterias(Thematique thematique, Discipline discipline, Academie academie);
List<Usage> findByName(String substring);
}

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.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 <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() {
if(entityManager == null){
EntityManagerFactory entityManagerFactory = Persistence.createEntityManagerFactory("gestionUsagesPU");

View File

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

View File

@ -1,6 +1,9 @@
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;
@ -25,4 +28,21 @@ public class DAOUsageJPA extends DAOBaseClassJPA<Usage> implements DAOUsage {
query.setParameter("numEt", id);
return query.getSingleResult();
}
@Override
public List<Usage> findByCriterias(Thematique thematique, Discipline discipline, Academie academie) {
TypedQuery<Usage> query = entityManager.createNamedQuery("Usage.findByCriterias", Usage.class);
query.setParameter("thematique", thematique);
query.setParameter("discipline", discipline);
query.setParameter("academie", academie);
return query.getResultList();
}
@Override
public List<Usage> findByName(String substring) {
TypedQuery<Usage> query = entityManager.createNamedQuery("Usage.findByName", Usage.class);
query.setParameter("substring", "%"+substring+"%");
return query.getResultList();
}
}

View File

@ -2,6 +2,7 @@ package fr.univ_amu.iut.model;
import jakarta.persistence.*;
import java.io.Serializable;
import java.util.Collection;
import java.util.HashMap;
import java.util.Map;
@ -11,7 +12,7 @@ import java.util.Map;
@NamedQuery(name = "Academie.findByCode", query = "SELECT p FROM Academie p WHERE p.code = :acaCode"),
})
@Entity
public class Academie {
public class Academie implements Serializable {
private final static HashMap<String, Academie> INSTANCES = new HashMap<>();
@Transient
public static Academie Mayotte = new Academie("MY", "Académie de Mayotte", RegionAcademique.Mayotte);
@ -125,4 +126,19 @@ public class Academie {
", regionAcademique=" + regionAcademique +
'}';
}
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
Academie academie = (Academie) o;
return code.equals(academie.code);
}
@Override
public int hashCode() {
return code.hashCode();
}
}

View File

@ -2,12 +2,14 @@ package fr.univ_amu.iut.model;
import jakarta.persistence.*;
import java.io.Serializable;
@NamedQueries({
@NamedQuery(name = "Acteur.findAll", query = "SELECT p FROM Acteur p"),
@NamedQuery(name = "Acteur.findById", query = "SELECT p FROM Acteur p WHERE p.id = :id"),
})
@Entity
public class Acteur {
public class Acteur implements Serializable {
@Id
@GeneratedValue
int id;
@ -52,4 +54,24 @@ public class Acteur {
", identite='" + identite + '\'' +
'}';
}
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
Acteur acteur = (Acteur) o;
if (id != acteur.id) return false;
if (!identite.equals(acteur.identite)) return false;
return type.equals(acteur.type);
}
@Override
public int hashCode() {
int result = id;
result = 31 * result + identite.hashCode();
result = 31 * result + type.hashCode();
return result;
}
}

View File

@ -2,11 +2,16 @@ package fr.univ_amu.iut.model;
import jakarta.persistence.*;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;
@NamedQueries({
@NamedQuery(name = "Discipline.findAll", query = "SELECT p FROM Discipline p"),
@NamedQuery(name = "Discipline.findById", query = "SELECT p FROM Discipline p WHERE p.id = :id"),
})
@Entity
public class Discipline {
public class Discipline implements Serializable {
private static final List<Discipline> INSTANCES = new ArrayList<>();
@ -44,7 +49,7 @@ public class Discipline {
}
public static List<Discipline> toutes() {
return INSTANCES;
return new ArrayList<>(INSTANCES);
}
public static Discipline getById(int id){
@ -70,4 +75,22 @@ public class Discipline {
", nom='" + nom + '\'' +
'}';
}
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
Discipline that = (Discipline) o;
if (id != that.id) return false;
return nom.equals(that.nom);
}
@Override
public int hashCode() {
int result = id;
result = 31 * result + nom.hashCode();
return result;
}
}

View File

@ -18,4 +18,12 @@ public enum Niveau {
}
return null;
}
@Override
public String toString() {
return "Niveau{" +
"nom='" + nom + '\'' +
'}';
}
}

View File

@ -2,11 +2,16 @@ package fr.univ_amu.iut.model;
import jakarta.persistence.*;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;
@NamedQueries({
@NamedQuery(name = "RegionAcademique.findAll", query = "SELECT p FROM RegionAcademique p"),
@NamedQuery(name = "RegionAcademique.findById", query = "SELECT p FROM RegionAcademique p WHERE p.id = :id"),
})
@Entity
public class RegionAcademique {
public class RegionAcademique implements Serializable {
private static List<RegionAcademique> INSTANCES = new ArrayList<>();
@ -80,4 +85,23 @@ public class RegionAcademique {
public String getNom() {
return nom;
}
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
RegionAcademique that = (RegionAcademique) o;
if (id != that.id) return false;
return nom.equals(that.nom);
}
@Override
public int hashCode() {
int result = id;
result = 31 * result + nom.hashCode();
return result;
}
}

View File

@ -2,6 +2,7 @@ package fr.univ_amu.iut.model;
import jakarta.persistence.*;
import java.io.Serializable;
import java.net.MalformedURLException;
import java.net.URL;
@ -10,7 +11,7 @@ import java.net.URL;
@NamedQuery(name = "Ressource.findById", query = "SELECT p FROM Ressource p WHERE p.id = :id"),
})
@Entity
public class Ressource {
public class Ressource implements Serializable {
@Id
@GeneratedValue
int id;
@ -65,4 +66,19 @@ public class Ressource {
", lienRessource=" + lienRessource +
'}';
}
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
Ressource ressource = (Ressource) o;
return id == ressource.id;
}
@Override
public int hashCode() {
return id;
}
}

View File

@ -2,13 +2,18 @@ package fr.univ_amu.iut.model;
import jakarta.persistence.*;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.Collection;
import java.util.HashMap;
import java.util.List;
@NamedQueries({
@NamedQuery(name = "Thematique.findAll", query = "SELECT p FROM Thematique p"),
@NamedQuery(name = "Thematique.findById", query = "SELECT p FROM Thematique p WHERE p.id = :id"),
})
@Entity
public class Thematique {
public class Thematique implements Serializable {
private final static List<Thematique> INSTANCES = new ArrayList<>();
@ -88,4 +93,22 @@ public class Thematique {
", nom='" + nom + '\'' +
'}';
}
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
Thematique that = (Thematique) o;
if (id != that.id) return false;
return nom.equals(that.nom);
}
@Override
public int hashCode() {
int result = id;
result = 31 * result + nom.hashCode();
return result;
}
}

View File

@ -2,17 +2,23 @@ package fr.univ_amu.iut.model;
import jakarta.persistence.*;
import java.io.Serializable;
import java.util.ArrayList;
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.findByCriterias", query = "SELECT p FROM Usage p WHERE" +
"(:thematique is null or :thematique=p.thematique)" +
"AND (:discipline is null or :discipline=p.discipline)"+
"AND (:academie is null or :academie=p.academie)"),
})
@Entity
@Table(name="\"USAGE\"")
public class Usage {
public class Usage implements Serializable {
@Id
@GeneratedValue
int id;
@ -132,4 +138,19 @@ public class Usage {
", commentaire='" + commentaire + '\'' +
'}';
}
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
Usage usage = (Usage) o;
return id == usage.id;
}
@Override
public int hashCode() {
return id;
}
}