Merge pull request #8 from IUTInfoAix-R202-2022/dao_upgrade

Mise a jour du DAO pour le rendre utilisable avec l'UI
This commit is contained in:
Thomas R 2022-06-06 16:23:26 +02:00 committed by GitHub
commit eea1d628e8
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
12 changed files with 221 additions and 9 deletions

View File

@ -1,6 +1,13 @@
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> 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.*;
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,6 +1,9 @@
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;
@ -25,4 +28,21 @@ 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> 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 jakarta.persistence.*;
import java.io.Serializable;
import java.util.Collection; import java.util.Collection;
import java.util.HashMap; import java.util.HashMap;
import java.util.Map; 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"), @NamedQuery(name = "Academie.findByCode", query = "SELECT p FROM Academie p WHERE p.code = :acaCode"),
}) })
@Entity @Entity
public class Academie { public class Academie implements Serializable {
private final static HashMap<String, Academie> INSTANCES = new HashMap<>(); private final static HashMap<String, Academie> INSTANCES = new HashMap<>();
@Transient @Transient
public static Academie Mayotte = new Academie("MY", "Académie de Mayotte", RegionAcademique.Mayotte); public static Academie Mayotte = new Academie("MY", "Académie de Mayotte", RegionAcademique.Mayotte);
@ -125,4 +126,19 @@ public class Academie {
", regionAcademique=" + regionAcademique + ", 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 jakarta.persistence.*;
import java.io.Serializable;
@NamedQueries({ @NamedQueries({
@NamedQuery(name = "Acteur.findAll", query = "SELECT p FROM Acteur p"), @NamedQuery(name = "Acteur.findAll", query = "SELECT p FROM Acteur p"),
@NamedQuery(name = "Acteur.findById", query = "SELECT p FROM Acteur p WHERE p.id = :id"), @NamedQuery(name = "Acteur.findById", query = "SELECT p FROM Acteur p WHERE p.id = :id"),
}) })
@Entity @Entity
public class Acteur { public class Acteur implements Serializable {
@Id @Id
@GeneratedValue @GeneratedValue
int id; int id;
@ -52,4 +54,24 @@ public class Acteur {
", identite='" + identite + '\'' + ", 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 jakarta.persistence.*;
import java.io.Serializable;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; 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 @Entity
public class Discipline { public class Discipline implements Serializable {
private static final List<Discipline> INSTANCES = new ArrayList<>(); private static final List<Discipline> INSTANCES = new ArrayList<>();
@ -44,7 +49,7 @@ public class Discipline {
} }
public static List<Discipline> toutes() { public static List<Discipline> toutes() {
return INSTANCES; return new ArrayList<>(INSTANCES);
} }
public static Discipline getById(int id){ public static Discipline getById(int id){
@ -70,4 +75,22 @@ public class Discipline {
", nom='" + nom + '\'' + ", 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; 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 jakarta.persistence.*;
import java.io.Serializable;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; 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 @Entity
public class RegionAcademique { public class RegionAcademique implements Serializable {
private static List<RegionAcademique> INSTANCES = new ArrayList<>(); private static List<RegionAcademique> INSTANCES = new ArrayList<>();
@ -80,4 +85,23 @@ public class RegionAcademique {
public String getNom() { public String getNom() {
return nom; 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 jakarta.persistence.*;
import java.io.Serializable;
import java.net.MalformedURLException; import java.net.MalformedURLException;
import java.net.URL; 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"), @NamedQuery(name = "Ressource.findById", query = "SELECT p FROM Ressource p WHERE p.id = :id"),
}) })
@Entity @Entity
public class Ressource { public class Ressource implements Serializable {
@Id @Id
@GeneratedValue @GeneratedValue
int id; int id;
@ -65,4 +66,19 @@ public class Ressource {
", lienRessource=" + lienRessource + ", 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 jakarta.persistence.*;
import java.io.Serializable;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Collection; import java.util.Collection;
import java.util.HashMap; import java.util.HashMap;
import java.util.List; 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 @Entity
public class Thematique { public class Thematique implements Serializable {
private final static List<Thematique> INSTANCES = new ArrayList<>(); private final static List<Thematique> INSTANCES = new ArrayList<>();
@ -88,4 +93,22 @@ public class Thematique {
", nom='" + nom + '\'' + ", 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 jakarta.persistence.*;
import java.io.Serializable;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
@NamedQueries({ @NamedQueries({
@NamedQuery(name = "Usage.findAll", query = "SELECT p FROM Usage p"), @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.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 @Entity
@Table(name="\"USAGE\"") @Table(name="\"USAGE\"")
public class Usage { public class Usage implements Serializable {
@Id @Id
@GeneratedValue @GeneratedValue
int id; int id;
@ -132,4 +138,19 @@ public class Usage {
", commentaire='" + commentaire + '\'' + ", 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;
}
} }