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