Ajout pagination + DTO sur Difficulte

Springboot
Alix JEUDI--LEMOINE 1 year ago
parent 14cdefe3ad
commit 4994b319e3

@ -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<Difficulte, DifficulteDTO> {
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);
}
}

@ -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<Difficulte> pagedResourcesAssembler;
public final DifficulteService difficulteService;
public DifficulteController(DifficulteService difficulteService){
this.difficulteService = difficulteService;
}
@GetMapping(produces = MediaType.APPLICATION_JSON_VALUE)
@ResponseStatus(HttpStatus.OK)
public CollectionModel<Difficulte> getAllDifficultes() {
return getSelfLinkCollectionModel(this.difficulteService.findAll(), "getAllDifficultes");
public PagedModel<DifficulteDTO> getAllDifficultes(@PageableDefault(size = ApplicationConfig.DEFAULT_PAGEABLE_SIZE) Pageable p) {
Page<Difficulte> difficultePage = this.difficulteService.findAll(p);
return pagedResourcesAssembler.toModel(difficultePage, difficulteModelAssembler);
}
}

@ -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<Difficulte, Integer> {}
public interface DifficulteRepository extends JpaRepository<Difficulte, Integer> {}

@ -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<Difficulte> findAll(){
return this.difficulteRepository.findAll();
public Page<Difficulte> findAll(Pageable p){
return this.difficulteRepository.findAll(p);
}
}

@ -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<Difficulte> findAll();
Page<Difficulte> findAll(Pageable p);
}

Loading…
Cancel
Save