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 05d5068..020baf2 100644 --- a/src/main/java/metier/Choix.java +++ b/src/main/java/metier/Choix.java @@ -2,30 +2,12 @@ package metier; import java.util.ArrayList; -import jakarta.persistence.GeneratedValue; -import jakarta.persistence.Id; public class Choix extends Reponse{ - - @Id - @GeneratedValue - private int id; - ArrayList choix; public Choix() { super(); } - - public void setId(int id){ - this.id=id; - } - - public int getId(){ - return this.id; - } - - - } diff --git a/src/main/java/metier/Question.java b/src/main/java/metier/Question.java index e5ede42..1a8789e 100644 --- a/src/main/java/metier/Question.java +++ b/src/main/java/metier/Question.java @@ -1,23 +1,17 @@ package metier; -import jakarta.persistence.CascadeType; -import jakarta.persistence.GeneratedValue; -import jakarta.persistence.GenerationType; -import jakarta.persistence.Id; -import jakarta.persistence.OneToMany; +import jakarta.persistence.*; +import java.io.Serializable; -public class Question { - - @Id - @GeneratedValue(strategy = GenerationType.IDENTITY) +public class Question implements Serializable { private int id; @OneToMany(mappedBy ="reponse", cascade = CascadeType.DETACH) private Reponse reponse; - - + @Id + @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 a705891..0e5e144 100644 --- a/src/main/java/metier/Quizz.java +++ b/src/main/java/metier/Quizz.java @@ -4,36 +4,34 @@ import jakarta.persistence.GeneratedValue; import jakarta.persistence.Id; import jakarta.persistence.JoinColumn; import jakarta.persistence.ManyToOne; +import java.io.Serializable; -public class Quizz{ +public class Quizz implements Serializable { - - @Id - @GeneratedValue - private int id; - - @ManyToOne - @JoinColumn(name="id_utilisateur") + public int id; private Utilisateur utilisateur; public Quizz(){ super(); } - - public void setId(int id){ - this.id=id; - } - + @Id + @GeneratedValue public int getId(){ - return this.id; + return id; } - public void setutilisateur(Utilisateur utilisateur){ - this.utilisateur=utilisateur; + public void setId(Integer id){ + this.id=id; } - + + @ManyToOne + @JoinColumn(name="id_utilisateur") public Utilisateur getUtilisateur(){ - return this.utilisateur; + return utilisateur; + } + + public void setUtilisateur(Utilisateur u){ + this.utilisateur=u; } } diff --git a/src/main/java/metier/Reponse.java b/src/main/java/metier/Reponse.java index 20d537f..2a98738 100644 --- a/src/main/java/metier/Reponse.java +++ b/src/main/java/metier/Reponse.java @@ -1,31 +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 { +public abstract class Reponse implements Serializable { + private int id; + private ArrayList reponses; + + public Reponse(){} + @Id @GeneratedValue(strategy = GenerationType.IDENTITY) - private int id; - - ArrayList reponses; - - - public Reponse(){ + public int getId() { + return id; } + public void setId(int id) { + this.id = id; + } - public void setId(int id){ - this.id=id; - } - - public int getId(){ - return this.id; - } public void setReponses(ArrayList reponses){ this.reponses=reponses; diff --git a/src/main/java/metier/ReponseCourte.java b/src/main/java/metier/ReponseCourte.java index c2497a6..a178f48 100644 --- a/src/main/java/metier/ReponseCourte.java +++ b/src/main/java/metier/ReponseCourte.java @@ -1,37 +1,17 @@ package metier; -import jakarta.persistence.GeneratedValue; -import jakarta.persistence.Id; - public class ReponseCourte extends Reponse{ - - @Id - @GeneratedValue - private int id; - String value; - public ReponseCourte(){ super(); } - - public void setId(int id){ - this.id=id; - } - - public int getId(){ - return this.id; - } - public void setValue(String value){ - this.value=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 da120ad..1d3f271 100644 --- a/src/main/java/metier/Session.java +++ b/src/main/java/metier/Session.java @@ -1,19 +1,13 @@ 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,25 +17,20 @@ public class Session { this.codePIN = codePIN; } + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) public int getCodePIN(){ return this.codePIN; } - public void setActivities(ArrayList activities){ - this.activities = activities; - } - public ArrayList getActivities(){ - return this.activities; - } public void setUtilisateurs(ArrayList utilisateurs){ 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 c54b4b7..539378a 100644 --- a/src/main/java/metier/Utilisateur.java +++ b/src/main/java/metier/Utilisateur.java @@ -2,20 +2,16 @@ 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; @@ -24,6 +20,8 @@ public class Utilisateur{ public Utilisateur() {} + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) public int getId() { return id; } @@ -40,14 +38,7 @@ public class Utilisateur{ this.name = name; } - public Session getSession() { - return session; - } - - public void setSession(Session session){ - this.session = session; - } - + @Column(unique=true) public String getEmail() { return email; } @@ -56,6 +47,15 @@ public class Utilisateur{ this.email = email; } + @ManyToMany + public Session getSession() { + return session; + } + + public void setSession(Session session){ + this.session = session; + } + public String getPassword() { return this.password; } diff --git a/target/classes/DAO/ChoixDAO.class b/target/classes/DAO/ChoixDAO.class deleted file mode 100644 index c0ee5ba..0000000 Binary files a/target/classes/DAO/ChoixDAO.class and /dev/null differ diff --git a/target/classes/DAO/Generic.class b/target/classes/DAO/Generic.class new file mode 100644 index 0000000..3ce604a Binary files /dev/null and b/target/classes/DAO/Generic.class differ diff --git a/target/classes/DAO/GenericDAOImpl.class b/target/classes/DAO/GenericDAOImpl.class new file mode 100644 index 0000000..5a0412b Binary files /dev/null and b/target/classes/DAO/GenericDAOImpl.class differ diff --git a/target/classes/DAO/QuestionDAO.class b/target/classes/DAO/QuestionDAO.class index be87dc3..aeddc80 100644 Binary files a/target/classes/DAO/QuestionDAO.class and b/target/classes/DAO/QuestionDAO.class differ diff --git a/target/classes/DAO/QuizzDAO.class b/target/classes/DAO/QuizzDAO.class index ceb0ad1..c4c564b 100644 Binary files a/target/classes/DAO/QuizzDAO.class and b/target/classes/DAO/QuizzDAO.class differ diff --git a/target/classes/DAO/ReponseCourteDAO.class b/target/classes/DAO/ReponseCourteDAO.class deleted file mode 100644 index ed21a78..0000000 Binary files a/target/classes/DAO/ReponseCourteDAO.class and /dev/null differ diff --git a/target/classes/DAO/ReponseDAO.class b/target/classes/DAO/ReponseDAO.class index f34701c..b5cdd7a 100644 Binary files a/target/classes/DAO/ReponseDAO.class and b/target/classes/DAO/ReponseDAO.class differ diff --git a/target/classes/DAO/SessionDAO.class b/target/classes/DAO/SessionDAO.class index 366d621..f4a4969 100644 Binary files a/target/classes/DAO/SessionDAO.class and b/target/classes/DAO/SessionDAO.class differ diff --git a/target/classes/DAO/Tous.class b/target/classes/DAO/Tous.class deleted file mode 100644 index 86a26ec..0000000 Binary files a/target/classes/DAO/Tous.class and /dev/null differ diff --git a/target/classes/DAO/TousDAOImpl.class b/target/classes/DAO/TousDAOImpl.class deleted file mode 100644 index 602219a..0000000 Binary files a/target/classes/DAO/TousDAOImpl.class and /dev/null differ diff --git a/target/classes/DAO/UtilisateurDAO.class b/target/classes/DAO/UtilisateurDAO.class index 5e45b34..4ab9f81 100644 Binary files a/target/classes/DAO/UtilisateurDAO.class and b/target/classes/DAO/UtilisateurDAO.class differ diff --git a/target/classes/jpa/JpaTest.class b/target/classes/jpa/JpaTest.class index 36d8e7a..a35153c 100644 Binary files a/target/classes/jpa/JpaTest.class and b/target/classes/jpa/JpaTest.class differ diff --git a/target/classes/metier/Choix.class b/target/classes/metier/Choix.class index b830259..9cee6c2 100644 Binary files a/target/classes/metier/Choix.class and b/target/classes/metier/Choix.class differ diff --git a/target/classes/metier/Question.class b/target/classes/metier/Question.class index aecb986..6455f28 100644 Binary files a/target/classes/metier/Question.class and b/target/classes/metier/Question.class differ diff --git a/target/classes/metier/Quizz.class b/target/classes/metier/Quizz.class index 26c5555..196097d 100644 Binary files a/target/classes/metier/Quizz.class and b/target/classes/metier/Quizz.class differ diff --git a/target/classes/metier/Reponse.class b/target/classes/metier/Reponse.class index 8fc77d3..92a7742 100644 Binary files a/target/classes/metier/Reponse.class and b/target/classes/metier/Reponse.class differ diff --git a/target/classes/metier/ReponseCourte.class b/target/classes/metier/ReponseCourte.class index 32a4cb2..49483da 100644 Binary files a/target/classes/metier/ReponseCourte.class and b/target/classes/metier/ReponseCourte.class differ diff --git a/target/classes/metier/Session.class b/target/classes/metier/Session.class index 2344615..e0be3ce 100644 Binary files a/target/classes/metier/Session.class and b/target/classes/metier/Session.class differ diff --git a/target/classes/metier/Utilisateur.class b/target/classes/metier/Utilisateur.class index 6e71183..7e3bac0 100644 Binary files a/target/classes/metier/Utilisateur.class and b/target/classes/metier/Utilisateur.class differ