From 4994b319e3af5bd3d9c0b169a3d9cc58e8572416 Mon Sep 17 00:00:00 2001 From: Alix JEUDI--LEMOINE Date: Thu, 29 Feb 2024 18:04:13 +0100 Subject: [PATCH] Ajout pagination + DTO sur Difficulte --- .../assemblers/DifficulteModelAssembler.java | 23 +++++++++++++++++++ .../sae/controllers/DifficulteController.java | 23 +++++++++++++------ .../repositories/DifficulteRepository.java | 3 ++- .../sae/services/DifficulteService.java | 6 +++-- .../interfaces/IDifficulteService.java | 4 +++- 5 files changed, 48 insertions(+), 11 deletions(-) create mode 100644 SpringBootProject/src/main/java/fr/iut/sciencequest/sae/assemblers/DifficulteModelAssembler.java diff --git a/SpringBootProject/src/main/java/fr/iut/sciencequest/sae/assemblers/DifficulteModelAssembler.java b/SpringBootProject/src/main/java/fr/iut/sciencequest/sae/assemblers/DifficulteModelAssembler.java new file mode 100644 index 0000000..edcff45 --- /dev/null +++ b/SpringBootProject/src/main/java/fr/iut/sciencequest/sae/assemblers/DifficulteModelAssembler.java @@ -0,0 +1,23 @@ +package fr.iut.sciencequest.sae.assemblers; + +import fr.iut.sciencequest.sae.dto.DifficulteDTO; +import fr.iut.sciencequest.sae.entities.Difficulte; +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 DifficulteModelAssembler extends RepresentationModelAssemblerSupport { + public DifficulteModelAssembler() { + super(Difficulte.class, DifficulteDTO.class); + } + + @Override + @NonNull + public DifficulteDTO toModel(@Nullable Difficulte entity) { + ModelMapper mapper = new ModelMapper(); + return mapper.map(entity, DifficulteDTO.class); + } +} 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 27bd7a4..15901b6 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 @@ -1,9 +1,17 @@ package fr.iut.sciencequest.sae.controllers; +import fr.iut.sciencequest.sae.ApplicationConfig; +import fr.iut.sciencequest.sae.assemblers.DifficulteModelAssembler; +import fr.iut.sciencequest.sae.dto.DifficulteDTO; import fr.iut.sciencequest.sae.entities.Difficulte; import fr.iut.sciencequest.sae.services.DifficulteService; -import org.springframework.hateoas.CollectionModel; +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.HttpStatus; import org.springframework.http.MediaType; import org.springframework.web.bind.annotation.GetMapping; @@ -13,17 +21,18 @@ import org.springframework.web.bind.annotation.RestController; @RestController +@AllArgsConstructor @RequestMapping("/api/v1/difficultes") public class DifficulteController extends Controller { + private final DifficulteModelAssembler difficulteModelAssembler; + @SuppressWarnings("SpringJavaInjectionPointsAutowiringInspection") + private final PagedResourcesAssembler pagedResourcesAssembler; public final DifficulteService difficulteService; - public DifficulteController(DifficulteService difficulteService){ - this.difficulteService = difficulteService; - } - @GetMapping(produces = MediaType.APPLICATION_JSON_VALUE) @ResponseStatus(HttpStatus.OK) - public CollectionModel getAllDifficultes() { - return getSelfLinkCollectionModel(this.difficulteService.findAll(), "getAllDifficultes"); + public PagedModel getAllDifficultes(@PageableDefault(size = ApplicationConfig.DEFAULT_PAGEABLE_SIZE) Pageable p) { + Page difficultePage = this.difficulteService.findAll(p); + return pagedResourcesAssembler.toModel(difficultePage, difficulteModelAssembler); } } diff --git a/SpringBootProject/src/main/java/fr/iut/sciencequest/sae/repositories/DifficulteRepository.java b/SpringBootProject/src/main/java/fr/iut/sciencequest/sae/repositories/DifficulteRepository.java index c3a49ec..e4834ad 100644 --- a/SpringBootProject/src/main/java/fr/iut/sciencequest/sae/repositories/DifficulteRepository.java +++ b/SpringBootProject/src/main/java/fr/iut/sciencequest/sae/repositories/DifficulteRepository.java @@ -1,8 +1,9 @@ package fr.iut.sciencequest.sae.repositories; import fr.iut.sciencequest.sae.entities.Difficulte; +import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.data.repository.CrudRepository; import org.springframework.stereotype.Repository; @Repository -public interface DifficulteRepository extends CrudRepository {} \ No newline at end of file +public interface DifficulteRepository extends JpaRepository {} \ No newline at end of file diff --git a/SpringBootProject/src/main/java/fr/iut/sciencequest/sae/services/DifficulteService.java b/SpringBootProject/src/main/java/fr/iut/sciencequest/sae/services/DifficulteService.java index f9d46cc..bc49d52 100644 --- a/SpringBootProject/src/main/java/fr/iut/sciencequest/sae/services/DifficulteService.java +++ b/SpringBootProject/src/main/java/fr/iut/sciencequest/sae/services/DifficulteService.java @@ -3,6 +3,8 @@ package fr.iut.sciencequest.sae.services; import fr.iut.sciencequest.sae.entities.Difficulte; import fr.iut.sciencequest.sae.repositories.DifficulteRepository; import fr.iut.sciencequest.sae.services.interfaces.IDifficulteService; +import org.springframework.data.domain.Page; +import org.springframework.data.domain.Pageable; import org.springframework.stereotype.Service; @Service @@ -14,7 +16,7 @@ public class DifficulteService implements IDifficulteService { } @Override - public Iterable findAll(){ - return this.difficulteRepository.findAll(); + public Page findAll(Pageable p){ + return this.difficulteRepository.findAll(p); } } diff --git a/SpringBootProject/src/main/java/fr/iut/sciencequest/sae/services/interfaces/IDifficulteService.java b/SpringBootProject/src/main/java/fr/iut/sciencequest/sae/services/interfaces/IDifficulteService.java index 2d0a7f4..5a08cea 100644 --- a/SpringBootProject/src/main/java/fr/iut/sciencequest/sae/services/interfaces/IDifficulteService.java +++ b/SpringBootProject/src/main/java/fr/iut/sciencequest/sae/services/interfaces/IDifficulteService.java @@ -1,7 +1,9 @@ package fr.iut.sciencequest.sae.services.interfaces; import fr.iut.sciencequest.sae.entities.Difficulte; +import org.springframework.data.domain.Page; +import org.springframework.data.domain.Pageable; public interface IDifficulteService { - Iterable findAll(); + Page findAll(Pageable p); }