diff --git a/src/main/java/DAO/ChoixDAO.java b/src/main/java/DAO/ChoixDAO.java deleted file mode 100644 index d48071f..0000000 --- a/src/main/java/DAO/ChoixDAO.java +++ /dev/null @@ -1,4 +0,0 @@ -package DAO; - -public class ChoixDAO { -} diff --git a/src/main/java/DAO/Generic.java b/src/main/java/DAO/Generic.java new file mode 100644 index 0000000..6ba7bb0 --- /dev/null +++ b/src/main/java/DAO/Generic.java @@ -0,0 +1,13 @@ +package DAO; + +import java.io.Serializable; +import java.util.List; + +public interface Generic { + void create(final T entity); + T findById(final K id); + T update(final T entity); + void delete(final T entity); + void deleteById(final K id); + List findAll(); +} diff --git a/src/main/java/DAO/GenericDAOImpl.java b/src/main/java/DAO/GenericDAOImpl.java new file mode 100644 index 0000000..20a4776 --- /dev/null +++ b/src/main/java/DAO/GenericDAOImpl.java @@ -0,0 +1,60 @@ +package DAO; + +import jakarta.persistence.EntityManager; +import jakarta.persistence.EntityTransaction; +import jakarta.persistence.PersistenceException; +import jpa.EntityManagerHelper; + +import java.io.Serializable; +import java.util.List; + +public abstract class GenericDAOImpl implements Generic { + protected EntityManager em; + private Class entityClass; + + public GenericDAOImpl() { + this.em = EntityManagerHelper.getEntityManager(); + } + + //Pour connaitre qu'on travaille avec quelle classe + public void setClass(Class class2){ + this.entityClass= class2; + } + + public List findAll() { + return em.createQuery("select e from " + entityClass.getName() + " as e", entityClass).getResultList(); + } + + //CRUD + public void create(T entity){ + EntityTransaction t = em.getTransaction(); + t.begin(); + em.persist(entity); + t.commit(); + } + + public T findById(K id) { + return em.find(entityClass, id); + } + + public T update(T entity){ + EntityTransaction t = em.getTransaction(); + t.begin(); + T T_sync = em.merge(entity); + t.commit(); + return T_sync; + } + + public void delete(T entity){ + EntityTransaction t = em.getTransaction(); + t.begin(); + em.remove(entity); + t.commit(); + } + + public void deleteById(K id) { + T T_to_be_deleted = em.find(entityClass, id); + em.remove(T_to_be_deleted); + } +} + diff --git a/src/main/java/DAO/QuestionDAO.java b/src/main/java/DAO/QuestionDAO.java index 102d33f..73195ec 100644 --- a/src/main/java/DAO/QuestionDAO.java +++ b/src/main/java/DAO/QuestionDAO.java @@ -1,4 +1,10 @@ package DAO; -public class QuestionDAO { +import metier.Question; + +public class QuestionDAO extends GenericDAOImpl { + public QuestionDAO(){ + super(); + this.setClass(Question.class); + } } diff --git a/src/main/java/DAO/QuizzDAO.java b/src/main/java/DAO/QuizzDAO.java index 460421c..562b147 100644 --- a/src/main/java/DAO/QuizzDAO.java +++ b/src/main/java/DAO/QuizzDAO.java @@ -1,4 +1,10 @@ package DAO; -public class QuizzDAO { +import metier.Quizz; + +public class QuizzDAO extends GenericDAOImpl{ + public QuizzDAO(){ + super(); + this.setClass(Quizz.class); + } } diff --git a/src/main/java/DAO/ReponseCourteDAO.java b/src/main/java/DAO/ReponseCourteDAO.java deleted file mode 100644 index 8ec07ba..0000000 --- a/src/main/java/DAO/ReponseCourteDAO.java +++ /dev/null @@ -1,5 +0,0 @@ -package DAO; - -public class ReponseCourteDAO { - -} diff --git a/src/main/java/DAO/ReponseDAO.java b/src/main/java/DAO/ReponseDAO.java index 3f82a85..59bb473 100644 --- a/src/main/java/DAO/ReponseDAO.java +++ b/src/main/java/DAO/ReponseDAO.java @@ -1,4 +1,11 @@ package DAO; -public class ReponseDAO { +import metier.Reponse; + +public class ReponseDAO extends GenericDAOImpl { + public ReponseDAO(){ + super(); + this.setClass(Reponse.class); + } + } diff --git a/src/main/java/DAO/SessionDAO.java b/src/main/java/DAO/SessionDAO.java index 21b2585..c5b5d70 100644 --- a/src/main/java/DAO/SessionDAO.java +++ b/src/main/java/DAO/SessionDAO.java @@ -1,4 +1,12 @@ package DAO; -public class SessionDAO { + +import metier.Session; + +public class SessionDAO extends GenericDAOImpl { + public SessionDAO() { + super(); + this.setClass(Session.class); + } + } diff --git a/src/main/java/DAO/Tous.java b/src/main/java/DAO/Tous.java deleted file mode 100644 index 36ec12b..0000000 --- a/src/main/java/DAO/Tous.java +++ /dev/null @@ -1,14 +0,0 @@ -package DAO; - -import java.io.Serializable; -import java.util.List; - -public interface Tous { - T create(T t); - T update(T t); - T read(Id id); - void delete(T t); - List findAll(); - - T save(T t); -} diff --git a/src/main/java/DAO/TousDAOImpl.java b/src/main/java/DAO/TousDAOImpl.java deleted file mode 100644 index 6e691bf..0000000 --- a/src/main/java/DAO/TousDAOImpl.java +++ /dev/null @@ -1,31 +0,0 @@ -package DAO; - -import jakarta.persistence.EntityManager; -import jakarta.persistence.EntityTransaction; -import jakarta.persistence.PersistenceException; -import jpa.EntityManagerHelper; - -import java.io.Serializable; - -public abstract class TousDAOImpl implements Tous { - protected EntityManager em; - private Class entityClass; - - public TousDAOImpl() { - this.em = EntityManagerHelper.getEntityManager(); - } - - @Override - public T save(T t) { - EntityTransaction tx = em.getTransaction(); - try { - tx.begin(); - em.persist(t); - tx.commit(); - return t; - } catch (PersistenceException e) { - throw new PersistenceException(e.getMessage()); - } - } -} - diff --git a/src/main/java/DAO/UtilisateurDAO.java b/src/main/java/DAO/UtilisateurDAO.java index c05dcfc..12914fe 100644 --- a/src/main/java/DAO/UtilisateurDAO.java +++ b/src/main/java/DAO/UtilisateurDAO.java @@ -1,4 +1,12 @@ package DAO; -public class UtilisateurDAO { +import metier.Utilisateur; + +public class UtilisateurDAO extends GenericDAOImpl{ + public UtilisateurDAO() { + super(); + this.setClass(Utilisateur.class); + } + + } diff --git a/src/main/java/jpa/JpaTest.java b/src/main/java/jpa/JpaTest.java index d11049f..d46b44d 100644 --- a/src/main/java/jpa/JpaTest.java +++ b/src/main/java/jpa/JpaTest.java @@ -3,6 +3,7 @@ package jpa; import jakarta.persistence.EntityManager; import jakarta.persistence.EntityTransaction; +import metier.*; public class JpaTest { @@ -24,7 +25,7 @@ public class JpaTest { tx.begin(); try { - // TODO create and persist entity + } catch (Exception e) { e.printStackTrace(); } @@ -36,6 +37,24 @@ public class JpaTest { System.out.println(".. done"); } + private void create_quizz() { + int numQuizz = manager.createQuery("SELECT q FROM Quizz q", Quizz.class).getResultList().size(); + if (numQuizz == 0) { + //Utilisateur + Utilisateur utilisateur1 = new Utilisateur(); + utilisateur1.setId(1); + utilisateur1.setName("Tibo"); + + Utilisateur utilisateur2 = new Utilisateur(); + utilisateur2.setId(2); + utilisateur2.setName("Rochas"); + + manager.persist(utilisateur1); + + } + } + + diff --git a/src/main/java/metier/Choix.java b/src/main/java/metier/Choix.java index 826879a..e6e4d64 100644 --- a/src/main/java/metier/Choix.java +++ b/src/main/java/metier/Choix.java @@ -6,11 +6,6 @@ import jakarta.persistence.GeneratedValue; import jakarta.persistence.Id; public class Choix extends Reponse{ - - @Id - @GeneratedValue - int id; - ArrayList choix; public Choix() { diff --git a/src/main/java/metier/Question.java b/src/main/java/metier/Question.java index 86ae248..6334202 100644 --- a/src/main/java/metier/Question.java +++ b/src/main/java/metier/Question.java @@ -1,19 +1,16 @@ package metier; -import jakarta.persistence.CascadeType; -import jakarta.persistence.GeneratedValue; -import jakarta.persistence.Id; -import jakarta.persistence.OneToMany; +import jakarta.persistence.*; +import java.io.Serializable; import java.util.List; -public class Question { - +public class Question implements Serializable { private int id; private Reponse reponse; @Id - @GeneratedValue + @GeneratedValue(strategy = GenerationType.IDENTITY) public int getId() { return id; } diff --git a/src/main/java/metier/Quizz.java b/src/main/java/metier/Quizz.java index 2d40c97..600aa7d 100644 --- a/src/main/java/metier/Quizz.java +++ b/src/main/java/metier/Quizz.java @@ -1,6 +1,8 @@ package metier; -public class Quizz extends Activity{ +import java.io.Serializable; + +public class Quizz extends Activity implements Serializable { public Quizz(){ super(); diff --git a/src/main/java/metier/Reponse.java b/src/main/java/metier/Reponse.java index 7655c23..eaf30d8 100644 --- a/src/main/java/metier/Reponse.java +++ b/src/main/java/metier/Reponse.java @@ -1,17 +1,28 @@ package metier; +import java.io.Serializable; import java.util.ArrayList; +import jakarta.persistence.GeneratedValue; +import jakarta.persistence.GenerationType; import jakarta.persistence.Id; -public abstract class Reponse { - @Id +public abstract class Reponse implements Serializable { private int id; ArrayList reponses; - public Reponse(){ + public Reponse(){} + + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + public int getId() { + return id; + } + + public void setId(int id) { + this.id = id; } } \ No newline at end of file diff --git a/src/main/java/metier/ReponseCourte.java b/src/main/java/metier/ReponseCourte.java index 96a25d6..b2a6bdb 100644 --- a/src/main/java/metier/ReponseCourte.java +++ b/src/main/java/metier/ReponseCourte.java @@ -5,16 +5,16 @@ import jakarta.persistence.GeneratedValue; import jakarta.persistence.Id; public class ReponseCourte extends Reponse{ - - @Id - @GeneratedValue - int id; - String value; - public ReponseCourte(){ super(); } + public void setValue(String value){ + this.value = value; + } + public String getValue(){ + return this.value; + } } diff --git a/src/main/java/metier/Session.java b/src/main/java/metier/Session.java index fd61b0f..edf5009 100644 --- a/src/main/java/metier/Session.java +++ b/src/main/java/metier/Session.java @@ -1,19 +1,14 @@ package metier; +import java.io.Serializable; import java.util.ArrayList; import jakarta.persistence.*; @Entity -public class Session { - - @Id +public class Session implements Serializable { private int codePIN; - - @OneToMany private ArrayList activities; - - @ManyToMany private ArrayList utilisateurs; public Session(){ @@ -23,6 +18,8 @@ public class Session { this.codePIN = codePIN; } + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) public int getCodePIN(){ return this.codePIN; } @@ -31,6 +28,7 @@ public class Session { this.activities = activities; } + @OneToMany public ArrayList getActivities(){ return this.activities; } @@ -39,9 +37,8 @@ public class Session { this.utilisateurs = utilisateurs; } + @ManyToMany public ArrayList getUtilisateurs() { return this.utilisateurs; } - - } \ No newline at end of file diff --git a/src/main/java/metier/Utilisateur.java b/src/main/java/metier/Utilisateur.java index 3705ddc..81f7033 100644 --- a/src/main/java/metier/Utilisateur.java +++ b/src/main/java/metier/Utilisateur.java @@ -2,19 +2,15 @@ package metier; import jakarta.persistence.*; +import java.io.Serializable; import java.util.List; @Entity -public class Utilisateur{ - @Id - @GeneratedValue(strategy = GenerationType.IDENTITY) +public class Utilisateur implements Serializable { + private int id; private String name; - - @ManyToMany private Session session; - - @Column(unique=true) private String email; private String password; @@ -23,6 +19,8 @@ public class Utilisateur{ public Utilisateur() {} + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) public int getId() { return id; } @@ -39,6 +37,16 @@ public class Utilisateur{ this.name = name; } + @Column(unique=true) + public String getEmail() { + return email; + } + + public void setEmail(String email) { + this.email = email; + } + + @ManyToMany public Session getSession() { return session; }