diff --git a/pom.xml b/pom.xml
new file mode 100644
index 0000000..7fd5c35
--- /dev/null
+++ b/pom.xml
@@ -0,0 +1,124 @@
+
+ 4.0.0
+ fr.istic.taa
+ jaxrs-example
+ jar
+ 1.0-SNAPSHOT
+ jaxrs-example
+ http://maven.apache.org
+
+
+ 11
+ 11
+ 1.6.3
+
+
+
+
+
+ junit
+ junit
+ 4.12
+ test
+
+
+
+
+ org.hibernate
+ hibernate-core
+ 6.2.7.Final
+
+
+ org.slf4j
+ slf4j-log4j12
+ 1.7.30
+
+
+ org.hsqldb
+ hsqldb
+ 2.7.2
+
+
+ com.mysql
+ mysql-connector-j
+ 8.1.0
+
+
+
+
+ org.jboss.resteasy
+ resteasy-undertow
+ 6.2.4.Final
+
+
+
+ org.jboss.resteasy
+ resteasy-jackson2-provider
+ 6.2.4.Final
+
+
+
+ org.jboss.resteasy
+ resteasy-jaxb-provider
+ 6.2.4.Final
+
+
+
+
+
+ io.swagger.core.v3
+ swagger-jaxrs2-jakarta
+ 2.2.15
+
+
+
+ io.swagger.core.v3
+ swagger-jaxrs2-servlet-initializer-v2
+ 2.2.15
+
+
+
+
+ org.mapstruct
+ mapstruct
+ 1.6.3
+
+
+
+ org.projectlombok
+ lombok
+ 1.18.42
+ provided
+
+
+
+
+ install
+
+
+ org.apache.maven.plugins
+ maven-compiler-plugin
+ 3.11.0
+
+ 11
+ 11
+
+
+ org.projectlombok
+ lombok
+ 1.18.42
+
+
+ org.mapstruct
+ mapstruct-processor
+ 1.6.3
+
+
+
+
+
+
+
+
diff --git a/run-hsqldb-server.bat b/run-hsqldb-server.bat
new file mode 100755
index 0000000..0885654
--- /dev/null
+++ b/run-hsqldb-server.bat
@@ -0,0 +1,3 @@
+mkdir data
+cd data
+java -cp ..\hsqldb-2.7.2.jar org.hsqldb.Server
diff --git a/run-hsqldb-server.sh b/run-hsqldb-server.sh
new file mode 100755
index 0000000..5fc9a89
--- /dev/null
+++ b/run-hsqldb-server.sh
@@ -0,0 +1,4 @@
+mvn dependency:copy-dependencies
+mkdir data 2> /dev/null
+cd data
+java -cp ../target/dependency/hsqldb-2.7.2.jar org.hsqldb.Server
diff --git a/show-hsqldb.bat b/show-hsqldb.bat
new file mode 100644
index 0000000..3bf6df2
--- /dev/null
+++ b/show-hsqldb.bat
@@ -0,0 +1,2 @@
+java -cp ./target/dependency/hsqldb-2.7.2.jar org.hsqldb.util.DatabaseManagerSwing --driver org.hsqldb.jdbcDriver --url jdbc:hsqldb:hsql://localhost/ --user SA
+
diff --git a/show-hsqldb.sh b/show-hsqldb.sh
new file mode 100755
index 0000000..41305d6
--- /dev/null
+++ b/show-hsqldb.sh
@@ -0,0 +1,2 @@
+#mvn dependency:copy-dependencies
+java -cp ./target/dependency/hsqldb-2.7.2.jar org.hsqldb.util.DatabaseManagerSwing --driver org.hsqldb.jdbcDriver --url jdbc:hsqldb:hsql://localhost/ --user SA
diff --git a/src/main/java/fr/istic/taa/jaxrs/DAO/AbstractJpaDao.java b/src/main/java/fr/istic/taa/jaxrs/DAO/AbstractJpaDao.java
new file mode 100644
index 0000000..5cbd169
--- /dev/null
+++ b/src/main/java/fr/istic/taa/jaxrs/DAO/AbstractJpaDao.java
@@ -0,0 +1,60 @@
+package fr.istic.taa.jaxrs.DAO;
+
+import java.io.Serializable;
+import java.util.List;
+
+import jakarta.persistence.EntityManager;
+import jakarta.persistence.EntityTransaction;
+public abstract class AbstractJpaDao implements IGenericDao {
+ protected EntityManager em;
+ private Class entityClass;
+
+ public AbstractJpaDao() {
+ this.em = EntityManagerHelper.getEntityManager();
+ }
+
+ //Pour connaitre qu'on travaille avec quelle classe
+ public void setClass(Class class2){
+ this.entityClass= class2;
+ }
+
+ public T findOne(K id) {
+ return em.find(entityClass, id);
+ }
+
+ 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);
+ }
+}
\ No newline at end of file
diff --git a/src/main/java/fr/istic/taa/jaxrs/DAO/EntityManagerHelper.java b/src/main/java/fr/istic/taa/jaxrs/DAO/EntityManagerHelper.java
new file mode 100644
index 0000000..e5f7887
--- /dev/null
+++ b/src/main/java/fr/istic/taa/jaxrs/DAO/EntityManagerHelper.java
@@ -0,0 +1,50 @@
+package fr.istic.taa.jaxrs.DAO;
+
+import jakarta.persistence.EntityManager;
+import jakarta.persistence.EntityManagerFactory;
+import jakarta.persistence.Persistence;
+
+public class EntityManagerHelper {
+
+ private static final EntityManagerFactory emf;
+ private static final ThreadLocal threadLocal;
+
+ static {
+ emf = Persistence.createEntityManagerFactory("dev");
+ threadLocal = new ThreadLocal();
+ }
+
+ public static EntityManager getEntityManager() {
+ EntityManager em = threadLocal.get();
+
+ if (em == null) {
+ em = emf.createEntityManager();
+ threadLocal.set(em);
+ }
+ return em;
+ }
+
+ public static void closeEntityManager() {
+ EntityManager em = threadLocal.get();
+ if (em != null) {
+ em.close();
+ threadLocal.set(null);
+ }
+ }
+
+ public static void closeEntityManagerFactory() {
+ emf.close();
+ }
+
+ public static void beginTransaction() {
+ getEntityManager().getTransaction().begin();
+ }
+
+ public static void rollback() {
+ getEntityManager().getTransaction().rollback();
+ }
+
+ public static void commit() {
+ getEntityManager().getTransaction().commit();
+ }
+}
\ No newline at end of file
diff --git a/src/main/java/fr/istic/taa/jaxrs/DAO/IGenericDao.java b/src/main/java/fr/istic/taa/jaxrs/DAO/IGenericDao.java
new file mode 100644
index 0000000..87a1f40
--- /dev/null
+++ b/src/main/java/fr/istic/taa/jaxrs/DAO/IGenericDao.java
@@ -0,0 +1,14 @@
+package fr.istic.taa.jaxrs.DAO;
+
+import java.io.Serializable;
+import java.util.List;
+
+public interface IGenericDao {
+ 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();
+ T findOne(final K id);
+}
diff --git a/src/main/java/fr/istic/taa/jaxrs/DAO/QuestionDAO.java b/src/main/java/fr/istic/taa/jaxrs/DAO/QuestionDAO.java
new file mode 100644
index 0000000..58db369
--- /dev/null
+++ b/src/main/java/fr/istic/taa/jaxrs/DAO/QuestionDAO.java
@@ -0,0 +1,10 @@
+package fr.istic.taa.jaxrs.DAO;
+
+import fr.istic.taa.jaxrs.metier.Question;
+
+public class QuestionDAO extends AbstractJpaDao {
+ public QuestionDAO(){
+ super();
+ this.setClass(Question.class);
+ }
+}
diff --git a/src/main/java/fr/istic/taa/jaxrs/DAO/QuizzDAO.java b/src/main/java/fr/istic/taa/jaxrs/DAO/QuizzDAO.java
new file mode 100644
index 0000000..6380b69
--- /dev/null
+++ b/src/main/java/fr/istic/taa/jaxrs/DAO/QuizzDAO.java
@@ -0,0 +1,18 @@
+package fr.istic.taa.jaxrs.DAO;
+
+import jakarta.persistence.EntityTransaction;
+import fr.istic.taa.jaxrs.metier.Quizz;
+
+public class QuizzDAO extends AbstractJpaDao {
+ public QuizzDAO(){
+ super();
+ this.setClass(Quizz.class);
+ }
+
+ public void deleteAllQuiz(){
+ EntityTransaction et= em.getTransaction();
+ et.begin();
+ em.createQuery("delete from Quizz").executeUpdate();
+ et.commit();
+ }
+}
diff --git a/src/main/java/fr/istic/taa/jaxrs/DAO/ReponseDAO.java b/src/main/java/fr/istic/taa/jaxrs/DAO/ReponseDAO.java
new file mode 100644
index 0000000..cb27451
--- /dev/null
+++ b/src/main/java/fr/istic/taa/jaxrs/DAO/ReponseDAO.java
@@ -0,0 +1,19 @@
+package fr.istic.taa.jaxrs.DAO;
+
+import fr.istic.taa.jaxrs.metier.Reponse;
+
+public class ReponseDAO extends AbstractJpaDao {
+ public ReponseDAO(){
+ super();
+ this.setClass(Reponse.class);
+ }
+
+ /*public List getGoodResponses(){
+ EntityTransaction t=em.getTransaction();
+ t.begin();
+ Query query=em.createQuery("select r from Reponse r where r.reponses");
+ List lString=query.getResultList();
+ t.commit();
+ return lString;
+ }*/
+}
diff --git a/src/main/java/fr/istic/taa/jaxrs/DAO/SessionDAO.java b/src/main/java/fr/istic/taa/jaxrs/DAO/SessionDAO.java
new file mode 100644
index 0000000..038c491
--- /dev/null
+++ b/src/main/java/fr/istic/taa/jaxrs/DAO/SessionDAO.java
@@ -0,0 +1,29 @@
+package fr.istic.taa.jaxrs.DAO;
+
+
+import jakarta.persistence.EntityTransaction;
+import jakarta.persistence.Query;
+import fr.istic.taa.jaxrs.metier.Session;
+
+import java.util.List;
+
+public class SessionDAO extends AbstractJpaDao {
+ public SessionDAO() {
+ super();
+ this.setClass(Session.class);
+ }
+
+ public List findByTheme(String theme){
+ EntityTransaction t=em.getTransaction();
+ t.begin();
+ Query query=em.createQuery("select s from Session s where s.theme=:theme");
+ query.setParameter("theme",theme);
+ List sessions=query.getResultList();
+ t.commit();
+ if(sessions.size()>0){
+ return sessions;
+ }else{
+ return null;
+ }
+ }
+}
diff --git a/src/main/java/fr/istic/taa/jaxrs/DAO/UtilisateurDAO.java b/src/main/java/fr/istic/taa/jaxrs/DAO/UtilisateurDAO.java
new file mode 100644
index 0000000..86006f1
--- /dev/null
+++ b/src/main/java/fr/istic/taa/jaxrs/DAO/UtilisateurDAO.java
@@ -0,0 +1,37 @@
+package fr.istic.taa.jaxrs.DAO;
+
+import jakarta.persistence.EntityTransaction;
+import jakarta.persistence.Query;
+import fr.istic.taa.jaxrs.metier.Session;
+import fr.istic.taa.jaxrs.metier.Utilisateur;
+
+public class UtilisateurDAO extends AbstractJpaDao {
+ public UtilisateurDAO() {
+ super();
+ this.setClass(Utilisateur.class);
+ }
+
+ public Utilisateur findByEmail(String email){
+ EntityTransaction t=em.getTransaction();
+ t.begin();
+ Query query=em.createQuery("select u from Utilisateur u where u.email=:email");
+ query.setParameter("email",email);
+ Utilisateur u=(Utilisateur)query.getSingleResult();
+ t.commit();
+ return u;
+ }
+
+ public void addToSession(int sessionId, int userId) {
+ EntityTransaction t = em.getTransaction();
+ t.begin();
+ Session s = em.find(Session.class, sessionId);
+ Utilisateur u = em.find(Utilisateur.class, userId);
+
+ //FAUT AJOUTER OWNING SIDE ( Ici u --> s)
+ u.getSession().add(s);
+ //Jsp il faut birectionnelle ou pas?
+ s.getUtilisateurs().add(u);
+ em.merge(u);
+ t.commit();
+ }
+}
diff --git a/src/main/java/fr/istic/taa/jaxrs/DTO/QuestionDTO.java b/src/main/java/fr/istic/taa/jaxrs/DTO/QuestionDTO.java
new file mode 100644
index 0000000..fd7aaf4
--- /dev/null
+++ b/src/main/java/fr/istic/taa/jaxrs/DTO/QuestionDTO.java
@@ -0,0 +1,13 @@
+package fr.istic.taa.jaxrs.DTO;
+
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+@Data
+public class QuestionDTO {
+ private int id;
+ private String question;
+ private String reponse;
+
+}
diff --git a/src/main/java/fr/istic/taa/jaxrs/DTO/QuizzDTO.java b/src/main/java/fr/istic/taa/jaxrs/DTO/QuizzDTO.java
new file mode 100644
index 0000000..70d8366
--- /dev/null
+++ b/src/main/java/fr/istic/taa/jaxrs/DTO/QuizzDTO.java
@@ -0,0 +1,12 @@
+package fr.istic.taa.jaxrs.DTO;
+
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+@Data
+
+public class QuizzDTO {
+ private int id;
+
+}
diff --git a/src/main/java/fr/istic/taa/jaxrs/DTO/ReponseDTO.java b/src/main/java/fr/istic/taa/jaxrs/DTO/ReponseDTO.java
new file mode 100644
index 0000000..9020042
--- /dev/null
+++ b/src/main/java/fr/istic/taa/jaxrs/DTO/ReponseDTO.java
@@ -0,0 +1,10 @@
+package fr.istic.taa.jaxrs.DTO;
+
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+@Data
+
+public class ReponseDTO {
+}
diff --git a/src/main/java/fr/istic/taa/jaxrs/DTO/SessionDTO.java b/src/main/java/fr/istic/taa/jaxrs/DTO/SessionDTO.java
new file mode 100644
index 0000000..b0a454c
--- /dev/null
+++ b/src/main/java/fr/istic/taa/jaxrs/DTO/SessionDTO.java
@@ -0,0 +1,10 @@
+package fr.istic.taa.jaxrs.DTO;
+
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+@Data
+
+public class SessionDTO {
+}
diff --git a/src/main/java/fr/istic/taa/jaxrs/DTO/UtilisateurDTO.java b/src/main/java/fr/istic/taa/jaxrs/DTO/UtilisateurDTO.java
new file mode 100644
index 0000000..6e0ba04
--- /dev/null
+++ b/src/main/java/fr/istic/taa/jaxrs/DTO/UtilisateurDTO.java
@@ -0,0 +1,13 @@
+package fr.istic.taa.jaxrs.DTO;
+
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+@Data
+
+public class UtilisateurDTO {
+ private int id;
+ private String name;
+ private String email;
+}
diff --git a/src/main/java/fr/istic/taa/jaxrs/RestServer.java b/src/main/java/fr/istic/taa/jaxrs/RestServer.java
new file mode 100644
index 0000000..d2eeaeb
--- /dev/null
+++ b/src/main/java/fr/istic/taa/jaxrs/RestServer.java
@@ -0,0 +1,32 @@
+package fr.istic.taa.jaxrs;
+
+import io.undertow.Undertow;
+import org.jboss.resteasy.plugins.server.undertow.UndertowJaxrsServer;
+
+import java.util.logging.Logger;
+
+/**
+ * RESTfull microservice, based on JAX-RS and JBoss Undertow
+ *
+ */
+public class RestServer {
+
+ private static final Logger logger = Logger.getLogger(RestServer.class.getName());
+
+ public static void main( String[] args ) {
+
+ UndertowJaxrsServer ut = new UndertowJaxrsServer();
+
+ TestApplication ta = new TestApplication();
+
+ ut.deploy(ta);
+
+ ut.start(
+ Undertow.builder()
+ .addHttpListener(8080, "localhost")
+
+ );
+
+ logger.info("JAX-RS based micro-service running!");
+ }
+}
diff --git a/src/main/java/fr/istic/taa/jaxrs/TestApplication.java b/src/main/java/fr/istic/taa/jaxrs/TestApplication.java
new file mode 100644
index 0000000..c479dad
--- /dev/null
+++ b/src/main/java/fr/istic/taa/jaxrs/TestApplication.java
@@ -0,0 +1,44 @@
+/**
+ * JBoss, Home of Professional Open Source
+ * Copyright Red Hat, Inc., and individual contributors.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package fr.istic.taa.jaxrs;
+
+import java.util.HashSet;
+import java.util.Set;
+
+import fr.istic.taa.jaxrs.rest.PetResource;
+import io.swagger.v3.jaxrs2.integration.resources.OpenApiResource;
+import jakarta.ws.rs.ApplicationPath;
+import jakarta.ws.rs.core.Application;
+
+@ApplicationPath("/")
+public class TestApplication extends Application {
+
+
+ @Override
+ public Set> getClasses() {
+
+ final Set> clazzes = new HashSet>();
+
+ clazzes.add(OpenApiResource.class);
+ clazzes.add(PetResource.class);
+// clazzes.add(AcceptHeaderOpenApiResource.class);
+
+
+ return clazzes;
+ }
+
+}
diff --git a/src/main/java/fr/istic/taa/jaxrs/domain/Pet.java b/src/main/java/fr/istic/taa/jaxrs/domain/Pet.java
new file mode 100644
index 0000000..c8738b9
--- /dev/null
+++ b/src/main/java/fr/istic/taa/jaxrs/domain/Pet.java
@@ -0,0 +1,44 @@
+package fr.istic.taa.jaxrs.domain;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import io.swagger.v3.oas.models.tags.Tag;
+import jakarta.xml.bind.annotation.XmlElement;
+import jakarta.xml.bind.annotation.XmlElementWrapper;
+import jakarta.xml.bind.annotation.XmlRootElement;
+
+@XmlRootElement(name = "Pet")
+public class Pet {
+ private long id;
+ private String name;
+ private List tags = new ArrayList();
+
+ @XmlElement(name = "id")
+ public long getId() {
+ return id;
+ }
+
+ public void setId(long id) {
+ this.id = id;
+ }
+
+ @XmlElement(name = "name")
+ public String getName() {
+ return name;
+ }
+
+ public void setName(String name) {
+ this.name = name;
+ }
+
+ @XmlElementWrapper(name = "tags")
+ @XmlElement(name = "tag")
+ public List getTags() {
+ return tags;
+ }
+
+ public void setTags(List tags) {
+ this.tags = tags;
+ }
+}
\ No newline at end of file
diff --git a/src/main/java/fr/istic/taa/jaxrs/metier/Choix.java b/src/main/java/fr/istic/taa/jaxrs/metier/Choix.java
new file mode 100644
index 0000000..0e7de56
--- /dev/null
+++ b/src/main/java/fr/istic/taa/jaxrs/metier/Choix.java
@@ -0,0 +1,28 @@
+package fr.istic.taa.jaxrs.metier;
+
+import java.util.List;
+
+import jakarta.persistence.Entity;
+import jakarta.persistence.PrimaryKeyJoinColumn;
+import lombok.Getter;
+import lombok.NoArgsConstructor;
+import lombok.Setter;
+
+@Entity
+@Getter
+@Setter
+@NoArgsConstructor
+@PrimaryKeyJoinColumn(name = "Choix_Id")
+public class Choix extends Reponse{
+ List choix;
+
+ @Override
+ public String valHTML(){
+ String res = "";
+
+ for (String val : this.choix) {
+ res+=val+"
";
+ }
+ return res;
+ }
+}
diff --git a/src/main/java/fr/istic/taa/jaxrs/metier/Question.java b/src/main/java/fr/istic/taa/jaxrs/metier/Question.java
new file mode 100644
index 0000000..22edd9b
--- /dev/null
+++ b/src/main/java/fr/istic/taa/jaxrs/metier/Question.java
@@ -0,0 +1,27 @@
+package fr.istic.taa.jaxrs.metier;
+
+import jakarta.persistence.*;
+import lombok.Getter;
+import lombok.NoArgsConstructor;
+import lombok.Setter;
+
+import java.io.Serializable;
+
+@Entity
+@Getter
+@Setter
+@NoArgsConstructor
+public class Question implements Serializable {
+ @Id
+ @GeneratedValue(strategy = GenerationType.IDENTITY)
+ private int id;
+ private String question;
+
+ @OneToOne(cascade = CascadeType.ALL)
+ @JoinColumn(name ="bonne_reponse", referencedColumnName = "id")
+ private Reponse reponse;
+
+ @ManyToOne
+ @JoinColumn(name="id_quizz")
+ private Quizz quizz;
+}
diff --git a/src/main/java/fr/istic/taa/jaxrs/metier/Quizz.java b/src/main/java/fr/istic/taa/jaxrs/metier/Quizz.java
new file mode 100644
index 0000000..9cb4efa
--- /dev/null
+++ b/src/main/java/fr/istic/taa/jaxrs/metier/Quizz.java
@@ -0,0 +1,34 @@
+package fr.istic.taa.jaxrs.metier;
+
+import jakarta.persistence.*;
+import lombok.Getter;
+import lombok.NoArgsConstructor;
+import lombok.Setter;
+
+import java.io.Serializable;
+import java.util.ArrayList;
+import java.util.List;
+
+@Entity
+@Getter
+@Setter
+@NoArgsConstructor
+public class Quizz implements Serializable {
+ @Id
+ @GeneratedValue
+ private int id;
+
+ @ManyToOne
+ private Session session;
+
+ @ManyToOne
+ @JoinColumn(name="id_utilisateur")
+ private Utilisateur utilisateur;
+
+ @OneToMany(mappedBy = "quizz")
+ private List questions=new ArrayList();
+
+ public void addQuestion(Question question) {
+ this.questions.add(question);
+ }
+}
\ No newline at end of file
diff --git a/src/main/java/fr/istic/taa/jaxrs/metier/Reponse.java b/src/main/java/fr/istic/taa/jaxrs/metier/Reponse.java
new file mode 100644
index 0000000..8a8f122
--- /dev/null
+++ b/src/main/java/fr/istic/taa/jaxrs/metier/Reponse.java
@@ -0,0 +1,30 @@
+package fr.istic.taa.jaxrs.metier;
+
+import java.io.Serializable;
+import java.util.List;
+
+import jakarta.persistence.*;
+import lombok.Getter;
+import lombok.NoArgsConstructor;
+import lombok.Setter;
+
+@Entity
+@Getter
+@Setter
+@NoArgsConstructor
+@Inheritance(strategy=InheritanceType.JOINED)
+@DiscriminatorColumn(name="Type_reponse")
+@DiscriminatorValue("Reponse")
+public abstract class Reponse implements Serializable {
+ @Id
+ @GeneratedValue(strategy = GenerationType.AUTO)
+ private int id;
+
+ @OneToOne
+ private Question question;
+ public List reponses;
+
+ public String valHTML(){
+ return "";
+ }
+}
\ No newline at end of file
diff --git a/src/main/java/fr/istic/taa/jaxrs/metier/ReponseCourte.java b/src/main/java/fr/istic/taa/jaxrs/metier/ReponseCourte.java
new file mode 100644
index 0000000..d8d4647
--- /dev/null
+++ b/src/main/java/fr/istic/taa/jaxrs/metier/ReponseCourte.java
@@ -0,0 +1,21 @@
+package fr.istic.taa.jaxrs.metier;
+
+import jakarta.persistence.Entity;
+import jakarta.persistence.PrimaryKeyJoinColumn;
+import lombok.Getter;
+import lombok.NoArgsConstructor;
+import lombok.Setter;
+
+@Entity
+@Getter
+@Setter
+@NoArgsConstructor
+@PrimaryKeyJoinColumn(name = "RC_Id")
+public class ReponseCourte extends Reponse{
+ String value;
+
+ @Override
+ public String valHTML(){
+ return "INPUT";
+ }
+}
diff --git a/src/main/java/fr/istic/taa/jaxrs/metier/Session.java b/src/main/java/fr/istic/taa/jaxrs/metier/Session.java
new file mode 100644
index 0000000..902ffe7
--- /dev/null
+++ b/src/main/java/fr/istic/taa/jaxrs/metier/Session.java
@@ -0,0 +1,29 @@
+package fr.istic.taa.jaxrs.metier;
+
+import java.io.Serializable;
+import java.util.ArrayList;
+import java.util.List;
+
+import jakarta.persistence.*;
+import lombok.Getter;
+import lombok.NoArgsConstructor;
+import lombok.Setter;
+
+@Entity
+@Getter
+@Setter
+@NoArgsConstructor
+public class Session implements Serializable {
+ @Id
+ @GeneratedValue(strategy = GenerationType.IDENTITY)
+ private int id;
+
+ @Column(unique=true)
+ private int codePIN;
+ @OneToMany(mappedBy="session")
+ private List quizzs = new ArrayList<>();
+
+ @ManyToMany(mappedBy = "session")
+ private List utilisateurs = new ArrayList<>();
+ private String theme;
+}
\ No newline at end of file
diff --git a/src/main/java/fr/istic/taa/jaxrs/metier/Utilisateur.java b/src/main/java/fr/istic/taa/jaxrs/metier/Utilisateur.java
new file mode 100644
index 0000000..ff9ab3c
--- /dev/null
+++ b/src/main/java/fr/istic/taa/jaxrs/metier/Utilisateur.java
@@ -0,0 +1,33 @@
+package fr.istic.taa.jaxrs.metier;
+
+import jakarta.persistence.*;
+import lombok.*;
+import java.io.Serializable;
+import java.util.ArrayList;
+import java.util.List;
+
+@Entity
+@Getter
+@Setter
+@NoArgsConstructor
+public class Utilisateur implements Serializable {
+ @Id
+ @GeneratedValue(strategy = GenerationType.IDENTITY)
+ private int id;
+ private String name;
+
+ @Column(unique=true)
+ private String email;
+ private String password;
+
+ @ManyToMany
+ @JoinTable(
+ name="utilisateur_session",
+ joinColumns = @JoinColumn(name="utilisateur_id"),
+ inverseJoinColumns = @JoinColumn(name = "session_id")
+ )
+ private List session= new ArrayList<>();;
+
+ @OneToMany(mappedBy = "utilisateur")
+ private List quizzs;
+}
\ No newline at end of file
diff --git a/src/main/java/fr/istic/taa/jaxrs/rest/PetResource.java b/src/main/java/fr/istic/taa/jaxrs/rest/PetResource.java
new file mode 100644
index 0000000..3087395
--- /dev/null
+++ b/src/main/java/fr/istic/taa/jaxrs/rest/PetResource.java
@@ -0,0 +1,38 @@
+package fr.istic.taa.jaxrs.rest;
+
+import fr.istic.taa.jaxrs.domain.Pet;
+import io.swagger.v3.oas.annotations.Parameter;
+import jakarta.ws.rs.Consumes;
+import jakarta.ws.rs.GET;
+import jakarta.ws.rs.POST;
+import jakarta.ws.rs.Path;
+import jakarta.ws.rs.PathParam;
+import jakarta.ws.rs.Produces;
+import jakarta.ws.rs.core.Response;
+
+@Path("pet")
+@Produces({"application/json", "application/xml"})
+public class PetResource {
+
+ @GET
+ @Path("/{petId}")
+ public Pet getPetById(@PathParam("petId") Long petId) {
+ // return pet
+ return new Pet();
+ }
+
+ @GET
+ @Path("/")
+ public Pet getPet(Long petId) {
+ return new Pet();
+ }
+
+
+ @POST
+ @Consumes("application/json")
+ public Response addPet(
+ @Parameter(description = "Pet object that needs to be added to the store", required = true) Pet pet) {
+ // add pet
+ return Response.ok().entity("SUCCESS").build();
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/META-INF/persistence.xml b/src/main/resources/META-INF/persistence.xml
new file mode 100644
index 0000000..7277b7d
--- /dev/null
+++ b/src/main/resources/META-INF/persistence.xml
@@ -0,0 +1,67 @@
+
+
+
+
+ org.hibernate.jpa.HibernatePersistenceProvider
+
+
+
+
+
+
+
+
+
+
+
+ org.hibernate.jpa.HibernatePersistenceProvider
+
+
+
+
+
+
+
+
+
+
+
+
+
+ org.hibernate.jpa.HibernatePersistenceProvider
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file