From 842565e0a1992eca579992fa5013ebce13c2259a Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Martin=20Gargalovi=C4=8D?= <xgargal@fi.muni.cz>
Date: Sun, 26 Mar 2023 10:58:13 +0200
Subject: [PATCH] adding validation

---
 .../java/org/fuseri/model/dto/user/AddressDto.java | 11 ++++++-----
 .../fuseri/model/dto/user/UserAddLanguageDto.java  |  4 +++-
 .../org/fuseri/model/dto/user/UserCreateDto.java   | 14 +++++++++-----
 .../java/org/fuseri/model/dto/user/UserDto.java    | 11 ++++++-----
 .../org/fuseri/model/dto/user/UserLoginDto.java    |  4 +++-
 .../modulelanguageschool/user/UserController.java  | 12 +++++++-----
 6 files changed, 34 insertions(+), 22 deletions(-)

diff --git a/application/model/src/main/java/org/fuseri/model/dto/user/AddressDto.java b/application/model/src/main/java/org/fuseri/model/dto/user/AddressDto.java
index 4932d99b..ff0af999 100644
--- a/application/model/src/main/java/org/fuseri/model/dto/user/AddressDto.java
+++ b/application/model/src/main/java/org/fuseri/model/dto/user/AddressDto.java
@@ -1,19 +1,20 @@
 package org.fuseri.model.dto.user;
 
+import jakarta.validation.constraints.NotBlank;
 import lombok.Getter;
 import lombok.Setter;
 
 @Getter
 @Setter
 public class AddressDto {
-
+    @NotBlank
     private String country;
-
+    @NotBlank
     private String city;
-
+    @NotBlank
     private String street;
-
+    @NotBlank
     private String houseNumber;
-
+    @NotBlank
     private String zip;
 }
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 23862ac0..ebe92f4f 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
@@ -1,12 +1,14 @@
 package org.fuseri.model.dto.user;
 
+import jakarta.validation.constraints.NotNull;
 import org.fuseri.model.dto.common.DomainObjectDto;
 import org.fuseri.model.dto.course.LanguageTypeDto;
 import org.fuseri.model.dto.course.ProficiencyLevelDto;
 
 public class UserAddLanguageDto extends DomainObjectDto {
 
+    @NotNull
     LanguageTypeDto language;
-
+    @NotNull
     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 ce561102..69059692 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
@@ -1,5 +1,8 @@
 package org.fuseri.model.dto.user;
 
+import jakarta.validation.constraints.NotBlank;
+import jakarta.validation.constraints.NotNull;
+import lombok.NonNull;
 import org.fuseri.model.dto.common.DomainObjectDto;
 import lombok.Getter;
 import lombok.Setter;
@@ -8,15 +11,16 @@ import lombok.Setter;
 @Setter
 public class UserCreateDto extends DomainObjectDto {
 
+    @NotBlank
     private String username;
-
+    @NotBlank
     private String password;
-
+    @NotBlank
     private String email;
-
+    @NotBlank
     private String firstName;
-
+    @NotBlank
     private String lastName;
-
+    @NotNull
     private AddressDto address;
 }
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 0e260ede..fce12aab 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,5 +1,7 @@
 package org.fuseri.model.dto.user;
 
+import jakarta.validation.constraints.NotBlank;
+import jakarta.validation.constraints.NotNull;
 import org.fuseri.model.dto.common.DomainObjectDto;
 import lombok.Getter;
 import lombok.Setter;
@@ -7,15 +9,14 @@ import lombok.Setter;
 @Getter
 @Setter
 public class UserDto extends DomainObjectDto {
-
+    @NotBlank
     private String username;
-
+    @NotBlank
     private String email;
-
+    @NotBlank
     private String firstName;
-
+    @NotBlank
     private String lastName;
-
     private AddressDto address;
 
 
diff --git a/application/model/src/main/java/org/fuseri/model/dto/user/UserLoginDto.java b/application/model/src/main/java/org/fuseri/model/dto/user/UserLoginDto.java
index a028b6a5..387a9dcb 100644
--- a/application/model/src/main/java/org/fuseri/model/dto/user/UserLoginDto.java
+++ b/application/model/src/main/java/org/fuseri/model/dto/user/UserLoginDto.java
@@ -1,5 +1,6 @@
 package org.fuseri.model.dto.user;
 
+import jakarta.validation.constraints.NotBlank;
 import lombok.Getter;
 import lombok.Setter;
 import org.fuseri.model.dto.common.DomainObjectDto;
@@ -7,7 +8,8 @@ import org.fuseri.model.dto.common.DomainObjectDto;
 @Getter
 @Setter
 public class UserLoginDto extends DomainObjectDto {
+    @NotBlank
     private String username;
-
+    @NotBlank
     private String password;
 }
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 c88d4f64..31cfd86e 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
@@ -8,8 +8,10 @@ import org.fuseri.model.dto.user.UserDto;
 import org.fuseri.model.dto.user.UserLoginDto;
 import org.fuseri.modulelanguageschool.course.Course;
 import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.http.ResponseEntity;
 import org.springframework.web.bind.annotation.*;
+import jakarta.validation.Valid;
+import jakarta.validation.constraints.PositiveOrZero;
+
 
 import java.util.ArrayList;
 import java.util.List;
@@ -34,7 +36,7 @@ public class UserController {
     }
 
     @PostMapping
-    public UserDto create(@RequestBody UserCreateDto dto) {
+    public UserDto create(@Valid @RequestBody UserCreateDto dto) {
         return new UserDto(dto.getUsername(),dto.getEmail(),dto.getFirstName(),dto.getLastName(),dto.getAddress());
     }
 
@@ -44,13 +46,13 @@ public class UserController {
     }
 
     @PutMapping("/update/{id}")
-    public UserDto update(@PathVariable String id, @RequestBody UserCreateDto user) {
+    public UserDto update(@PositiveOrZero @PathVariable String id,@Valid @RequestBody UserCreateDto user) {
 
         return new UserDto(user.getUsername(),user.getEmail(),user.getFirstName(),user.getLastName(),user.getAddress());
     }
 
     @GetMapping("/all")
-    public Result<UserDto> findAll(@RequestParam int page) {
+    public Result<UserDto> findAll(@PositiveOrZero @RequestParam int page) {
         var res = new Result<UserDto>();
         res.setItems(List.of(new UserDto("spracher","spracher@gmail.com","Sprach","MeNot",new AddressDto())
 ));
@@ -81,7 +83,7 @@ public class UserController {
     }
 
     @PutMapping("/addLanguage/{id}")
-    public String  addLanguage(@PathVariable String id, @RequestBody UserAddLanguageDto body) {
+    public String  addLanguage(@PathVariable String id,@Valid @RequestBody UserAddLanguageDto body) {
         return "added Absolutely Nothing successfully!";
     }
 
-- 
GitLab