From b8096f11b23552e26e2cd4d65f982c3f88928f5a Mon Sep 17 00:00:00 2001 From: Dominika Zemanovicova <xzemanov@fi.muni.cz> Date: Sun, 16 Apr 2023 06:30:19 +0200 Subject: [PATCH] Change Result to Page for paging --- .../java/org/fuseri/model/dto/common/Result.java | 16 ---------------- .../common/DomainMapper.java | 14 ++++---------- .../user/UserController.java | 8 ++++---- .../modulelanguageschool/user/UserFacade.java | 9 ++++++--- 4 files changed, 14 insertions(+), 33 deletions(-) delete mode 100644 application/model/src/main/java/org/fuseri/model/dto/common/Result.java diff --git a/application/model/src/main/java/org/fuseri/model/dto/common/Result.java b/application/model/src/main/java/org/fuseri/model/dto/common/Result.java deleted file mode 100644 index c75e421e..00000000 --- a/application/model/src/main/java/org/fuseri/model/dto/common/Result.java +++ /dev/null @@ -1,16 +0,0 @@ -package org.fuseri.model.dto.common; - -import lombok.Getter; -import lombok.Setter; - -import java.util.List; - -@Getter -@Setter -public class Result<T extends DomainObjectDto> { - - private long total; - private int page; - private int pageSize; - private List<T> items; -} diff --git a/application/module-language-school/src/main/java/org/fuseri/modulelanguageschool/common/DomainMapper.java b/application/module-language-school/src/main/java/org/fuseri/modulelanguageschool/common/DomainMapper.java index dfc4a7f1..e80dbdb1 100644 --- a/application/module-language-school/src/main/java/org/fuseri/modulelanguageschool/common/DomainMapper.java +++ b/application/module-language-school/src/main/java/org/fuseri/modulelanguageschool/common/DomainMapper.java @@ -1,9 +1,7 @@ package org.fuseri.modulelanguageschool.common; import org.fuseri.model.dto.common.DomainObjectDto; -import org.fuseri.model.dto.common.Result; -import org.mapstruct.Mapping; -import org.mapstruct.Mappings; import org.springframework.data.domain.Page; +import org.springframework.data.domain.PageImpl; import java.util.List; @@ -15,11 +13,7 @@ public interface DomainMapper<T extends DomainObject, S extends DomainObjectDto> List<S> toDtoList(List<T> entities); - @Mappings({ - @Mapping(target = "total", expression = "java(source.getTotalElements())"), - @Mapping(target = "page", expression = "java(source.getNumber())"), - @Mapping(target = "pageSize", expression = "java(source.getSize())"), - @Mapping(target = "items", expression = "java(toDtoList(source.getContent()))") - }) - Result<S> toResult(Page<T> source); + default Page<S> toDtoPage(Page<T> entities) { + return new PageImpl<>(toDtoList(entities.getContent()), entities.getPageable(), entities.getTotalPages()); + } } diff --git a/application/module-language-school/src/main/java/org/fuseri/modulelanguageschool/user/UserController.java b/application/module-language-school/src/main/java/org/fuseri/modulelanguageschool/user/UserController.java index 14fa089d..eb7487a6 100644 --- a/application/module-language-school/src/main/java/org/fuseri/modulelanguageschool/user/UserController.java +++ b/application/module-language-school/src/main/java/org/fuseri/modulelanguageschool/user/UserController.java @@ -9,13 +9,13 @@ import jakarta.persistence.EntityNotFoundException; import jakarta.validation.Valid; import jakarta.validation.constraints.NotNull; import jakarta.validation.constraints.PositiveOrZero; -import org.fuseri.model.dto.common.Result; import org.fuseri.model.dto.course.CourseDto; import org.fuseri.model.dto.user.UserAddLanguageDto; import org.fuseri.model.dto.user.UserCreateDto; import org.fuseri.model.dto.user.UserDto; import org.fuseri.model.dto.user.UserLoginDto; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.data.domain.Page; import org.springframework.http.HttpStatus; import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.*; @@ -91,8 +91,9 @@ public class UserController { @ApiResponse(responseCode = "400", description = "Invalid page number supplied"), }) @GetMapping - public ResponseEntity<Result<UserDto>> findAll(@PositiveOrZero @RequestParam int page) { - return ResponseEntity.ok(facade.findAll(page)); + public ResponseEntity<Page<UserDto>> findAll(@PositiveOrZero @NotNull @RequestParam int page) { + var a = facade.findAll(page); + return ResponseEntity.ok(a); } //TODO: add authentication M3? @@ -107,7 +108,6 @@ public class UserController { return ResponseEntity.ok("user has logged out"); } - @Operation(summary = "get finished courses", description = "retrieves finished courses of user with given Id") @ApiResponses(value = { @ApiResponse(responseCode = "200", description = "Successfully retrieved finished courses"), diff --git a/application/module-language-school/src/main/java/org/fuseri/modulelanguageschool/user/UserFacade.java b/application/module-language-school/src/main/java/org/fuseri/modulelanguageschool/user/UserFacade.java index 43021ba0..0aa246f2 100644 --- a/application/module-language-school/src/main/java/org/fuseri/modulelanguageschool/user/UserFacade.java +++ b/application/module-language-school/src/main/java/org/fuseri/modulelanguageschool/user/UserFacade.java @@ -1,14 +1,16 @@ package org.fuseri.modulelanguageschool.user; -import org.fuseri.model.dto.common.Result; import org.fuseri.model.dto.course.CourseDto; import org.fuseri.model.dto.user.UserAddLanguageDto; import org.fuseri.model.dto.user.UserCreateDto; import org.fuseri.model.dto.user.UserDto; +import org.fuseri.modulelanguageschool.common.DomainService; import org.fuseri.modulelanguageschool.course.CourseMapper; import org.fuseri.modulelanguageschool.course.Language; import org.fuseri.modulelanguageschool.course.ProficiencyLevel; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.data.domain.Page; +import org.springframework.data.domain.PageRequest; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -51,8 +53,9 @@ public class UserFacade { } - public Result<UserDto> findAll(int page) { - return mapper.toResult(service.findAll(page)); + public Page<UserDto> findAll(int page) { + PageRequest pageRequest = PageRequest.of(page, DomainService.DEFAULT_PAGE_SIZE); + return mapper.toDtoPage(service.findAll(pageRequest)); } public UserDto addLanguage(Long id, UserAddLanguageDto body) { -- GitLab