diff --git a/SpringBootProject/pom.xml b/SpringBootProject/pom.xml
index 9a56cb5..8045cf4 100644
--- a/SpringBootProject/pom.xml
+++ b/SpringBootProject/pom.xml
@@ -50,6 +50,11 @@
org.springframework.boot
spring-boot-starter-hateoas
+
+ org.modelmapper
+ modelmapper
+ 3.2.0
+
diff --git a/SpringBootProject/src/main/java/fr/iut/sciencequest/sae/ApplicationConfig.java b/SpringBootProject/src/main/java/fr/iut/sciencequest/sae/ApplicationConfig.java
index 947c44c..fa494fe 100644
--- a/SpringBootProject/src/main/java/fr/iut/sciencequest/sae/ApplicationConfig.java
+++ b/SpringBootProject/src/main/java/fr/iut/sciencequest/sae/ApplicationConfig.java
@@ -4,13 +4,14 @@ import org.springframework.context.annotation.Configuration;
import org.springframework.http.MediaType;
import org.springframework.web.accept.FixedContentNegotiationStrategy;
import org.springframework.web.servlet.config.annotation.ContentNegotiationConfigurer;
-import org.springframework.web.servlet.config.annotation.WebMvcConfigurationSupport;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
import java.util.List;
@Configuration
public class ApplicationConfig implements WebMvcConfigurer {
+ public static final int DEFAULT_PAGEABLE_SIZE = 1;
+
// Permet de forcer l'affichage des erreurs en JSON sans prendre en compte les headers du client
@Override
public void configureContentNegotiation(ContentNegotiationConfigurer configurer) {
diff --git a/SpringBootProject/src/main/java/fr/iut/sciencequest/sae/ApplicationFilter.java b/SpringBootProject/src/main/java/fr/iut/sciencequest/sae/ApplicationFilter.java
index df7c8a3..be17cff 100644
--- a/SpringBootProject/src/main/java/fr/iut/sciencequest/sae/ApplicationFilter.java
+++ b/SpringBootProject/src/main/java/fr/iut/sciencequest/sae/ApplicationFilter.java
@@ -7,18 +7,16 @@ import com.fasterxml.jackson.databind.node.ArrayNode;
import com.fasterxml.jackson.databind.node.ObjectNode;
import jakarta.servlet.FilterChain;
import jakarta.servlet.ServletException;
-import jakarta.servlet.ServletOutputStream;
-import jakarta.servlet.WriteListener;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;
-import jakarta.servlet.http.HttpServletResponseWrapper;
import org.springframework.core.annotation.Order;
import org.springframework.http.MediaType;
+import org.springframework.lang.NonNull;
+import org.springframework.lang.Nullable;
import org.springframework.stereotype.Component;
import org.springframework.web.filter.OncePerRequestFilter;
import org.springframework.web.util.ContentCachingResponseWrapper;
-import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.nio.charset.StandardCharsets;
@@ -32,7 +30,8 @@ public class ApplicationFilter extends OncePerRequestFilter {
}
@Override
- protected void doFilterInternal(HttpServletRequest request, HttpServletResponse response, FilterChain filterChain) throws ServletException, IOException {
+ @NonNull
+ protected void doFilterInternal(@Nullable HttpServletRequest request, @Nullable HttpServletResponse response, FilterChain filterChain) throws ServletException, IOException {
// Intercept and modify the JSON response
ContentCachingResponseWrapper responseWrapper = new ContentCachingResponseWrapper(response);
diff --git a/SpringBootProject/src/main/java/fr/iut/sciencequest/sae/SaeApplication.java b/SpringBootProject/src/main/java/fr/iut/sciencequest/sae/SaeApplication.java
index 01bc582..2595cdf 100644
--- a/SpringBootProject/src/main/java/fr/iut/sciencequest/sae/SaeApplication.java
+++ b/SpringBootProject/src/main/java/fr/iut/sciencequest/sae/SaeApplication.java
@@ -3,6 +3,8 @@ package fr.iut.sciencequest.sae;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.annotation.Bean;
+import org.springframework.lang.NonNull;
+import org.springframework.lang.Nullable;
import org.springframework.web.servlet.config.annotation.CorsRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
@@ -12,8 +14,10 @@ public class SaeApplication {
public WebMvcConfigurer corsConfigurer() {
return new WebMvcConfigurer() {
@Override
- public void addCorsMappings(CorsRegistry registry) {
- registry.addMapping("/**").allowedOrigins("*");
+ @NonNull
+ public void addCorsMappings(@Nullable CorsRegistry registry) {
+ assert registry != null;
+ registry.addMapping("/**").allowedOrigins("*");
}
};
}
diff --git a/SpringBootProject/src/main/java/fr/iut/sciencequest/sae/assemblers/PartieModelAssembler.java b/SpringBootProject/src/main/java/fr/iut/sciencequest/sae/assemblers/PartieModelAssembler.java
new file mode 100644
index 0000000..5828adf
--- /dev/null
+++ b/SpringBootProject/src/main/java/fr/iut/sciencequest/sae/assemblers/PartieModelAssembler.java
@@ -0,0 +1,24 @@
+package fr.iut.sciencequest.sae.assemblers;
+
+import fr.iut.sciencequest.sae.controllers.PartieController;
+import fr.iut.sciencequest.sae.entities.Partie;
+import fr.iut.sciencequest.sae.dto.PartieDTO;
+import jakarta.annotation.Nullable;
+import org.modelmapper.ModelMapper;
+import org.springframework.hateoas.server.mvc.RepresentationModelAssemblerSupport;
+import org.springframework.lang.NonNull;
+import org.springframework.stereotype.Component;
+
+@Component
+public class PartieModelAssembler extends RepresentationModelAssemblerSupport {
+ public PartieModelAssembler() {
+ super(PartieController.class, PartieDTO.class);
+ }
+
+ @Override
+ @NonNull
+ public PartieDTO toModel(@Nullable Partie entity) {
+ ModelMapper mapper = new ModelMapper();
+ return mapper.map(entity, PartieDTO.class);
+ }
+}
diff --git a/SpringBootProject/src/main/java/fr/iut/sciencequest/sae/assemblers/QuestionModelAssembler.java b/SpringBootProject/src/main/java/fr/iut/sciencequest/sae/assemblers/QuestionModelAssembler.java
index 88ddd90..11677da 100644
--- a/SpringBootProject/src/main/java/fr/iut/sciencequest/sae/assemblers/QuestionModelAssembler.java
+++ b/SpringBootProject/src/main/java/fr/iut/sciencequest/sae/assemblers/QuestionModelAssembler.java
@@ -2,25 +2,24 @@ package fr.iut.sciencequest.sae.assemblers;
import fr.iut.sciencequest.sae.controllers.QuestionController;
import fr.iut.sciencequest.sae.entities.Question;
-import fr.iut.sciencequest.sae.models.QuestionModel;
+import fr.iut.sciencequest.sae.dto.QuestionDTO;
+import jakarta.annotation.Nullable;
+import org.modelmapper.ModelMapper;
import org.springframework.hateoas.server.mvc.RepresentationModelAssemblerSupport;
+import org.springframework.lang.NonNull;
import org.springframework.stereotype.Component;
@Component
-public class QuestionModelAssembler extends RepresentationModelAssemblerSupport {
+public class QuestionModelAssembler extends RepresentationModelAssemblerSupport {
public QuestionModelAssembler() {
- super(QuestionController.class, QuestionModel.class);
+ super(QuestionController.class, QuestionDTO.class);
}
@Override
- public QuestionModel toModel(Question entity) {
- QuestionModel questionModel = instantiateModel(entity);
-
- questionModel.setQuestion(entity.getQuestion());
- questionModel.setId(entity.getId());
- questionModel.setReponses(entity.getReponses());
-
- return questionModel;
+ @NonNull
+ public QuestionDTO toModel(@Nullable Question entity) {
+ ModelMapper mapper = new ModelMapper();
+ return mapper.map(entity, QuestionDTO.class);
}
}
diff --git a/SpringBootProject/src/main/java/fr/iut/sciencequest/sae/assemblers/ScientifiqueModelAssembler.java b/SpringBootProject/src/main/java/fr/iut/sciencequest/sae/assemblers/ScientifiqueModelAssembler.java
new file mode 100644
index 0000000..9fd4c7b
--- /dev/null
+++ b/SpringBootProject/src/main/java/fr/iut/sciencequest/sae/assemblers/ScientifiqueModelAssembler.java
@@ -0,0 +1,24 @@
+package fr.iut.sciencequest.sae.assemblers;
+
+import fr.iut.sciencequest.sae.controllers.ScientifiqueController;
+import fr.iut.sciencequest.sae.dto.ScientifiqueDTO;
+import fr.iut.sciencequest.sae.entities.scientifique.Scientifique;
+import jakarta.annotation.Nullable;
+import org.modelmapper.ModelMapper;
+import org.springframework.hateoas.server.mvc.RepresentationModelAssemblerSupport;
+import org.springframework.lang.NonNull;
+import org.springframework.stereotype.Component;
+
+@Component
+public class ScientifiqueModelAssembler extends RepresentationModelAssemblerSupport {
+ public ScientifiqueModelAssembler() {
+ super(ScientifiqueController.class, ScientifiqueDTO.class);
+ }
+
+ @Override
+ @NonNull
+ public ScientifiqueDTO toModel(@Nullable Scientifique entity) {
+ ModelMapper mapper = new ModelMapper();
+ return mapper.map(entity, ScientifiqueDTO.class);
+ }
+}
diff --git a/SpringBootProject/src/main/java/fr/iut/sciencequest/sae/controllers/Controller.java b/SpringBootProject/src/main/java/fr/iut/sciencequest/sae/controllers/Controller.java
index e608fe9..4315901 100644
--- a/SpringBootProject/src/main/java/fr/iut/sciencequest/sae/controllers/Controller.java
+++ b/SpringBootProject/src/main/java/fr/iut/sciencequest/sae/controllers/Controller.java
@@ -8,9 +8,7 @@ import org.springframework.hateoas.Link;
import java.lang.reflect.Method;
import java.util.ArrayList;
-import java.util.Arrays;
import java.util.List;
-import java.util.Optional;
import static org.springframework.hateoas.server.mvc.WebMvcLinkBuilder.linkTo;
diff --git a/SpringBootProject/src/main/java/fr/iut/sciencequest/sae/controllers/DifficulteController.java b/SpringBootProject/src/main/java/fr/iut/sciencequest/sae/controllers/DifficulteController.java
index 3ce193b..27bd7a4 100644
--- a/SpringBootProject/src/main/java/fr/iut/sciencequest/sae/controllers/DifficulteController.java
+++ b/SpringBootProject/src/main/java/fr/iut/sciencequest/sae/controllers/DifficulteController.java
@@ -4,8 +4,6 @@ package fr.iut.sciencequest.sae.controllers;
import fr.iut.sciencequest.sae.entities.Difficulte;
import fr.iut.sciencequest.sae.services.DifficulteService;
import org.springframework.hateoas.CollectionModel;
-import org.springframework.hateoas.EntityModel;
-import org.springframework.hateoas.Link;
import org.springframework.http.HttpStatus;
import org.springframework.http.MediaType;
import org.springframework.web.bind.annotation.GetMapping;
@@ -13,9 +11,6 @@ import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseStatus;
import org.springframework.web.bind.annotation.RestController;
-import static org.springframework.hateoas.server.mvc.WebMvcLinkBuilder.linkTo;
-import static org.springframework.hateoas.server.mvc.WebMvcLinkBuilder.methodOn;
-
@RestController
@RequestMapping("/api/v1/difficultes")
diff --git a/SpringBootProject/src/main/java/fr/iut/sciencequest/sae/controllers/PartieController.java b/SpringBootProject/src/main/java/fr/iut/sciencequest/sae/controllers/PartieController.java
index e89f0ed..63f5fc6 100644
--- a/SpringBootProject/src/main/java/fr/iut/sciencequest/sae/controllers/PartieController.java
+++ b/SpringBootProject/src/main/java/fr/iut/sciencequest/sae/controllers/PartieController.java
@@ -1,11 +1,19 @@
package fr.iut.sciencequest.sae.controllers;
+import fr.iut.sciencequest.sae.assemblers.PartieModelAssembler;
+import fr.iut.sciencequest.sae.assemblers.QuestionModelAssembler;
+import fr.iut.sciencequest.sae.dto.PartieDTO;
import fr.iut.sciencequest.sae.entities.Partie;
+import fr.iut.sciencequest.sae.entities.Question;
import fr.iut.sciencequest.sae.exceptions.DuplicatedFieldException;
import fr.iut.sciencequest.sae.exceptions.notFound.PartieNotFoundException;
import fr.iut.sciencequest.sae.repositories.PartieRepository;
+import fr.iut.sciencequest.sae.services.PartieService;
+import fr.iut.sciencequest.sae.services.QuestionService;
import jakarta.servlet.http.HttpServletRequest;
+import lombok.AllArgsConstructor;
import org.springframework.dao.DataIntegrityViolationException;
+import org.springframework.data.web.PagedResourcesAssembler;
import org.springframework.hateoas.EntityModel;
import org.springframework.hateoas.Link;
import org.springframework.http.HttpStatus;
@@ -16,25 +24,21 @@ import static org.springframework.hateoas.server.mvc.WebMvcLinkBuilder.*;
import java.util.Optional;
@RestController
+@AllArgsConstructor
@RequestMapping("/api/v1/partie")
public class PartieController extends Controller {
- private final PartieRepository partieRepository;
-
- public PartieController(PartieRepository partieRepository) {
- this.partieRepository = partieRepository;
- }
+ private final PartieModelAssembler partieModelAssembler;
+ @SuppressWarnings("SpringJavaInjectionPointsAutowiringInspection")
+ private final PagedResourcesAssembler pagedResourcesAssembler;
+ private final PartieService partieService;
@RequestMapping(value = "/{id}",method = RequestMethod.GET, produces = MediaType.APPLICATION_JSON_VALUE)
- public EntityModel> getPartie(@PathVariable int id, HttpServletRequest request) {
- Optional partieOptional = this.partieRepository.findById(id);
- Partie partie = partieOptional.orElseThrow(() ->
- new PartieNotFoundException("Partie", id)
- );
-
- Link selfLink = linkTo(methodOn(PartieController.class).getPartie(id,request)).withSelfRel();
- return EntityModel.of(Optional.ofNullable(partie), selfLink);
+ public PartieDTO getPartie(@PathVariable int id) {
+ Partie partie = this.partieService.findById(id);
+ return partieModelAssembler.toModel(partie);
}
+ /*
@RequestMapping(method = RequestMethod.POST, produces = MediaType.APPLICATION_JSON_VALUE)
@ResponseStatus(HttpStatus.CREATED)
public Partie createPartie(@RequestBody Partie partie) {
@@ -43,7 +47,7 @@ public class PartieController extends Controller {
} catch (DataIntegrityViolationException e) {
throw new DuplicatedFieldException("ERREUR : il existe déjà une partie : " + partie.getId() + " en base");
}
- }
+ }*/
}
diff --git a/SpringBootProject/src/main/java/fr/iut/sciencequest/sae/controllers/QuestionController.java b/SpringBootProject/src/main/java/fr/iut/sciencequest/sae/controllers/QuestionController.java
index 9d15eb9..c53310b 100644
--- a/SpringBootProject/src/main/java/fr/iut/sciencequest/sae/controllers/QuestionController.java
+++ b/SpringBootProject/src/main/java/fr/iut/sciencequest/sae/controllers/QuestionController.java
@@ -1,36 +1,32 @@
package fr.iut.sciencequest.sae.controllers;
+import fr.iut.sciencequest.sae.ApplicationConfig;
import fr.iut.sciencequest.sae.assemblers.QuestionModelAssembler;
import fr.iut.sciencequest.sae.entities.Question;
import fr.iut.sciencequest.sae.exceptions.IncorrectPageException;
-import fr.iut.sciencequest.sae.models.QuestionModel;
+import fr.iut.sciencequest.sae.dto.QuestionDTO;
import fr.iut.sciencequest.sae.services.QuestionService;
-import org.springframework.beans.factory.annotation.Autowired;
+import lombok.AllArgsConstructor;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable;
+import org.springframework.data.web.PageableDefault;
import org.springframework.data.web.PagedResourcesAssembler;
import org.springframework.hateoas.PagedModel;
import org.springframework.http.MediaType;
import org.springframework.web.bind.annotation.*;
@RestController
+@AllArgsConstructor
@RequestMapping("/api/v1/questions")
public class QuestionController extends Controller {
private final QuestionService questionService;
-
- @Autowired
- private QuestionModelAssembler questionModelAssembler;
-
- @Autowired
- private PagedResourcesAssembler pagedResourcesAssembler;
-
- public QuestionController(QuestionService questionService) {
- this.questionService = questionService;
- }
+ private final QuestionModelAssembler questionModelAssembler;
+ @SuppressWarnings("SpringJavaInjectionPointsAutowiringInspection")
+ private final PagedResourcesAssembler pagedResourcesAssembler;
@RequestMapping(method = RequestMethod.GET, produces = MediaType.APPLICATION_JSON_VALUE)
@ResponseBody
- public PagedModel getAllQuestions(Pageable p) {
+ public PagedModel getAllQuestions(@PageableDefault(size = ApplicationConfig.DEFAULT_PAGEABLE_SIZE) Pageable p) {
try {
Page questionPage = questionService.findAll(p);
return pagedResourcesAssembler.toModel(questionPage, questionModelAssembler);
diff --git a/SpringBootProject/src/main/java/fr/iut/sciencequest/sae/controllers/ScientifiqueController.java b/SpringBootProject/src/main/java/fr/iut/sciencequest/sae/controllers/ScientifiqueController.java
index b93a496..ce99b69 100644
--- a/SpringBootProject/src/main/java/fr/iut/sciencequest/sae/controllers/ScientifiqueController.java
+++ b/SpringBootProject/src/main/java/fr/iut/sciencequest/sae/controllers/ScientifiqueController.java
@@ -1,5 +1,11 @@
package fr.iut.sciencequest.sae.controllers;
+import fr.iut.sciencequest.sae.ApplicationConfig;
+import fr.iut.sciencequest.sae.assemblers.QuestionModelAssembler;
+import fr.iut.sciencequest.sae.assemblers.ScientifiqueModelAssembler;
+import fr.iut.sciencequest.sae.dto.QuestionDTO;
+import fr.iut.sciencequest.sae.dto.ScientifiqueDTO;
+import fr.iut.sciencequest.sae.entities.Question;
import fr.iut.sciencequest.sae.entities.scientifique.Scientifique;
import fr.iut.sciencequest.sae.entities.indice.IIndiceidAndLibelleAndScientifiqueIdOnlyProjection;
import fr.iut.sciencequest.sae.entities.indice.Indice;
@@ -7,10 +13,14 @@ import fr.iut.sciencequest.sae.entities.indice.IValidateOnlyLibelle;
import fr.iut.sciencequest.sae.exceptions.IncorrectPageException;
import fr.iut.sciencequest.sae.services.IndiceService;
import fr.iut.sciencequest.sae.services.interfaces.IScientifiqueService;
-import org.springframework.data.projection.ProjectionFactory;
-import org.springframework.data.projection.SpelAwareProxyProjectionFactory;
+import lombok.AllArgsConstructor;
+import org.springframework.data.domain.Page;
+import org.springframework.data.domain.Pageable;
+import org.springframework.data.web.PageableDefault;
+import org.springframework.data.web.PagedResourcesAssembler;
import org.springframework.hateoas.CollectionModel;
import org.springframework.hateoas.EntityModel;
+import org.springframework.hateoas.PagedModel;
import org.springframework.http.HttpStatus;
import org.springframework.http.MediaType;
import org.springframework.validation.annotation.Validated;
@@ -18,24 +28,21 @@ import org.springframework.web.bind.annotation.*;
import java.util.Optional;
-import static org.springframework.hateoas.server.mvc.WebMvcLinkBuilder.linkTo;
-
@RestController
+@AllArgsConstructor
@RequestMapping("/api/v1/scientifiques")
public class ScientifiqueController extends Controller {
private final IScientifiqueService scientifiqueService;
+ private final ScientifiqueModelAssembler scientifiqueModelAssembler;
+ @SuppressWarnings("SpringJavaInjectionPointsAutowiringInspection")
+ private final PagedResourcesAssembler pagedResourcesAssembler;
private final IndiceService indiceService;
- public ScientifiqueController(IScientifiqueService scientifiqueService, IndiceService indiceService) {
- this.scientifiqueService = scientifiqueService;
- this.indiceService = indiceService;
- }
-
@GetMapping(produces = MediaType.APPLICATION_JSON_VALUE)
- public CollectionModel> getAllScientists(@RequestParam(name = "page") Optional page) {
+ public PagedModel getAllScientists(@PageableDefault(size = ApplicationConfig.DEFAULT_PAGEABLE_SIZE) Pageable p) {
try {
- return getPageableCollectionModel(this.scientifiqueService.findAll(page.orElse(0)), page.orElse(0),"getAllScientists");
+ return pagedResourcesAssembler.toModel(this.scientifiqueService.findAll(p), scientifiqueModelAssembler);
} catch (IllegalArgumentException e) {
throw new IncorrectPageException("numéro de page incorrect");
}
diff --git a/SpringBootProject/src/main/java/fr/iut/sciencequest/sae/models/QuestionModel.java b/SpringBootProject/src/main/java/fr/iut/sciencequest/sae/dto/IndiceDTO.java
similarity index 65%
rename from SpringBootProject/src/main/java/fr/iut/sciencequest/sae/models/QuestionModel.java
rename to SpringBootProject/src/main/java/fr/iut/sciencequest/sae/dto/IndiceDTO.java
index 829b54c..66b0856 100644
--- a/SpringBootProject/src/main/java/fr/iut/sciencequest/sae/models/QuestionModel.java
+++ b/SpringBootProject/src/main/java/fr/iut/sciencequest/sae/dto/IndiceDTO.java
@@ -1,10 +1,11 @@
-package fr.iut.sciencequest.sae.models;
+package fr.iut.sciencequest.sae.dto;
import com.fasterxml.jackson.annotation.JsonInclude;
import fr.iut.sciencequest.sae.entities.Reponse;
+import jakarta.validation.constraints.NotEmpty;
+import jakarta.validation.constraints.NotNull;
import lombok.*;
import org.springframework.hateoas.RepresentationModel;
-import org.springframework.hateoas.server.core.Relation;
import java.util.List;
@@ -15,8 +16,10 @@ import java.util.List;
@AllArgsConstructor
@EqualsAndHashCode(callSuper = false)
@JsonInclude(JsonInclude.Include.NON_NULL)
-public class QuestionModel extends RepresentationModel {
+public class IndiceDTO extends RepresentationModel {
+ @NotNull
private int id;
private String question;
+ @NotEmpty
private List reponses;
}
diff --git a/SpringBootProject/src/main/java/fr/iut/sciencequest/sae/dto/JoueurDTO.java b/SpringBootProject/src/main/java/fr/iut/sciencequest/sae/dto/JoueurDTO.java
new file mode 100644
index 0000000..7b7f2fb
--- /dev/null
+++ b/SpringBootProject/src/main/java/fr/iut/sciencequest/sae/dto/JoueurDTO.java
@@ -0,0 +1,29 @@
+package fr.iut.sciencequest.sae.dto;
+
+import com.fasterxml.jackson.annotation.JsonInclude;
+import fr.iut.sciencequest.sae.entities.Partie;
+import fr.iut.sciencequest.sae.entities.Reponse;
+import jakarta.validation.constraints.NotBlank;
+import jakarta.validation.constraints.NotEmpty;
+import jakarta.validation.constraints.NotNull;
+import lombok.*;
+import org.springframework.hateoas.RepresentationModel;
+
+
+import java.util.List;
+
+@Data
+@Builder
+@NoArgsConstructor
+@AllArgsConstructor
+@EqualsAndHashCode(callSuper = false)
+@JsonInclude(JsonInclude.Include.NON_NULL)
+public class JoueurDTO extends RepresentationModel {
+ @NotNull
+ private int id;
+
+ @NotBlank
+ private String pseudo;
+
+ private Partie partie;
+}
diff --git a/SpringBootProject/src/main/java/fr/iut/sciencequest/sae/dto/PartieDTO.java b/SpringBootProject/src/main/java/fr/iut/sciencequest/sae/dto/PartieDTO.java
new file mode 100644
index 0000000..33b4b70
--- /dev/null
+++ b/SpringBootProject/src/main/java/fr/iut/sciencequest/sae/dto/PartieDTO.java
@@ -0,0 +1,27 @@
+package fr.iut.sciencequest.sae.dto;
+
+import com.fasterxml.jackson.annotation.JsonInclude;
+import fr.iut.sciencequest.sae.entities.Jeu;
+import fr.iut.sciencequest.sae.entities.joueur.Joueur;
+import jakarta.validation.constraints.NotEmpty;
+import jakarta.validation.constraints.NotNull;
+import lombok.*;
+import org.springframework.hateoas.RepresentationModel;
+
+
+@Data
+@Builder
+@NoArgsConstructor
+@AllArgsConstructor
+@EqualsAndHashCode(callSuper = false)
+@JsonInclude(JsonInclude.Include.NON_NULL)
+public class PartieDTO extends RepresentationModel {
+ @NotNull
+ private int id;
+ @NotEmpty
+ private String codeInvitation;
+ @NotEmpty
+ private Iterable joueurs;
+ @NotEmpty
+ private Jeu jeu;
+}
diff --git a/SpringBootProject/src/main/java/fr/iut/sciencequest/sae/dto/QuestionDTO.java b/SpringBootProject/src/main/java/fr/iut/sciencequest/sae/dto/QuestionDTO.java
new file mode 100644
index 0000000..89c99e8
--- /dev/null
+++ b/SpringBootProject/src/main/java/fr/iut/sciencequest/sae/dto/QuestionDTO.java
@@ -0,0 +1,27 @@
+package fr.iut.sciencequest.sae.dto;
+
+import com.fasterxml.jackson.annotation.JsonInclude;
+import fr.iut.sciencequest.sae.entities.Reponse;
+import jakarta.validation.constraints.NotBlank;
+import jakarta.validation.constraints.NotEmpty;
+import jakarta.validation.constraints.NotNull;
+import lombok.*;
+import org.springframework.hateoas.RepresentationModel;
+
+
+import java.util.List;
+
+@Data
+@Builder
+@NoArgsConstructor
+@AllArgsConstructor
+@EqualsAndHashCode(callSuper = false)
+@JsonInclude(JsonInclude.Include.NON_NULL)
+public class QuestionDTO extends RepresentationModel {
+ @NotNull
+ private int id;
+ @NotBlank
+ private String question;
+ @NotEmpty
+ private Iterable reponses;
+}
diff --git a/SpringBootProject/src/main/java/fr/iut/sciencequest/sae/dto/ScientifiqueDTO.java b/SpringBootProject/src/main/java/fr/iut/sciencequest/sae/dto/ScientifiqueDTO.java
new file mode 100644
index 0000000..430bda3
--- /dev/null
+++ b/SpringBootProject/src/main/java/fr/iut/sciencequest/sae/dto/ScientifiqueDTO.java
@@ -0,0 +1,54 @@
+package fr.iut.sciencequest.sae.dto;
+
+import com.fasterxml.jackson.annotation.JsonInclude;
+import fr.iut.sciencequest.sae.entities.Difficulte;
+import fr.iut.sciencequest.sae.entities.Sexe;
+import fr.iut.sciencequest.sae.entities.Thematique;
+import jakarta.validation.constraints.NotBlank;
+import jakarta.validation.constraints.NotEmpty;
+import jakarta.validation.constraints.NotNull;
+import jakarta.validation.constraints.Size;
+import lombok.*;
+import org.hibernate.validator.constraints.URL;
+import org.springframework.hateoas.RepresentationModel;
+
+import java.util.Date;
+
+
+@Data
+@Builder
+@NoArgsConstructor
+@AllArgsConstructor
+@EqualsAndHashCode(callSuper = false)
+@JsonInclude(JsonInclude.Include.NON_NULL)
+public class ScientifiqueDTO extends RepresentationModel {
+ @NotNull
+ private int id;
+
+ @NotNull
+ private Difficulte difficulte;
+
+ @NotNull
+ private Thematique thematique;
+
+ @URL
+ private String pathToPhoto;
+
+ @NotBlank
+ private String nom;
+
+ @NotBlank
+ private String prenom;
+
+ @NotBlank
+ private String descriptif;
+
+ @NotEmpty
+ private Date dateNaissance;
+
+ @NotBlank
+ private Sexe sexe;
+
+ @Size(min=0, max=1)
+ private double ratioTrouvee;
+}
diff --git a/SpringBootProject/src/main/java/fr/iut/sciencequest/sae/entities/Admin.java b/SpringBootProject/src/main/java/fr/iut/sciencequest/sae/entities/Admin.java
index 85d3e4f..4771b71 100644
--- a/SpringBootProject/src/main/java/fr/iut/sciencequest/sae/entities/Admin.java
+++ b/SpringBootProject/src/main/java/fr/iut/sciencequest/sae/entities/Admin.java
@@ -6,11 +6,13 @@ import jakarta.validation.constraints.NotBlank;
import jakarta.validation.constraints.NotNull;
import lombok.AllArgsConstructor;
import lombok.Data;
+import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;
@NoArgsConstructor
@AllArgsConstructor
@Data
+@EqualsAndHashCode(callSuper = false)
@Entity
@Table(name="admin")
public class Admin extends BaseEntity {
diff --git a/SpringBootProject/src/main/java/fr/iut/sciencequest/sae/entities/Difficulte.java b/SpringBootProject/src/main/java/fr/iut/sciencequest/sae/entities/Difficulte.java
index fd8423b..dfb62c7 100644
--- a/SpringBootProject/src/main/java/fr/iut/sciencequest/sae/entities/Difficulte.java
+++ b/SpringBootProject/src/main/java/fr/iut/sciencequest/sae/entities/Difficulte.java
@@ -5,12 +5,15 @@ import jakarta.validation.constraints.NotBlank;
import jakarta.validation.constraints.NotNull;
import lombok.AllArgsConstructor;
import lombok.Data;
+import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;
+import org.modelmapper.internal.bytebuddy.implementation.bind.annotation.Super;
@NoArgsConstructor
@AllArgsConstructor
@Data
+@EqualsAndHashCode(callSuper = false)
@Entity
@Table(name="difficulte")
public class Difficulte extends BaseEntity {
diff --git a/SpringBootProject/src/main/java/fr/iut/sciencequest/sae/entities/IToProjection.java b/SpringBootProject/src/main/java/fr/iut/sciencequest/sae/entities/IToProjection.java
index 7e7f453..6ca06fe 100644
--- a/SpringBootProject/src/main/java/fr/iut/sciencequest/sae/entities/IToProjection.java
+++ b/SpringBootProject/src/main/java/fr/iut/sciencequest/sae/entities/IToProjection.java
@@ -1,5 +1,5 @@
package fr.iut.sciencequest.sae.entities;
public interface IToProjection {
- public T toProjection(Class projectionType);
+ T toProjection(Class projectionType);
}
diff --git a/SpringBootProject/src/main/java/fr/iut/sciencequest/sae/entities/Invite.java b/SpringBootProject/src/main/java/fr/iut/sciencequest/sae/entities/Invite.java
index cea5436..5bb7fa1 100644
--- a/SpringBootProject/src/main/java/fr/iut/sciencequest/sae/entities/Invite.java
+++ b/SpringBootProject/src/main/java/fr/iut/sciencequest/sae/entities/Invite.java
@@ -1,6 +1,7 @@
package fr.iut.sciencequest.sae.entities;
+import fr.iut.sciencequest.sae.entities.joueur.Joueur;
import jakarta.persistence.*;
import lombok.AllArgsConstructor;
import lombok.Data;
@@ -11,5 +12,6 @@ import lombok.EqualsAndHashCode;
@Data
@Entity
@Table(name = "invite")
+@PrimaryKeyJoinColumn(name = "idjoueur")
public class Invite extends Joueur {
}
diff --git a/SpringBootProject/src/main/java/fr/iut/sciencequest/sae/entities/Jeu.java b/SpringBootProject/src/main/java/fr/iut/sciencequest/sae/entities/Jeu.java
index feb6515..2d96ad3 100644
--- a/SpringBootProject/src/main/java/fr/iut/sciencequest/sae/entities/Jeu.java
+++ b/SpringBootProject/src/main/java/fr/iut/sciencequest/sae/entities/Jeu.java
@@ -6,24 +6,26 @@ import jakarta.validation.constraints.NotBlank;
import jakarta.validation.constraints.NotNull;
import lombok.AllArgsConstructor;
import lombok.Data;
+import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;
@NoArgsConstructor
@AllArgsConstructor
@Data
+@EqualsAndHashCode(callSuper = false)
@Entity
@Table(name="jeu")
public class Jeu extends BaseEntity {
@Id
- @NotNull
+ //@NotNull
@GeneratedValue(strategy = GenerationType.IDENTITY)
private int id;
- @NotBlank
+ //@NotBlank
@Column(unique = true)
private String nom;
@Column(name = "nbrparties")
- @Min(0)
+ //@Min(0)
private int nbrParties = 0;
}
diff --git a/SpringBootProject/src/main/java/fr/iut/sciencequest/sae/entities/Partie.java b/SpringBootProject/src/main/java/fr/iut/sciencequest/sae/entities/Partie.java
index dcfd678..6546dbf 100644
--- a/SpringBootProject/src/main/java/fr/iut/sciencequest/sae/entities/Partie.java
+++ b/SpringBootProject/src/main/java/fr/iut/sciencequest/sae/entities/Partie.java
@@ -1,11 +1,18 @@
package fr.iut.sciencequest.sae.entities;
+import fr.iut.sciencequest.sae.entities.joueur.Joueur;
import jakarta.persistence.*;
import jakarta.validation.constraints.NotNull;
import lombok.AllArgsConstructor;
import lombok.Data;
+import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;
+import org.hibernate.annotations.Fetch;
+import org.hibernate.annotations.FetchMode;
+import java.util.List;
+
+@EqualsAndHashCode(callSuper = true)
@AllArgsConstructor
@NoArgsConstructor
@Data
@@ -13,21 +20,18 @@ import lombok.NoArgsConstructor;
@Table(name="partie")
public class Partie extends BaseEntity {
@Id
- @NotNull
@GeneratedValue(strategy = GenerationType.IDENTITY)
private int id;
@Column(name = "codeinvitation", unique = true)
private String codeInvitation;
- /*private Jeu jeu;
- @Getter() private Set joueurs;
- public boolean add(Joueur joueur){
- return this.joueurs.add(joueur);
- }
-
- public boolean remove(Joueur joueur){
- return this.joueurs.remove(joueur);
- }
- */
+ @OneToMany(mappedBy = "id")
+ @Fetch(FetchMode.JOIN) // Sinon crash (Could not write JSON: failed to lazily initialize a collection of role)
+ private List joueurs;
+
+ @NotNull
+ @ManyToOne
+ @JoinColumn(name="idjeu")
+ private Jeu jeu;
}
diff --git a/SpringBootProject/src/main/java/fr/iut/sciencequest/sae/entities/Question.java b/SpringBootProject/src/main/java/fr/iut/sciencequest/sae/entities/Question.java
index b39fd0c..c9cd02e 100644
--- a/SpringBootProject/src/main/java/fr/iut/sciencequest/sae/entities/Question.java
+++ b/SpringBootProject/src/main/java/fr/iut/sciencequest/sae/entities/Question.java
@@ -4,6 +4,7 @@ import jakarta.validation.constraints.NotEmpty;
import jakarta.validation.constraints.NotNull;
import lombok.AllArgsConstructor;
import lombok.Data;
+import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;
import org.hibernate.annotations.Fetch;
import org.hibernate.annotations.FetchMode;
@@ -14,16 +15,15 @@ import java.util.List;
@AllArgsConstructor
@NoArgsConstructor
@Data
+@EqualsAndHashCode(callSuper = false)
@Entity
@Table(name="question")
public class Question extends BaseEntity {
@Id
- @NotNull
@GeneratedValue(strategy = GenerationType.IDENTITY)
private int id;
private String question;
- @NotEmpty
@OneToMany(mappedBy = "id")
@Fetch(FetchMode.JOIN) // Sinon crash (Could not write JSON: failed to lazily initialize a collection of role)
private List reponses;
diff --git a/SpringBootProject/src/main/java/fr/iut/sciencequest/sae/entities/Reponse.java b/SpringBootProject/src/main/java/fr/iut/sciencequest/sae/entities/Reponse.java
index 3b9dff9..640b4b7 100644
--- a/SpringBootProject/src/main/java/fr/iut/sciencequest/sae/entities/Reponse.java
+++ b/SpringBootProject/src/main/java/fr/iut/sciencequest/sae/entities/Reponse.java
@@ -4,11 +4,13 @@ import jakarta.persistence.*;
import jakarta.validation.constraints.NotNull;
import lombok.AllArgsConstructor;
import lombok.Data;
+import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;
@AllArgsConstructor
@NoArgsConstructor
@Data
+@EqualsAndHashCode(callSuper = false)
@Entity
@Table(name="reponse")
public class Reponse extends BaseEntity {
diff --git a/SpringBootProject/src/main/java/fr/iut/sciencequest/sae/entities/Thematique.java b/SpringBootProject/src/main/java/fr/iut/sciencequest/sae/entities/Thematique.java
index ab29139..749c9a0 100644
--- a/SpringBootProject/src/main/java/fr/iut/sciencequest/sae/entities/Thematique.java
+++ b/SpringBootProject/src/main/java/fr/iut/sciencequest/sae/entities/Thematique.java
@@ -5,12 +5,14 @@ import jakarta.persistence.*;
import jakarta.validation.constraints.NotBlank;
import lombok.AllArgsConstructor;
import lombok.Data;
+import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;
@NoArgsConstructor
@AllArgsConstructor
@Data
+@EqualsAndHashCode(callSuper = false)
@Entity
@Table(name="thematique")
public class Thematique extends BaseEntity {
diff --git a/SpringBootProject/src/main/java/fr/iut/sciencequest/sae/entities/Utilisateur.java b/SpringBootProject/src/main/java/fr/iut/sciencequest/sae/entities/Utilisateur.java
index 21466aa..04bfa80 100644
--- a/SpringBootProject/src/main/java/fr/iut/sciencequest/sae/entities/Utilisateur.java
+++ b/SpringBootProject/src/main/java/fr/iut/sciencequest/sae/entities/Utilisateur.java
@@ -1,6 +1,7 @@
package fr.iut.sciencequest.sae.entities;
+import fr.iut.sciencequest.sae.entities.joueur.Joueur;
import jakarta.persistence.*;
import jakarta.validation.constraints.Email;
import jakarta.validation.constraints.NotBlank;
@@ -16,7 +17,8 @@ import lombok.NoArgsConstructor;
@Data
@Entity
@Table(name="utilisateur")
-public class Utilisateur extends Joueur{
+@PrimaryKeyJoinColumn(name = "idjoueur")
+public class Utilisateur extends Joueur {
@Email(message="Veuillez fournir une adresse mail valide")
@NotNull
@Column(unique = true)
diff --git a/SpringBootProject/src/main/java/fr/iut/sciencequest/sae/entities/indice/Indice.java b/SpringBootProject/src/main/java/fr/iut/sciencequest/sae/entities/indice/Indice.java
index 4e81cbf..70f7a65 100644
--- a/SpringBootProject/src/main/java/fr/iut/sciencequest/sae/entities/indice/Indice.java
+++ b/SpringBootProject/src/main/java/fr/iut/sciencequest/sae/entities/indice/Indice.java
@@ -7,11 +7,13 @@ import jakarta.validation.constraints.NotBlank;
import jakarta.validation.constraints.NotNull;
import lombok.AllArgsConstructor;
import lombok.Data;
+import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;
@NoArgsConstructor
@AllArgsConstructor
@Data
+@EqualsAndHashCode(callSuper = false)
@Entity
@Table(name="indice")
public class Indice extends BaseEntity {
diff --git a/SpringBootProject/src/main/java/fr/iut/sciencequest/sae/entities/joueur/IIdAndPseudoOnlyProjection.java b/SpringBootProject/src/main/java/fr/iut/sciencequest/sae/entities/joueur/IIdAndPseudoOnlyProjection.java
new file mode 100644
index 0000000..f07117e
--- /dev/null
+++ b/SpringBootProject/src/main/java/fr/iut/sciencequest/sae/entities/joueur/IIdAndPseudoOnlyProjection.java
@@ -0,0 +1,6 @@
+package fr.iut.sciencequest.sae.entities.joueur;
+
+public interface IIdAndPseudoOnlyProjection {
+ int getId();
+ String getPseudo();
+}
diff --git a/SpringBootProject/src/main/java/fr/iut/sciencequest/sae/entities/Joueur.java b/SpringBootProject/src/main/java/fr/iut/sciencequest/sae/entities/joueur/Joueur.java
similarity index 64%
rename from SpringBootProject/src/main/java/fr/iut/sciencequest/sae/entities/Joueur.java
rename to SpringBootProject/src/main/java/fr/iut/sciencequest/sae/entities/joueur/Joueur.java
index 7d9c767..c1dc1c9 100644
--- a/SpringBootProject/src/main/java/fr/iut/sciencequest/sae/entities/Joueur.java
+++ b/SpringBootProject/src/main/java/fr/iut/sciencequest/sae/entities/joueur/Joueur.java
@@ -1,26 +1,31 @@
-package fr.iut.sciencequest.sae.entities;
+package fr.iut.sciencequest.sae.entities.joueur;
+import fr.iut.sciencequest.sae.entities.BaseEntity;
+import fr.iut.sciencequest.sae.entities.Partie;
import jakarta.persistence.*;
import jakarta.validation.constraints.NotBlank;
import jakarta.validation.constraints.NotNull;
import lombok.AllArgsConstructor;
import lombok.Data;
+import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;
@AllArgsConstructor
@NoArgsConstructor
@Data
+@EqualsAndHashCode(callSuper = false)
@Inheritance ( strategy = InheritanceType.JOINED)
@Entity
@Table(name="joueur")
public abstract class Joueur extends BaseEntity {
@Id
- @NotNull
@GeneratedValue(strategy = GenerationType.IDENTITY)
private int id;
- @NotBlank
@Column(unique = true)
private String pseudo;
- //private Partie partie;
+
+ @ManyToOne
+ @JoinColumn(name="idpartie")
+ private Partie partie;
}
diff --git a/SpringBootProject/src/main/java/fr/iut/sciencequest/sae/entities/scientifique/Scientifique.java b/SpringBootProject/src/main/java/fr/iut/sciencequest/sae/entities/scientifique/Scientifique.java
index 1e130af..a66fbc1 100644
--- a/SpringBootProject/src/main/java/fr/iut/sciencequest/sae/entities/scientifique/Scientifique.java
+++ b/SpringBootProject/src/main/java/fr/iut/sciencequest/sae/entities/scientifique/Scientifique.java
@@ -10,8 +10,8 @@ import jakarta.validation.constraints.NotNull;
import jakarta.validation.constraints.Size;
import lombok.AllArgsConstructor;
import lombok.Data;
+import lombok.EqualsAndHashCode;
import lombok.RequiredArgsConstructor;
-import org.hibernate.annotations.Type;
import org.hibernate.validator.constraints.URL;
import org.springframework.hateoas.server.core.Relation;
@@ -21,46 +21,37 @@ import java.util.Date;
@RequiredArgsConstructor
@Relation(collectionRelation = "scientifiques", itemRelation = "scientifique")
@Data
+@EqualsAndHashCode(callSuper = false)
@Entity
@Table(name = "scientifique")
public class Scientifique extends BaseEntity {
@Id
- @NotNull
@GeneratedValue(strategy = GenerationType.IDENTITY)
private int id;
- @NotNull
@ManyToOne
@JoinColumn(name="iddifficulte")
private Difficulte difficulte;
- @NotNull
@ManyToOne
@JoinColumn(name="idthematique")
private Thematique thematique;
- @URL
@Column(name = "photo")
private String pathToPhoto;
- @NotBlank
private String nom;
- @NotBlank
private String prenom;
- @NotBlank
private String descriptif;
- @NotBlank
@Column(name = "datenaissance")
private Date dateNaissance;
- @NotBlank
@Enumerated(EnumType.STRING)
private Sexe sexe;
@Column(name = "ratiotrouvee")
- @Size(min=0, max=1)
private double ratioTrouve = 0.0;
}
diff --git a/SpringBootProject/src/main/java/fr/iut/sciencequest/sae/repositories/IndiceRepository.java b/SpringBootProject/src/main/java/fr/iut/sciencequest/sae/repositories/IndiceRepository.java
index 1fc0109..08569c3 100644
--- a/SpringBootProject/src/main/java/fr/iut/sciencequest/sae/repositories/IndiceRepository.java
+++ b/SpringBootProject/src/main/java/fr/iut/sciencequest/sae/repositories/IndiceRepository.java
@@ -5,8 +5,6 @@ import org.springframework.data.repository.CrudRepository;
import org.springframework.data.repository.PagingAndSortingRepository;
import org.springframework.stereotype.Repository;
-import java.util.Optional;
-
@Repository
public interface IndiceRepository extends PagingAndSortingRepository, CrudRepository {
Iterable findByScientifiqueId(int id, Class type);
diff --git a/SpringBootProject/src/main/java/fr/iut/sciencequest/sae/repositories/JoueurRepository.java b/SpringBootProject/src/main/java/fr/iut/sciencequest/sae/repositories/JoueurRepository.java
index 61ae108..e9b7066 100644
--- a/SpringBootProject/src/main/java/fr/iut/sciencequest/sae/repositories/JoueurRepository.java
+++ b/SpringBootProject/src/main/java/fr/iut/sciencequest/sae/repositories/JoueurRepository.java
@@ -1,6 +1,6 @@
package fr.iut.sciencequest.sae.repositories;
-import fr.iut.sciencequest.sae.entities.Joueur;
+import fr.iut.sciencequest.sae.entities.joueur.Joueur;
import org.springframework.data.repository.CrudRepository;
import org.springframework.stereotype.Repository;
diff --git a/SpringBootProject/src/main/java/fr/iut/sciencequest/sae/repositories/QuestionRepository.java b/SpringBootProject/src/main/java/fr/iut/sciencequest/sae/repositories/QuestionRepository.java
index cfc050c..42cfeb3 100644
--- a/SpringBootProject/src/main/java/fr/iut/sciencequest/sae/repositories/QuestionRepository.java
+++ b/SpringBootProject/src/main/java/fr/iut/sciencequest/sae/repositories/QuestionRepository.java
@@ -1,11 +1,7 @@
package fr.iut.sciencequest.sae.repositories;
import fr.iut.sciencequest.sae.entities.Question;
-import org.springframework.data.domain.PageRequest;
-import org.springframework.data.domain.Pageable;
import org.springframework.data.jpa.repository.JpaRepository;
-import org.springframework.data.repository.CrudRepository;
-import org.springframework.data.repository.PagingAndSortingRepository;
import org.springframework.stereotype.Repository;
@Repository
diff --git a/SpringBootProject/src/main/java/fr/iut/sciencequest/sae/repositories/ThematiqueRepository.java b/SpringBootProject/src/main/java/fr/iut/sciencequest/sae/repositories/ThematiqueRepository.java
index 2fcc101..6695693 100644
--- a/SpringBootProject/src/main/java/fr/iut/sciencequest/sae/repositories/ThematiqueRepository.java
+++ b/SpringBootProject/src/main/java/fr/iut/sciencequest/sae/repositories/ThematiqueRepository.java
@@ -7,5 +7,5 @@ import org.springframework.stereotype.Repository;
@Repository
public interface ThematiqueRepository extends CrudRepository {
- public boolean existsByLibelle(String libelle);
+ boolean existsByLibelle(String libelle);
}
diff --git a/SpringBootProject/src/main/java/fr/iut/sciencequest/sae/services/PartieService.java b/SpringBootProject/src/main/java/fr/iut/sciencequest/sae/services/PartieService.java
index e81e762..b7e7e1b 100644
--- a/SpringBootProject/src/main/java/fr/iut/sciencequest/sae/services/PartieService.java
+++ b/SpringBootProject/src/main/java/fr/iut/sciencequest/sae/services/PartieService.java
@@ -1,4 +1,25 @@
package fr.iut.sciencequest.sae.services;
-public class PartieService {
+import fr.iut.sciencequest.sae.entities.Partie;
+import fr.iut.sciencequest.sae.exceptions.notFound.PartieNotFoundException;
+import fr.iut.sciencequest.sae.repositories.PartieRepository;
+import fr.iut.sciencequest.sae.services.interfaces.IPartieService;
+import lombok.AllArgsConstructor;
+import org.springframework.stereotype.Service;
+
+import java.util.Optional;
+
+@AllArgsConstructor
+@Service
+public class PartieService implements IPartieService {
+ private final PartieRepository partieRepository;
+
+ public Partie findById(int id) {
+ return this.partieRepository.findById(id).orElseThrow(() ->
+ new PartieNotFoundException("Partie", id)
+ );
+ }
+ public Partie save(Partie p) {
+ return new Partie();
+ }
}
diff --git a/SpringBootProject/src/main/java/fr/iut/sciencequest/sae/services/QuestionService.java b/SpringBootProject/src/main/java/fr/iut/sciencequest/sae/services/QuestionService.java
index 455ccbb..db31cec 100644
--- a/SpringBootProject/src/main/java/fr/iut/sciencequest/sae/services/QuestionService.java
+++ b/SpringBootProject/src/main/java/fr/iut/sciencequest/sae/services/QuestionService.java
@@ -4,13 +4,11 @@ import fr.iut.sciencequest.sae.entities.Question;
import fr.iut.sciencequest.sae.repositories.QuestionRepository;
import fr.iut.sciencequest.sae.services.interfaces.IQuestionService;
import org.springframework.data.domain.Page;
-import org.springframework.data.domain.PageRequest;
import org.springframework.data.domain.Pageable;
import org.springframework.stereotype.Service;
@Service
public class QuestionService implements IQuestionService {
- private static final int PAGE_SIZE = 1;
private final QuestionRepository questionRepository;
public QuestionService(QuestionRepository questionRepository) {
diff --git a/SpringBootProject/src/main/java/fr/iut/sciencequest/sae/services/ScientifiqueService.java b/SpringBootProject/src/main/java/fr/iut/sciencequest/sae/services/ScientifiqueService.java
index d2e15f0..8a79fb2 100644
--- a/SpringBootProject/src/main/java/fr/iut/sciencequest/sae/services/ScientifiqueService.java
+++ b/SpringBootProject/src/main/java/fr/iut/sciencequest/sae/services/ScientifiqueService.java
@@ -10,8 +10,6 @@ import org.springframework.data.domain.PageRequest;
import org.springframework.data.domain.Pageable;
import org.springframework.stereotype.Service;
-import static org.springframework.hateoas.server.mvc.WebMvcLinkBuilder.linkTo;
-
@Service
public class ScientifiqueService implements IScientifiqueService {
@@ -36,9 +34,8 @@ public class ScientifiqueService implements IScientifiqueService {
}
@Override
- public Page findAll(Integer page) {
- Pageable paging = PageRequest.of(page, PAGE_SIZE);
- return scientifiqueRepository.findAll(paging);
+ public Page findAll(Pageable page) {
+ return scientifiqueRepository.findAll(page);
}
@Override
diff --git a/SpringBootProject/src/main/java/fr/iut/sciencequest/sae/services/interfaces/IPartieService.java b/SpringBootProject/src/main/java/fr/iut/sciencequest/sae/services/interfaces/IPartieService.java
index 3655490..50897a1 100644
--- a/SpringBootProject/src/main/java/fr/iut/sciencequest/sae/services/interfaces/IPartieService.java
+++ b/SpringBootProject/src/main/java/fr/iut/sciencequest/sae/services/interfaces/IPartieService.java
@@ -1,5 +1,8 @@
package fr.iut.sciencequest.sae.services.interfaces;
-public class IPartieService {
+import fr.iut.sciencequest.sae.entities.Partie;
+public interface IPartieService {
+ Partie findById(int id);
+ Partie save(Partie p);
}
diff --git a/SpringBootProject/src/main/java/fr/iut/sciencequest/sae/services/interfaces/IScientifiqueService.java b/SpringBootProject/src/main/java/fr/iut/sciencequest/sae/services/interfaces/IScientifiqueService.java
index 7cdc0f9..8d96590 100644
--- a/SpringBootProject/src/main/java/fr/iut/sciencequest/sae/services/interfaces/IScientifiqueService.java
+++ b/SpringBootProject/src/main/java/fr/iut/sciencequest/sae/services/interfaces/IScientifiqueService.java
@@ -3,13 +3,14 @@ package fr.iut.sciencequest.sae.services.interfaces;
import fr.iut.sciencequest.sae.entities.scientifique.Scientifique;
import fr.iut.sciencequest.sae.entities.indice.IIndiceidAndLibelleAndScientifiqueIdOnlyProjection;
import org.springframework.data.domain.Page;
+import org.springframework.data.domain.Pageable;
public interface IScientifiqueService {
Scientifique update(Scientifique scientifique);
Scientifique create(Scientifique scientifique);
- Page findAll(Integer page);
+ Page findAll(Pageable page);
Scientifique findById(int id);
diff --git a/SpringBootProject/src/main/resources/schema.sql b/SpringBootProject/src/main/resources/schema.sql
index 02345c8..b5a3de4 100644
--- a/SpringBootProject/src/main/resources/schema.sql
+++ b/SpringBootProject/src/main/resources/schema.sql
@@ -94,7 +94,7 @@ CREATE TABLE Jeu(
CREATE TABLE Partie(
id SERIAL PRIMARY KEY,
- codeInvitation varchar(10) NOT NULL UNIQUE,
+ codeInvitation varchar(5) NOT NULL UNIQUE,
idJeu integer REFERENCES Jeu(id)
);
@@ -166,11 +166,16 @@ VALUES
('Sophie Germain', 3, 3);
-- Utilisateurs
-INSERT INTO Joueur(id,pseudo) VALUES (1337, 'moi, le meilleur joueur du monde');
-INSERT INTO Utilisateur(idJoueur,email,password) VALUES (1337, 'joueur','$2y$10$juGnlWC9cS19popEKLZsYeir0Jl39k6hDl0dpaCix00FDcdiEbtmS');
+INSERT INTO Joueur(pseudo) VALUES ('moi, le meilleur joueur du monde'); --id = 1
+INSERT INTO Utilisateur(idJoueur,email,password) VALUES (1, 'joueur','$2y$10$juGnlWC9cS19popEKLZsYeir0Jl39k6hDl0dpaCix00FDcdiEbtmS');
-- mdp = test
-INSERT INTO decouvrir(idUtilisateur,idScientifique) VALUES (1337,1);
+-- Découvrir
+INSERT INTO decouvrir(idUtilisateur,idScientifique) VALUES (1,1);
+-- Admin
INSERT INTO Admin(id,email,password) VALUES (1, 'admin','$2y$10$juGnlWC9cS19popEKLZsYeir0Jl39k6hDl0dpaCix00FDcdiEbtmS');
-- mdp = test
+
+-- Partie
+INSERT INTO Partie(codeInvitation, idJeu) VALUES ('abcde', 1);
\ No newline at end of file