From 393786679c93f65534f18ed2953f8ccfc067b786 Mon Sep 17 00:00:00 2001 From: evilimkova <evilimkova@onpointserv.com> Date: Tue, 4 Apr 2023 16:18:38 +0200 Subject: [PATCH] Ids from String to Long + findCertificateByUserId --- .../model/dto/certificate/CertificateDto.java | 2 +- .../dto/certificate/CertificateSimpleDto.java | 6 +++--- .../fuseri/model/dto/common/DomainObjectDto.java | 4 +--- .../org/fuseri/model/dto/course/CourseDto.java | 2 +- .../java/org/fuseri/model/dto/user/UserDto.java | 2 +- .../org/fuseri/modulecertificate/Certificate.java | 14 +++++++------- .../service/CertificateController.java | 4 ++-- .../service/CertificateFacade.java | 8 ++++++++ .../service/CertificateMapper.java | 5 +++-- .../service/CertificateRepository.java | 6 ++++++ .../service/CertificateService.java | 7 +++++++ .../CertificateControllerTests.java | 4 ++-- 12 files changed, 42 insertions(+), 22 deletions(-) diff --git a/application/model/src/main/java/org/fuseri/model/dto/certificate/CertificateDto.java b/application/model/src/main/java/org/fuseri/model/dto/certificate/CertificateDto.java index 52597af3..6d55d577 100644 --- a/application/model/src/main/java/org/fuseri/model/dto/certificate/CertificateDto.java +++ b/application/model/src/main/java/org/fuseri/model/dto/certificate/CertificateDto.java @@ -33,6 +33,6 @@ public class CertificateDto extends DomainObjectDto { private CertificateFileDto certificateFile; public CertificateDto() { - setId("0"); + setId(0L); } } diff --git a/application/model/src/main/java/org/fuseri/model/dto/certificate/CertificateSimpleDto.java b/application/model/src/main/java/org/fuseri/model/dto/certificate/CertificateSimpleDto.java index 883c0fda..52a9f8a5 100644 --- a/application/model/src/main/java/org/fuseri/model/dto/certificate/CertificateSimpleDto.java +++ b/application/model/src/main/java/org/fuseri/model/dto/certificate/CertificateSimpleDto.java @@ -18,13 +18,13 @@ import java.time.Instant; public class CertificateSimpleDto extends DomainObjectDto { @NotBlank @NotNull - private String userId; + private Long userId; @NotBlank @NotNull private Instant generatedAt; @NotBlank @NotNull - private String courseId; + private Long courseId; @NotBlank @NotNull private String certificateFile; @@ -32,7 +32,7 @@ public class CertificateSimpleDto extends DomainObjectDto { @NotNull private String certificateFileName; - public CertificateSimpleDto(String id, String userId, Instant generatedAt, String courseId, String certificateFile, String certificateFileName) { + public CertificateSimpleDto(Long id, Long userId, Instant generatedAt, Long courseId, String certificateFile, String certificateFileName) { this.setId(id); this.userId = userId; this.generatedAt = generatedAt; diff --git a/application/model/src/main/java/org/fuseri/model/dto/common/DomainObjectDto.java b/application/model/src/main/java/org/fuseri/model/dto/common/DomainObjectDto.java index 2c1aff83..7824c73c 100644 --- a/application/model/src/main/java/org/fuseri/model/dto/common/DomainObjectDto.java +++ b/application/model/src/main/java/org/fuseri/model/dto/common/DomainObjectDto.java @@ -1,6 +1,5 @@ package org.fuseri.model.dto.common; -import jakarta.validation.constraints.NotBlank; import jakarta.validation.constraints.NotNull; import lombok.Getter; import lombok.Setter; @@ -9,7 +8,6 @@ import lombok.Setter; @Setter public abstract class DomainObjectDto { - @NotBlank @NotNull - private String id; + private Long id; } diff --git a/application/model/src/main/java/org/fuseri/model/dto/course/CourseDto.java b/application/model/src/main/java/org/fuseri/model/dto/course/CourseDto.java index 544d06f5..ee346fa4 100644 --- a/application/model/src/main/java/org/fuseri/model/dto/course/CourseDto.java +++ b/application/model/src/main/java/org/fuseri/model/dto/course/CourseDto.java @@ -44,7 +44,7 @@ public class CourseDto extends DomainObjectDto { private List<String> studentIds; public CourseDto(String name, Integer capacity, LanguageTypeDto languageTypeDto, ProficiencyLevelDto proficiencyLevelDto) { - setId("0"); + setId(0L); this.name = name; this.capacity = capacity; this.languageTypeDto = languageTypeDto; diff --git a/application/model/src/main/java/org/fuseri/model/dto/user/UserDto.java b/application/model/src/main/java/org/fuseri/model/dto/user/UserDto.java index fce12aab..a4fb985f 100644 --- a/application/model/src/main/java/org/fuseri/model/dto/user/UserDto.java +++ b/application/model/src/main/java/org/fuseri/model/dto/user/UserDto.java @@ -21,7 +21,7 @@ public class UserDto extends DomainObjectDto { public UserDto(String username, String email, String firstName, String lastName, AddressDto address) { - setId("0"); + setId(0L); this.username = username; this.email = email; this.firstName = firstName; diff --git a/application/module-certificate/src/main/java/org/fuseri/modulecertificate/Certificate.java b/application/module-certificate/src/main/java/org/fuseri/modulecertificate/Certificate.java index cdefa730..3b9b0a94 100644 --- a/application/module-certificate/src/main/java/org/fuseri/modulecertificate/Certificate.java +++ b/application/module-certificate/src/main/java/org/fuseri/modulecertificate/Certificate.java @@ -15,12 +15,12 @@ public class Certificate implements Serializable { @Column(name = "id_certificate") private Long id; @Column(name = "id_user") - private String userId; + private Long userId; @Column(name = "generatedAt") @Temporal(TemporalType.TIMESTAMP) private Instant generatedAt; @Column(name = "id_course") - private String courseId; + private Long courseId; @Column(name = "certificate_file") private String certificateFile; @Column(name = "certificate_file_name") @@ -29,7 +29,7 @@ public class Certificate implements Serializable { public Certificate() { } - public Certificate(String userId, Instant generatedAt, String courseId, String certificateFile, String certificateFileName) { + public Certificate(Long userId, Instant generatedAt, Long courseId, String certificateFile, String certificateFileName) { this.userId = userId; this.generatedAt = generatedAt; this.courseId = courseId; @@ -41,11 +41,11 @@ public class Certificate implements Serializable { return id; } - public String getUserId() { + public Long getUserId() { return userId; } - public void setUserId(String userId) { + public void setUserId(Long userId) { this.userId = userId; } @@ -57,11 +57,11 @@ public class Certificate implements Serializable { this.generatedAt = generatedAt; } - public String getCourseId() { + public Long getCourseId() { return courseId; } - public void setCourseId(String courseId) { + public void setCourseId(Long courseId) { this.courseId = courseId; } diff --git a/application/module-certificate/src/main/java/org/fuseri/modulecertificate/service/CertificateController.java b/application/module-certificate/src/main/java/org/fuseri/modulecertificate/service/CertificateController.java index 173e7254..c31cd05a 100644 --- a/application/module-certificate/src/main/java/org/fuseri/modulecertificate/service/CertificateController.java +++ b/application/module-certificate/src/main/java/org/fuseri/modulecertificate/service/CertificateController.java @@ -57,8 +57,8 @@ public class CertificateController { * for specified User. */ @GetMapping("/findForUser") - public List<CertificateDto> findForUser(@RequestParam String userId) { - return List.of(new CertificateDto()); + public List<CertificateSimpleDto> findForUser(@RequestParam Long userId) { + return certificateFacade.findByUserId(userId); } /** diff --git a/application/module-certificate/src/main/java/org/fuseri/modulecertificate/service/CertificateFacade.java b/application/module-certificate/src/main/java/org/fuseri/modulecertificate/service/CertificateFacade.java index 719e2343..fe2084cc 100644 --- a/application/module-certificate/src/main/java/org/fuseri/modulecertificate/service/CertificateFacade.java +++ b/application/module-certificate/src/main/java/org/fuseri/modulecertificate/service/CertificateFacade.java @@ -11,6 +11,8 @@ import org.springframework.data.domain.Pageable; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import java.util.List; + @Service @Transactional public class CertificateFacade { @@ -34,6 +36,12 @@ public class CertificateFacade { public CertificateSimpleDto generate(CertificateCreateDto certificateCreateDto) { return certificateMapper.mapToSimpleDto(certificateService.save(certificateMapper.mapToCertificate(certificateCreateDto))); } + + @Cacheable(cacheNames = "certificates", key = "#userId") + @Transactional(readOnly = true) + public List<CertificateSimpleDto> findByUserId(Long userId) { + return certificateMapper.mapToList(certificateService.findByUserId(userId)); + } //@Transactional(readOnly = true) //public Page<CertificateDto> findAll(Pageable pageable) { //return certificateMapper.mapToPageDto(certificateService.findAll(pageable)); diff --git a/application/module-certificate/src/main/java/org/fuseri/modulecertificate/service/CertificateMapper.java b/application/module-certificate/src/main/java/org/fuseri/modulecertificate/service/CertificateMapper.java index 4ec2332e..024b8c09 100644 --- a/application/module-certificate/src/main/java/org/fuseri/modulecertificate/service/CertificateMapper.java +++ b/application/module-certificate/src/main/java/org/fuseri/modulecertificate/service/CertificateMapper.java @@ -1,6 +1,7 @@ package org.fuseri.modulecertificate.service; import org.fuseri.model.dto.certificate.CertificateCreateDto; +import org.fuseri.model.dto.certificate.CertificateDto; import org.fuseri.model.dto.certificate.CertificateSimpleDto; import org.fuseri.modulecertificate.Certificate; import org.mapstruct.Mapper; @@ -20,7 +21,7 @@ public interface CertificateMapper { } return new CertificateSimpleDto( - certificate.getId().toString(), + certificate.getId(), certificate.getUserId(), certificate.getGeneratedAt(), certificate.getCourseId(), @@ -41,7 +42,7 @@ public interface CertificateMapper { null); } - //List<CertificateDto> mapToList(List<Certificate> certificates); + List<CertificateSimpleDto> mapToList(List<Certificate> certificates); //default Page<CertificateDto> mapToPageDto(Page<Certificate> certificates) { //return new PageImpl<>(mapToList(certificates.getContent()), certificates.getPageable(), certificates.getTotalPages()); diff --git a/application/module-certificate/src/main/java/org/fuseri/modulecertificate/service/CertificateRepository.java b/application/module-certificate/src/main/java/org/fuseri/modulecertificate/service/CertificateRepository.java index c5f5444e..14c6fbd7 100644 --- a/application/module-certificate/src/main/java/org/fuseri/modulecertificate/service/CertificateRepository.java +++ b/application/module-certificate/src/main/java/org/fuseri/modulecertificate/service/CertificateRepository.java @@ -2,10 +2,16 @@ package org.fuseri.modulecertificate.service; import org.fuseri.modulecertificate.Certificate; import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.data.jpa.repository.Query; import org.springframework.stereotype.Repository; +import java.util.List; + @Repository public interface CertificateRepository extends JpaRepository<Certificate, Long> { + @Query("SELECT c FROM Certificate c WHERE c.userId = ?1") + List<Certificate> findCertificateByUserId(Long userId); } + diff --git a/application/module-certificate/src/main/java/org/fuseri/modulecertificate/service/CertificateService.java b/application/module-certificate/src/main/java/org/fuseri/modulecertificate/service/CertificateService.java index d5371de7..baf8828b 100644 --- a/application/module-certificate/src/main/java/org/fuseri/modulecertificate/service/CertificateService.java +++ b/application/module-certificate/src/main/java/org/fuseri/modulecertificate/service/CertificateService.java @@ -7,6 +7,8 @@ import org.springframework.data.domain.Pageable; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import java.util.List; + @Service public class CertificateService { @@ -23,6 +25,11 @@ public class CertificateService { .orElseThrow(() -> new ResourceNotFoundException("Certificate with id: " + id + " was not found.")); } + @Transactional(readOnly = true) + public List<Certificate> findByUserId(Long userId) { + return certificateRepository.findCertificateByUserId(userId); + } + @Transactional(readOnly = true) public Certificate save(Certificate certificate) { return certificateRepository.save(certificate); diff --git a/application/module-certificate/src/test/java/org/fuseri/modulecertificate/CertificateControllerTests.java b/application/module-certificate/src/test/java/org/fuseri/modulecertificate/CertificateControllerTests.java index 08ba4e44..75a08a33 100644 --- a/application/module-certificate/src/test/java/org/fuseri/modulecertificate/CertificateControllerTests.java +++ b/application/module-certificate/src/test/java/org/fuseri/modulecertificate/CertificateControllerTests.java @@ -72,9 +72,9 @@ class CertificateControllerTests { .contentType(MediaType.APPLICATION_JSON)) .andExpect(status().isOk()).andReturn().getResponse().getContentAsString(); - String id = objectMapper.readValue(response, CertificateDto.class).getId(); + Long id = objectMapper.readValue(response, CertificateDto.class).getId(); - mockMvc.perform(get("/certificates/find").param("id", id)) + mockMvc.perform(get("/certificates/find").param("id", id.toString())) .andExpect(status().isOk()) .andExpect(jsonPath("$.id").value(id)); } -- GitLab