From d52648bcc8b90ab0f3c1532470e75b4af0ec8a08 Mon Sep 17 00:00:00 2001 From: Vachagan Date: Sat, 4 Mar 2023 21:53:10 +0300 Subject: [PATCH 1/3] v1.0 --- .../catsgram/CatsgramApplication.java | 0 .../ru/yandex/practicum/catsgram/User.java | 47 +++++++++++++++++++ .../catsgram/controller/PostController.java | 0 .../catsgram/controller/SimpleController.java | 0 .../catsgram/controller/UserController.java | 45 ++++++++++++++++++ .../exception/InvalidEmailException.java | 7 +++ .../exception/UserAlreadyExistException.java | 8 ++++ .../yandex/practicum/catsgram/model/Post.java | 0 .../main/resources/application.properties | 0 .../catsgram/CatsgramApplicationTests.java | 2 +- pom.xml | 12 +++++ 11 files changed, 120 insertions(+), 1 deletion(-) rename {src => develop/src}/main/java/ru/yandex/practicum/catsgram/CatsgramApplication.java (100%) create mode 100644 develop/src/main/java/ru/yandex/practicum/catsgram/User.java rename {src => develop/src}/main/java/ru/yandex/practicum/catsgram/controller/PostController.java (100%) rename {src => develop/src}/main/java/ru/yandex/practicum/catsgram/controller/SimpleController.java (100%) create mode 100644 develop/src/main/java/ru/yandex/practicum/catsgram/controller/UserController.java create mode 100644 develop/src/main/java/ru/yandex/practicum/catsgram/exception/InvalidEmailException.java create mode 100644 develop/src/main/java/ru/yandex/practicum/catsgram/exception/UserAlreadyExistException.java rename {src => develop/src}/main/java/ru/yandex/practicum/catsgram/model/Post.java (100%) rename {src => develop/src}/main/resources/application.properties (100%) rename {src => develop/src}/test/java/ru/yandex/practicum/catsgram/CatsgramApplicationTests.java (77%) diff --git a/src/main/java/ru/yandex/practicum/catsgram/CatsgramApplication.java b/develop/src/main/java/ru/yandex/practicum/catsgram/CatsgramApplication.java similarity index 100% rename from src/main/java/ru/yandex/practicum/catsgram/CatsgramApplication.java rename to develop/src/main/java/ru/yandex/practicum/catsgram/CatsgramApplication.java diff --git a/develop/src/main/java/ru/yandex/practicum/catsgram/User.java b/develop/src/main/java/ru/yandex/practicum/catsgram/User.java new file mode 100644 index 00000000..7683415f --- /dev/null +++ b/develop/src/main/java/ru/yandex/practicum/catsgram/User.java @@ -0,0 +1,47 @@ +package ru.yandex.practicum.catsgram; + +import java.time.LocalDate; +import java.util.Objects; + +public class User { + private String email; + private String nickname; + private LocalDate birthdate; + + public String getEmail() { + return email; + } + + public void setEmail(String email) { + this.email = email; + } + + public String getNickname() { + return nickname; + } + + public void setNickname(String nickname) { + this.nickname = nickname; + } + + public LocalDate getBirthdate() { + return birthdate; + } + + public void setBirthdate(LocalDate birthdate) { + this.birthdate = birthdate; + } + + @Override + public boolean equals(Object o) { + if (this == o) return true; + if (o == null || getClass() != o.getClass()) return false; + User user = (User) o; + return email.equals(user.email); + } + + @Override + public int hashCode() { + return Objects.hash(email); + } +} \ No newline at end of file diff --git a/src/main/java/ru/yandex/practicum/catsgram/controller/PostController.java b/develop/src/main/java/ru/yandex/practicum/catsgram/controller/PostController.java similarity index 100% rename from src/main/java/ru/yandex/practicum/catsgram/controller/PostController.java rename to develop/src/main/java/ru/yandex/practicum/catsgram/controller/PostController.java diff --git a/src/main/java/ru/yandex/practicum/catsgram/controller/SimpleController.java b/develop/src/main/java/ru/yandex/practicum/catsgram/controller/SimpleController.java similarity index 100% rename from src/main/java/ru/yandex/practicum/catsgram/controller/SimpleController.java rename to develop/src/main/java/ru/yandex/practicum/catsgram/controller/SimpleController.java diff --git a/develop/src/main/java/ru/yandex/practicum/catsgram/controller/UserController.java b/develop/src/main/java/ru/yandex/practicum/catsgram/controller/UserController.java new file mode 100644 index 00000000..188d01a4 --- /dev/null +++ b/develop/src/main/java/ru/yandex/practicum/catsgram/controller/UserController.java @@ -0,0 +1,45 @@ +package ru.yandex.practicum.catsgram.controller; + +import org.springframework.web.bind.annotation.*; +import ru.yandex.practicum.catsgram.User; +import ru.yandex.practicum.catsgram.exception.InvalidEmailException; +import ru.yandex.practicum.catsgram.exception.UserAlreadyExistException; + +import java.util.ArrayList; +import java.util.List; + +@RestController +@RequestMapping("/users") +public class UserController { + private List users = new ArrayList<>(); + + @GetMapping() + public List findAll() { + if (users.size() == 0) { + System.out.println("Список пользователей пока пустой"); + } + return users; + } + + @PostMapping(value = "/user") + public User createUser(@RequestBody User user) throws UserAlreadyExistException { + if (users.contains(user.getEmail())) { + throw new UserAlreadyExistException + ("Пользователь с указанным адресом электронной почты уже был добавлен ранее"); + }else { + users.add(user); + return user; + } + } + + @PutMapping(value = "/user") + public User updateUser(@RequestBody User user) throws InvalidEmailException { + if (user.getEmail() == null) { + throw new InvalidEmailException("В переданных данных отсутствует адрес электронной почты"); + } else { + users.add(user); + return user; + } + } +} + diff --git a/develop/src/main/java/ru/yandex/practicum/catsgram/exception/InvalidEmailException.java b/develop/src/main/java/ru/yandex/practicum/catsgram/exception/InvalidEmailException.java new file mode 100644 index 00000000..0bfe263a --- /dev/null +++ b/develop/src/main/java/ru/yandex/practicum/catsgram/exception/InvalidEmailException.java @@ -0,0 +1,7 @@ +package ru.yandex.practicum.catsgram.exception; + +public class InvalidEmailException extends Throwable { + public InvalidEmailException(String message) { + super(message); + } +} diff --git a/develop/src/main/java/ru/yandex/practicum/catsgram/exception/UserAlreadyExistException.java b/develop/src/main/java/ru/yandex/practicum/catsgram/exception/UserAlreadyExistException.java new file mode 100644 index 00000000..9618e960 --- /dev/null +++ b/develop/src/main/java/ru/yandex/practicum/catsgram/exception/UserAlreadyExistException.java @@ -0,0 +1,8 @@ +package ru.yandex.practicum.catsgram.exception; + +public class UserAlreadyExistException extends Throwable { + public UserAlreadyExistException(String message) { + super(message); + } + +} diff --git a/src/main/java/ru/yandex/practicum/catsgram/model/Post.java b/develop/src/main/java/ru/yandex/practicum/catsgram/model/Post.java similarity index 100% rename from src/main/java/ru/yandex/practicum/catsgram/model/Post.java rename to develop/src/main/java/ru/yandex/practicum/catsgram/model/Post.java diff --git a/src/main/resources/application.properties b/develop/src/main/resources/application.properties similarity index 100% rename from src/main/resources/application.properties rename to develop/src/main/resources/application.properties diff --git a/src/test/java/ru/yandex/practicum/catsgram/CatsgramApplicationTests.java b/develop/src/test/java/ru/yandex/practicum/catsgram/CatsgramApplicationTests.java similarity index 77% rename from src/test/java/ru/yandex/practicum/catsgram/CatsgramApplicationTests.java rename to develop/src/test/java/ru/yandex/practicum/catsgram/CatsgramApplicationTests.java index 32936573..dd324be2 100644 --- a/src/test/java/ru/yandex/practicum/catsgram/CatsgramApplicationTests.java +++ b/develop/src/test/java/ru/yandex/practicum/catsgram/CatsgramApplicationTests.java @@ -1,4 +1,4 @@ -package test.java.ru.yandex.practicum.catsgram; +package src.test.java.ru.yandex.practicum.catsgram; import org.junit.jupiter.api.Test; import org.springframework.boot.test.context.SpringBootTest; diff --git a/pom.xml b/pom.xml index a4bdb80c..98c15e1d 100644 --- a/pom.xml +++ b/pom.xml @@ -27,6 +27,18 @@ spring-boot-starter-test test + + org.testng + testng + RELEASE + compile + + + org.junit.jupiter + junit-jupiter-api + 5.8.1 + compile + From 3adfc38c9c4b2462dd7ad418db8f62f67e6b1d23 Mon Sep 17 00:00:00 2001 From: Vachagan Date: Sun, 5 Mar 2023 11:23:25 +0300 Subject: [PATCH 2/3] v1.1 --- .../yandex/practicum/catsgram/controller/UserController.java | 4 ++-- .../yandex/practicum/catsgram/CatsgramApplicationTests.java | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/develop/src/main/java/ru/yandex/practicum/catsgram/controller/UserController.java b/develop/src/main/java/ru/yandex/practicum/catsgram/controller/UserController.java index 188d01a4..29e8496a 100644 --- a/develop/src/main/java/ru/yandex/practicum/catsgram/controller/UserController.java +++ b/develop/src/main/java/ru/yandex/practicum/catsgram/controller/UserController.java @@ -21,7 +21,7 @@ public List findAll() { return users; } - @PostMapping(value = "/user") + @PostMapping() public User createUser(@RequestBody User user) throws UserAlreadyExistException { if (users.contains(user.getEmail())) { throw new UserAlreadyExistException @@ -32,7 +32,7 @@ public User createUser(@RequestBody User user) throws UserAlreadyExistException } } - @PutMapping(value = "/user") + @PutMapping() public User updateUser(@RequestBody User user) throws InvalidEmailException { if (user.getEmail() == null) { throw new InvalidEmailException("В переданных данных отсутствует адрес электронной почты"); diff --git a/develop/src/test/java/ru/yandex/practicum/catsgram/CatsgramApplicationTests.java b/develop/src/test/java/ru/yandex/practicum/catsgram/CatsgramApplicationTests.java index dd324be2..c01905c9 100644 --- a/develop/src/test/java/ru/yandex/practicum/catsgram/CatsgramApplicationTests.java +++ b/develop/src/test/java/ru/yandex/practicum/catsgram/CatsgramApplicationTests.java @@ -1,4 +1,4 @@ -package src.test.java.ru.yandex.practicum.catsgram; +package ru.yandex.practicum.catsgram; import org.junit.jupiter.api.Test; import org.springframework.boot.test.context.SpringBootTest; From 0bf468a141b65aaadffed34b3d9ac66b6c7ea8e3 Mon Sep 17 00:00:00 2001 From: Vachagan Date: Mon, 6 Mar 2023 11:15:57 +0300 Subject: [PATCH 3/3] v1.2 --- .../catsgram/CatsgramApplication.java | 1 - .../catsgram/controller/PostController.java | 7 ++- .../catsgram/controller/UserController.java | 48 +++++++++---------- .../exception/InvalidEmailException.java | 8 ++-- .../exception/UserAlreadyExistException.java | 9 ++-- .../catsgram/{model => models}/Post.java | 2 +- .../practicum/catsgram/{ => models}/User.java | 2 +- .../src/main/resources/application.properties | 3 +- pom.xml | 12 ++++- 9 files changed, 51 insertions(+), 41 deletions(-) rename develop/src/main/java/ru/yandex/practicum/catsgram/{model => models}/Post.java (95%) rename develop/src/main/java/ru/yandex/practicum/catsgram/{ => models}/User.java (95%) diff --git a/develop/src/main/java/ru/yandex/practicum/catsgram/CatsgramApplication.java b/develop/src/main/java/ru/yandex/practicum/catsgram/CatsgramApplication.java index 63f822d5..c789fb59 100644 --- a/develop/src/main/java/ru/yandex/practicum/catsgram/CatsgramApplication.java +++ b/develop/src/main/java/ru/yandex/practicum/catsgram/CatsgramApplication.java @@ -9,5 +9,4 @@ public class CatsgramApplication { public static void main(String[] args) { SpringApplication.run(CatsgramApplication.class, args); } - } diff --git a/develop/src/main/java/ru/yandex/practicum/catsgram/controller/PostController.java b/develop/src/main/java/ru/yandex/practicum/catsgram/controller/PostController.java index 2b19e51d..d6e9ddc7 100644 --- a/develop/src/main/java/ru/yandex/practicum/catsgram/controller/PostController.java +++ b/develop/src/main/java/ru/yandex/practicum/catsgram/controller/PostController.java @@ -1,20 +1,23 @@ package ru.yandex.practicum.catsgram.controller; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RestController; -import ru.yandex.practicum.catsgram.model.Post; +import ru.yandex.practicum.catsgram.models.Post; import java.util.ArrayList; import java.util.List; @RestController public class PostController { - + private static final Logger log = LoggerFactory.getLogger(PostController.class); private final List posts = new ArrayList<>(); @GetMapping("/posts") public List findAll() { + log.debug("Текущее количество постов: {}", posts.size()); return posts; } diff --git a/develop/src/main/java/ru/yandex/practicum/catsgram/controller/UserController.java b/develop/src/main/java/ru/yandex/practicum/catsgram/controller/UserController.java index 29e8496a..94d7aa0f 100644 --- a/develop/src/main/java/ru/yandex/practicum/catsgram/controller/UserController.java +++ b/develop/src/main/java/ru/yandex/practicum/catsgram/controller/UserController.java @@ -1,45 +1,43 @@ package ru.yandex.practicum.catsgram.controller; import org.springframework.web.bind.annotation.*; -import ru.yandex.practicum.catsgram.User; +import ru.yandex.practicum.catsgram.models.User; import ru.yandex.practicum.catsgram.exception.InvalidEmailException; import ru.yandex.practicum.catsgram.exception.UserAlreadyExistException; -import java.util.ArrayList; -import java.util.List; +import java.util.*; @RestController @RequestMapping("/users") public class UserController { - private List users = new ArrayList<>(); + private final Map users = new HashMap<>(); - @GetMapping() - public List findAll() { - if (users.size() == 0) { - System.out.println("Список пользователей пока пустой"); - } - return users; + @GetMapping + public Collection findAll() { + return users.values(); } - @PostMapping() - public User createUser(@RequestBody User user) throws UserAlreadyExistException { - if (users.contains(user.getEmail())) { - throw new UserAlreadyExistException - ("Пользователь с указанным адресом электронной почты уже был добавлен ранее"); - }else { - users.add(user); - return user; + @PostMapping + public User create(@RequestBody User user) { + if(user.getEmail() == null || user.getEmail().isBlank()) { + throw new InvalidEmailException("Адрес электронной почты не может быть пустым."); + } + if(users.containsKey(user.getEmail())) { + throw new UserAlreadyExistException("Пользователь с электронной почтой " + + user.getEmail() + " уже зарегистрирован."); } + users.put(user.getEmail(), user); + return user; } - @PutMapping() - public User updateUser(@RequestBody User user) throws InvalidEmailException { - if (user.getEmail() == null) { - throw new InvalidEmailException("В переданных данных отсутствует адрес электронной почты"); - } else { - users.add(user); - return user; + @PutMapping + public User put(@RequestBody User user) { + if(user.getEmail() == null || user.getEmail().isBlank()) { + throw new InvalidEmailException("Адрес электронной почты не может быть пустым."); } + users.put(user.getEmail(), user); + + return user; } } diff --git a/develop/src/main/java/ru/yandex/practicum/catsgram/exception/InvalidEmailException.java b/develop/src/main/java/ru/yandex/practicum/catsgram/exception/InvalidEmailException.java index 0bfe263a..47fd862b 100644 --- a/develop/src/main/java/ru/yandex/practicum/catsgram/exception/InvalidEmailException.java +++ b/develop/src/main/java/ru/yandex/practicum/catsgram/exception/InvalidEmailException.java @@ -1,7 +1,7 @@ package ru.yandex.practicum.catsgram.exception; -public class InvalidEmailException extends Throwable { - public InvalidEmailException(String message) { - super(message); +public class InvalidEmailException extends RuntimeException { + public InvalidEmailException(String s) { + super(s); } -} +} \ No newline at end of file diff --git a/develop/src/main/java/ru/yandex/practicum/catsgram/exception/UserAlreadyExistException.java b/develop/src/main/java/ru/yandex/practicum/catsgram/exception/UserAlreadyExistException.java index 9618e960..b3681b26 100644 --- a/develop/src/main/java/ru/yandex/practicum/catsgram/exception/UserAlreadyExistException.java +++ b/develop/src/main/java/ru/yandex/practicum/catsgram/exception/UserAlreadyExistException.java @@ -1,8 +1,7 @@ package ru.yandex.practicum.catsgram.exception; -public class UserAlreadyExistException extends Throwable { - public UserAlreadyExistException(String message) { - super(message); +public class UserAlreadyExistException extends RuntimeException { + public UserAlreadyExistException(String s) { + super(s); } - -} +} \ No newline at end of file diff --git a/develop/src/main/java/ru/yandex/practicum/catsgram/model/Post.java b/develop/src/main/java/ru/yandex/practicum/catsgram/models/Post.java similarity index 95% rename from develop/src/main/java/ru/yandex/practicum/catsgram/model/Post.java rename to develop/src/main/java/ru/yandex/practicum/catsgram/models/Post.java index 6a4b8868..7d18f1d1 100644 --- a/develop/src/main/java/ru/yandex/practicum/catsgram/model/Post.java +++ b/develop/src/main/java/ru/yandex/practicum/catsgram/models/Post.java @@ -1,4 +1,4 @@ -package ru.yandex.practicum.catsgram.model; +package ru.yandex.practicum.catsgram.models; import java.time.Instant; diff --git a/develop/src/main/java/ru/yandex/practicum/catsgram/User.java b/develop/src/main/java/ru/yandex/practicum/catsgram/models/User.java similarity index 95% rename from develop/src/main/java/ru/yandex/practicum/catsgram/User.java rename to develop/src/main/java/ru/yandex/practicum/catsgram/models/User.java index 7683415f..1352b4d5 100644 --- a/develop/src/main/java/ru/yandex/practicum/catsgram/User.java +++ b/develop/src/main/java/ru/yandex/practicum/catsgram/models/User.java @@ -1,4 +1,4 @@ -package ru.yandex.practicum.catsgram; +package ru.yandex.practicum.catsgram.models; import java.time.LocalDate; import java.util.Objects; diff --git a/develop/src/main/resources/application.properties b/develop/src/main/resources/application.properties index 8b137891..235f65ce 100644 --- a/develop/src/main/resources/application.properties +++ b/develop/src/main/resources/application.properties @@ -1 +1,2 @@ - +logging.level.org.zalando.logbook=TRACE +logging.level.ru.yandex.practicum.contollers=debug diff --git a/pom.xml b/pom.xml index 98c15e1d..43c441d0 100644 --- a/pom.xml +++ b/pom.xml @@ -5,7 +5,7 @@ org.springframework.boot spring-boot-starter-parent - 2.6.1 + 2.6.2 ru.yandex.practicum @@ -22,6 +22,16 @@ spring-boot-starter-web + + org.springframework.boot + spring-boot-starter-logging + + + org.zalando + logbook-spring-boot-starter + 2.14.0 + + org.springframework.boot spring-boot-starter-test