From b35f3d9900e5a491d8228158fbcf7d424737c2cc Mon Sep 17 00:00:00 2001 From: Dominika Zemanovicova <xzemanov@fi.muni.cz> Date: Sat, 15 Apr 2023 18:52:56 +0200 Subject: [PATCH] Get rid of mixing DTOs and entities --- .../model/dto/course/ProficiencyLevelDto.java | 42 +++++++++++++++---- .../org/fuseri/model/dto/user/Language.java | 32 -------------- .../model/dto/user/ProficiencyLevel.java | 36 ---------------- .../model/dto/user/UserAddLanguageDto.java | 6 ++- .../fuseri/model/dto/user/UserCreateDto.java | 6 ++- .../org/fuseri/model/dto/user/UserDto.java | 7 +++- .../modulelanguageschool/user/User.java | 4 +- .../modulelanguageschool/user/UserFacade.java | 7 +++- 8 files changed, 54 insertions(+), 86 deletions(-) delete mode 100644 application/model/src/main/java/org/fuseri/model/dto/user/Language.java delete mode 100644 application/model/src/main/java/org/fuseri/model/dto/user/ProficiencyLevel.java diff --git a/application/model/src/main/java/org/fuseri/model/dto/course/ProficiencyLevelDto.java b/application/model/src/main/java/org/fuseri/model/dto/course/ProficiencyLevelDto.java index 10697363..0031b4b9 100644 --- a/application/model/src/main/java/org/fuseri/model/dto/course/ProficiencyLevelDto.java +++ b/application/model/src/main/java/org/fuseri/model/dto/course/ProficiencyLevelDto.java @@ -1,12 +1,36 @@ package org.fuseri.model.dto.course; +/** + * An enum representing language proficiency levels based on the CEFR standard. + */ public enum ProficiencyLevelDto { - A1, - A2, - B1, - B2, - C1, - C2, - C1N, - C2N -} + + A1("Beginner"), + A2("Elementary"), + B1("Intermediate"), + B2("Upper Intermediate"), + C1("Advanced"), + C2("Proficient"), + C1N("Advanced Native speaker"), + C2N("Proficient Native speaker"); + + private final String description; + + /** + * Constructor for LanguageLevel enum. + * + * @param description a String representing a brief description of the language proficiency level + */ + ProficiencyLevelDto(String description) { + this.description = description; + } + + /** + * Returns a brief description of the language proficiency level. + * + * @return a String representing the description of the language proficiency level + */ + public String getDescription() { + return description; + } +} \ No newline at end of file diff --git a/application/model/src/main/java/org/fuseri/model/dto/user/Language.java b/application/model/src/main/java/org/fuseri/model/dto/user/Language.java deleted file mode 100644 index 79116a0a..00000000 --- a/application/model/src/main/java/org/fuseri/model/dto/user/Language.java +++ /dev/null @@ -1,32 +0,0 @@ -package org.fuseri.model.dto.user; - -/** - * An enum representing individual languages. - */ -public enum Language { - - ENGLISH("English"), - GERMAN("Deutsch"), - SPANISH("Español"), - CZECH("Čeština"); - - private final String nativeName; - - /** - * Constructor for Language enum. - * - * @param nativeName a String representing the native name of the language - */ - Language(String nativeName) { - this.nativeName = nativeName; - } - - /** - * Returns the native name of the language. - * - * @return a String representing the native name of the language - */ - public String getNativeName() { - return nativeName; - } -} diff --git a/application/model/src/main/java/org/fuseri/model/dto/user/ProficiencyLevel.java b/application/model/src/main/java/org/fuseri/model/dto/user/ProficiencyLevel.java deleted file mode 100644 index 47ea8e15..00000000 --- a/application/model/src/main/java/org/fuseri/model/dto/user/ProficiencyLevel.java +++ /dev/null @@ -1,36 +0,0 @@ -package org.fuseri.model.dto.user; - -/** - * An enum representing language proficiency levels based on the CEFR standard. - */ -public enum ProficiencyLevel { - - A1("Beginner"), - A2("Elementary"), - B1("Intermediate"), - B2("Upper Intermediate"), - C1("Advanced"), - C2("Proficient"), - C1N("Advanced Native speaker"), - C2N("Proficient Native speaker"); - - private final String description; - - /** - * Constructor for LanguageLevel enum. - * - * @param description a String representing a brief description of the language proficiency level - */ - ProficiencyLevel(String description) { - this.description = description; - } - - /** - * Returns a brief description of the language proficiency level. - * - * @return a String representing the description of the language proficiency level - */ - public String getDescription() { - return description; - } -} diff --git a/application/model/src/main/java/org/fuseri/model/dto/user/UserAddLanguageDto.java b/application/model/src/main/java/org/fuseri/model/dto/user/UserAddLanguageDto.java index 7c8f9777..271ce643 100644 --- a/application/model/src/main/java/org/fuseri/model/dto/user/UserAddLanguageDto.java +++ b/application/model/src/main/java/org/fuseri/model/dto/user/UserAddLanguageDto.java @@ -5,6 +5,8 @@ import jakarta.validation.constraints.NotNull; import lombok.AllArgsConstructor; import lombok.Getter; import lombok.Setter; +import org.fuseri.model.dto.course.LanguageTypeDto; +import org.fuseri.model.dto.course.ProficiencyLevelDto; @Getter @Setter @@ -13,9 +15,9 @@ public class UserAddLanguageDto { @NotNull @Valid - Language language; + LanguageTypeDto language; @NotNull @Valid - ProficiencyLevel proficiency; + ProficiencyLevelDto proficiency; } diff --git a/application/model/src/main/java/org/fuseri/model/dto/user/UserCreateDto.java b/application/model/src/main/java/org/fuseri/model/dto/user/UserCreateDto.java index 0f07d513..ef7fbecc 100644 --- a/application/model/src/main/java/org/fuseri/model/dto/user/UserCreateDto.java +++ b/application/model/src/main/java/org/fuseri/model/dto/user/UserCreateDto.java @@ -6,8 +6,9 @@ import jakarta.validation.constraints.NotNull; import lombok.AllArgsConstructor; import lombok.Getter; import lombok.Setter; +import org.fuseri.model.dto.course.LanguageTypeDto; +import org.fuseri.model.dto.course.ProficiencyLevelDto; -import java.util.List; import java.util.Map; @Getter @@ -37,6 +38,7 @@ public class UserCreateDto { @NotNull private UserType userType; - private Map<Language,ProficiencyLevel> languageProficiency; + @Valid + private Map<LanguageTypeDto, ProficiencyLevelDto> languageProficiency; } 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 a0258db3..5cfe9ff3 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 @@ -1,10 +1,13 @@ package org.fuseri.model.dto.user; +import jakarta.validation.Valid; import jakarta.validation.constraints.NotBlank; import jakarta.validation.constraints.NotNull; import org.fuseri.model.dto.common.DomainObjectDto; import lombok.Getter; import lombok.Setter; +import org.fuseri.model.dto.course.LanguageTypeDto; +import org.fuseri.model.dto.course.ProficiencyLevelDto; import java.util.Map; @@ -29,7 +32,9 @@ public class UserDto extends DomainObjectDto { @NotNull private UserType userType; - private Map<Language,ProficiencyLevel> languageProficiency; + @NotNull + @Valid + private Map<LanguageTypeDto, ProficiencyLevelDto> languageProficiency; public UserDto(String username, String email, String firstName, String lastName, AddressDto address) { setId(0L); diff --git a/application/module-language-school/src/main/java/org/fuseri/modulelanguageschool/user/User.java b/application/module-language-school/src/main/java/org/fuseri/modulelanguageschool/user/User.java index 143a7ccd..390b03e2 100644 --- a/application/module-language-school/src/main/java/org/fuseri/modulelanguageschool/user/User.java +++ b/application/module-language-school/src/main/java/org/fuseri/modulelanguageschool/user/User.java @@ -2,10 +2,10 @@ package org.fuseri.modulelanguageschool.user; import jakarta.persistence.*; import lombok.*; -import org.fuseri.model.dto.user.Language; -import org.fuseri.model.dto.user.ProficiencyLevel; import org.fuseri.modulelanguageschool.common.DomainObject; import org.fuseri.modulelanguageschool.course.Course; +import org.fuseri.modulelanguageschool.course.Language; +import org.fuseri.modulelanguageschool.course.ProficiencyLevel; import java.util.Map; import java.util.Set; 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 73ad519f..0f29f752 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 @@ -6,6 +6,8 @@ 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.course.CourseMapper; +import org.fuseri.modulelanguageschool.course.Language; +import org.fuseri.modulelanguageschool.course.ProficiencyLevel; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -57,9 +59,10 @@ public class UserFacade { public UserDto addLanguage(Long id, UserAddLanguageDto body) { var user = service.find(id); var languages = user.getLanguageProficiency(); - var language = body.getLanguage(); + var language = Language.valueOf(body.getLanguage().name()); + var proficiency = ProficiencyLevel.valueOf(body.getProficiency().name()); - languages.put(language, body.getProficiency()); + languages.put(language, proficiency); user.setLanguageProficiency(languages); return mapper.toDto(service.update(user)); } -- GitLab