From 72f575b587697f3f49b7bd35d87242617b78b695 Mon Sep 17 00:00:00 2001 From: Denis Panasyuk Date: Sat, 18 Oct 2025 13:26:42 +0300 Subject: [PATCH 1/4] =?UTF-8?q?=D0=92=D0=BD=D0=B5=D1=81=D0=B5=D0=BD=20?= =?UTF-8?q?=D1=84=D1=83=D0=BD=D0=BA=D1=86=D0=B8=D0=BE=D0=BD=D0=B0=D0=BB=20?= =?UTF-8?q?10=20=D1=81=D0=BF=D1=80=D0=B8=D0=BD=D1=82=D0=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pom.xml | 11 +++ .../filmorate/FilmorateApplication.java | 1 - .../filmorate/controller/FilmController.java | 68 ++++++++++++++++- .../filmorate/controller/UserController.java | 76 +++++++++++++++++++ .../exception/ValidationException.java | 7 ++ .../practicum/filmorate/model/Film.java | 19 ++++- .../practicum/filmorate/model/User.java | 14 ++++ src/main/resources/application.properties | 2 +- .../controller/FilmControllerTest.java | 4 + .../controller/UserControllerTest.java | 4 + 10 files changed, 198 insertions(+), 8 deletions(-) create mode 100644 src/main/java/ru/yandex/practicum/filmorate/controller/UserController.java create mode 100644 src/main/java/ru/yandex/practicum/filmorate/exception/ValidationException.java create mode 100644 src/main/java/ru/yandex/practicum/filmorate/model/User.java create mode 100644 src/test/java/ru/yandex/practicum/filmorate/controller/FilmControllerTest.java create mode 100644 src/test/java/ru/yandex/practicum/filmorate/controller/UserControllerTest.java diff --git a/pom.xml b/pom.xml index 0cad031..8439ff4 100644 --- a/pom.xml +++ b/pom.xml @@ -27,11 +27,22 @@ lombok provided + org.springframework.boot spring-boot-starter-test test + + + org.springframework.boot + spring-boot-starter-validation + + + + org.slf4j + slf4j-api + diff --git a/src/main/java/ru/yandex/practicum/filmorate/FilmorateApplication.java b/src/main/java/ru/yandex/practicum/filmorate/FilmorateApplication.java index dca451b..e55e710 100644 --- a/src/main/java/ru/yandex/practicum/filmorate/FilmorateApplication.java +++ b/src/main/java/ru/yandex/practicum/filmorate/FilmorateApplication.java @@ -8,5 +8,4 @@ public class FilmorateApplication { public static void main(String[] args) { SpringApplication.run(FilmorateApplication.class, args); } - } diff --git a/src/main/java/ru/yandex/practicum/filmorate/controller/FilmController.java b/src/main/java/ru/yandex/practicum/filmorate/controller/FilmController.java index 08cf0a1..592ccb4 100644 --- a/src/main/java/ru/yandex/practicum/filmorate/controller/FilmController.java +++ b/src/main/java/ru/yandex/practicum/filmorate/controller/FilmController.java @@ -1,7 +1,71 @@ package ru.yandex.practicum.filmorate.controller; -import org.springframework.web.bind.annotation.RestController; +import jakarta.validation.Valid; +import lombok.extern.slf4j.Slf4j; +import org.springframework.web.bind.annotation.*; +import ru.yandex.practicum.filmorate.exception.ValidationException; +import ru.yandex.practicum.filmorate.model.Film; +import java.time.LocalDate; +import java.util.Collection; +import java.util.HashMap; +import java.util.Map; + +@Slf4j @RestController +@RequestMapping("/films") public class FilmController { -} + + private final Map films = new HashMap<>(); + + @GetMapping + public Collection findAll() { + return films.values(); + } + + private int getNextId() { + int currentMaxId = films.keySet() + .stream() + .mapToInt(id -> id) + .max() + .orElse(0); + return ++currentMaxId; + } + + @PostMapping + public Film create(@Valid @RequestBody Film film) { + filmValidation(film); + film.setId(getNextId()); + films.put(film.getId(), film); + log.info("Фильм: {} добавлен в базу", film); + return film; + } + + @PutMapping + public Film update(@Valid @RequestBody Film newFilm) { + if (newFilm.getId() == null) { + throw new ValidationException("Id должен быть указан"); + } + if (films.containsKey(newFilm.getId())) { + filmValidation(newFilm); + Film oldFilm = films.get(newFilm.getId()); + oldFilm.setDescription(newFilm.getDescription()); + oldFilm.setDuration(newFilm.getDuration()); + oldFilm.setName(newFilm.getName()); + oldFilm.setReleaseDate(newFilm.getReleaseDate()); + return oldFilm; + } + throw new ValidationException("Пост с id = " + newFilm.getId() + " не найден"); + } + + private void filmValidation(Film film) { + if (film.getDescription().length() > 200) { + log.error("Ошибка лимита"); + throw new ValidationException("Описание превышает 200 символов"); + } + if (film.getReleaseDate().isBefore(LocalDate.of(1895, 12, 28))) { + log.error("Ошибка даты"); + throw new ValidationException("Неверная дата релиза"); + } + } +} \ No newline at end of file diff --git a/src/main/java/ru/yandex/practicum/filmorate/controller/UserController.java b/src/main/java/ru/yandex/practicum/filmorate/controller/UserController.java new file mode 100644 index 0000000..a7fe6c0 --- /dev/null +++ b/src/main/java/ru/yandex/practicum/filmorate/controller/UserController.java @@ -0,0 +1,76 @@ +package ru.yandex.practicum.filmorate.controller; + +import org.springframework.web.bind.annotation.*; +import ru.yandex.practicum.filmorate.exception.ValidationException; +import ru.yandex.practicum.filmorate.model.User; + +import java.time.LocalDate; +import java.util.Collection; +import java.util.HashMap; +import java.util.Map; + +@RestController +@RequestMapping("/users") +public class UserController { + + private final Map users = new HashMap<>(); + + @GetMapping + public Collection findAll() { + return users.values(); + } + + private int getNextId() { + int currentMaxId = users.keySet() + .stream() + .mapToInt(id -> id) + .max() + .orElse(0); + return ++currentMaxId; + } + + @PostMapping + public User create(@RequestBody User user) { + user.setId(getNextId()); + userValidation(user); + users.put(user.getId(), user); + return user; + } + + @PutMapping + public User update(@RequestBody User newUser) { + if (newUser.getId() == null) { + throw new ValidationException("Id должен быть указан"); + } + if (users.containsKey(newUser.getId())) { + User oldUser = users.get(newUser.getId()); + userValidation(newUser); + for (User usr : users.values()) { + if (usr.getEmail().equals(newUser.getEmail())) { + throw new ValidationException("Этот имейл уже используется"); + } + } + oldUser.setEmail(newUser.getEmail()); + oldUser.setName(newUser.getName()); + oldUser.setLogin(newUser.getLogin()); + oldUser.setBirthday(newUser.getBirthday()); + return oldUser; + } + throw new ValidationException("Пользователь с id = " + newUser.getId() + " не найден"); + } + + private void userValidation(User user) { + if (!user.getEmail().contains("@")) { + throw new ValidationException("Неверная почта"); + } + if (user.getBirthday().isAfter(LocalDate.now())) { + throw new ValidationException("Неверная дата рождения"); + } + if (!user.getLogin().contains(" ")) { + throw new ValidationException("Неправильный формат логина"); + } + if (user.getName().isBlank()) { + user.setName(user.getLogin()); + } + } +} \ No newline at end of file diff --git a/src/main/java/ru/yandex/practicum/filmorate/exception/ValidationException.java b/src/main/java/ru/yandex/practicum/filmorate/exception/ValidationException.java new file mode 100644 index 0000000..52dc49c --- /dev/null +++ b/src/main/java/ru/yandex/practicum/filmorate/exception/ValidationException.java @@ -0,0 +1,7 @@ +package ru.yandex.practicum.filmorate.exception; + +public class ValidationException extends RuntimeException { + public ValidationException(String message) { + super(message); + } +} diff --git a/src/main/java/ru/yandex/practicum/filmorate/model/Film.java b/src/main/java/ru/yandex/practicum/filmorate/model/Film.java index 3614a44..b9e156e 100644 --- a/src/main/java/ru/yandex/practicum/filmorate/model/Film.java +++ b/src/main/java/ru/yandex/practicum/filmorate/model/Film.java @@ -1,12 +1,23 @@ package ru.yandex.practicum.filmorate.model; -import lombok.Getter; -import lombok.Setter; +import jakarta.validation.constraints.Min; +import jakarta.validation.constraints.NotBlank; +import jakarta.validation.constraints.NotNull; +import lombok.Data; + +import java.time.LocalDate; /** * Film. */ -@Getter -@Setter +@Data public class Film { + private Integer id; + @NotBlank + private String name; + private String description; + @NotNull + private LocalDate releaseDate; + @Min(1) + private int duration; } diff --git a/src/main/java/ru/yandex/practicum/filmorate/model/User.java b/src/main/java/ru/yandex/practicum/filmorate/model/User.java new file mode 100644 index 0000000..0060c62 --- /dev/null +++ b/src/main/java/ru/yandex/practicum/filmorate/model/User.java @@ -0,0 +1,14 @@ +package ru.yandex.practicum.filmorate.model; + +import lombok.Data; + +import java.time.LocalDate; + +@Data +public class User { + private Integer id; + private String email; + private String login; + private String name; + private LocalDate birthday; +} \ No newline at end of file diff --git a/src/main/resources/application.properties b/src/main/resources/application.properties index 8b13789..4c00e40 100644 --- a/src/main/resources/application.properties +++ b/src/main/resources/application.properties @@ -1 +1 @@ - +server.port=8080 diff --git a/src/test/java/ru/yandex/practicum/filmorate/controller/FilmControllerTest.java b/src/test/java/ru/yandex/practicum/filmorate/controller/FilmControllerTest.java new file mode 100644 index 0000000..6f0c65f --- /dev/null +++ b/src/test/java/ru/yandex/practicum/filmorate/controller/FilmControllerTest.java @@ -0,0 +1,4 @@ +package ru.yandex.practicum.filmorate.controller; + +public class FilmControllerTest { +} diff --git a/src/test/java/ru/yandex/practicum/filmorate/controller/UserControllerTest.java b/src/test/java/ru/yandex/practicum/filmorate/controller/UserControllerTest.java new file mode 100644 index 0000000..29c79e6 --- /dev/null +++ b/src/test/java/ru/yandex/practicum/filmorate/controller/UserControllerTest.java @@ -0,0 +1,4 @@ +package ru.yandex.practicum.filmorate.controller; + +public class UserControllerTest { +} From c27dab2a3961f33ae6ac14f8cd0678b2d011f08e Mon Sep 17 00:00:00 2001 From: Denis Panasyuk Date: Sat, 18 Oct 2025 15:23:56 +0300 Subject: [PATCH 2/4] =?UTF-8?q?=D0=92=D0=BD=D0=B5=D1=81=D0=B5=D0=BD=20?= =?UTF-8?q?=D1=84=D1=83=D0=BD=D0=BA=D1=86=D0=B8=D0=BE=D0=BD=D0=B0=D0=BB=20?= =?UTF-8?q?10=20=D1=81=D0=BF=D1=80=D0=B8=D0=BD=D1=82=D0=B0=20=D0=94=D0=BE?= =?UTF-8?q?=D0=B1=D0=B0=D0=B2=D0=BB=D0=B5=D0=BD=D0=BE=20=D0=BB=D0=BE=D0=B3?= =?UTF-8?q?=D0=B8=D1=80=D0=BE=D0=B2=D0=B0=D0=BD=D0=B8=D0=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../filmorate/controller/FilmController.java | 10 +++++++--- .../filmorate/controller/UserController.java | 20 +++++++++++++++---- 2 files changed, 23 insertions(+), 7 deletions(-) diff --git a/src/main/java/ru/yandex/practicum/filmorate/controller/FilmController.java b/src/main/java/ru/yandex/practicum/filmorate/controller/FilmController.java index 592ccb4..70619dc 100644 --- a/src/main/java/ru/yandex/practicum/filmorate/controller/FilmController.java +++ b/src/main/java/ru/yandex/practicum/filmorate/controller/FilmController.java @@ -20,6 +20,7 @@ public class FilmController { @GetMapping public Collection findAll() { + log.info("Список фильмов выведен"); return films.values(); } @@ -44,6 +45,7 @@ public Film create(@Valid @RequestBody Film film) { @PutMapping public Film update(@Valid @RequestBody Film newFilm) { if (newFilm.getId() == null) { + log.warn("Не указан id"); throw new ValidationException("Id должен быть указан"); } if (films.containsKey(newFilm.getId())) { @@ -53,18 +55,20 @@ public Film update(@Valid @RequestBody Film newFilm) { oldFilm.setDuration(newFilm.getDuration()); oldFilm.setName(newFilm.getName()); oldFilm.setReleaseDate(newFilm.getReleaseDate()); + log.info("Данные о фильме: {} обновлены", oldFilm); return oldFilm; } - throw new ValidationException("Пост с id = " + newFilm.getId() + " не найден"); + log.warn("Фильм с указанным id не найден"); + throw new ValidationException("Фильм с id = " + newFilm.getId() + " не найден"); } private void filmValidation(Film film) { if (film.getDescription().length() > 200) { - log.error("Ошибка лимита"); + log.warn("Ошибка лимита"); throw new ValidationException("Описание превышает 200 символов"); } if (film.getReleaseDate().isBefore(LocalDate.of(1895, 12, 28))) { - log.error("Ошибка даты"); + log.warn("Ошибка даты"); throw new ValidationException("Неверная дата релиза"); } } diff --git a/src/main/java/ru/yandex/practicum/filmorate/controller/UserController.java b/src/main/java/ru/yandex/practicum/filmorate/controller/UserController.java index a7fe6c0..788aa64 100644 --- a/src/main/java/ru/yandex/practicum/filmorate/controller/UserController.java +++ b/src/main/java/ru/yandex/practicum/filmorate/controller/UserController.java @@ -1,5 +1,6 @@ package ru.yandex.practicum.filmorate.controller; +import lombok.extern.slf4j.Slf4j; import org.springframework.web.bind.annotation.*; import ru.yandex.practicum.filmorate.exception.ValidationException; import ru.yandex.practicum.filmorate.model.User; @@ -9,6 +10,7 @@ import java.util.HashMap; import java.util.Map; +@Slf4j @RestController @RequestMapping("/users") public class UserController { @@ -17,6 +19,7 @@ public class UserController { @GetMapping public Collection findAll() { + log.info("Список фильмов выведен"); return users.values(); } @@ -31,15 +34,17 @@ private int getNextId() { @PostMapping public User create(@RequestBody User user) { - user.setId(getNextId()); userValidation(user); + user.setId(getNextId()); users.put(user.getId(), user); + log.info("Пользователь: {} добавлен в базу", user); return user; } @PutMapping public User update(@RequestBody User newUser) { if (newUser.getId() == null) { + log.warn("Не указан id"); throw new ValidationException("Id должен быть указан"); } if (users.containsKey(newUser.getId())) { @@ -47,29 +52,36 @@ public User update(@RequestBody User newUser) { userValidation(newUser); for (User usr : users.values()) { if (usr.getEmail().equals(newUser.getEmail())) { - throw new ValidationException("Этот имейл уже используется"); + log.warn("Попытка присвоить почту существующего пользователя"); + throw new ValidationException("Этот Email уже используется"); } } oldUser.setEmail(newUser.getEmail()); oldUser.setName(newUser.getName()); oldUser.setLogin(newUser.getLogin()); oldUser.setBirthday(newUser.getBirthday()); + log.info("Данные о пользователе: {} обновлены", oldUser); return oldUser; } + log.warn("Пользователь с указанным id не найден"); throw new ValidationException("Пользователь с id = " + newUser.getId() + " не найден"); } private void userValidation(User user) { if (!user.getEmail().contains("@")) { + log.warn("Ошибка в формате почты"); throw new ValidationException("Неверная почта"); } if (user.getBirthday().isAfter(LocalDate.now())) { + log.warn("Ошибка в дате рождения"); throw new ValidationException("Неверная дата рождения"); } - if (!user.getLogin().contains(" ")) { + if (user.getLogin().contains(" ")) { + log.warn("Ошибка в формате логина"); throw new ValidationException("Неправильный формат логина"); } - if (user.getName().isBlank()) { + if (user.getName() == null || user.getName().trim().isEmpty()) { + log.info("Пустое имя пользователя заменено на логин"); user.setName(user.getLogin()); } } From 8b8f743acf60f24531742745c0cdee97bdff0e5b Mon Sep 17 00:00:00 2001 From: Denis Panasyuk Date: Sat, 18 Oct 2025 17:26:23 +0300 Subject: [PATCH 3/4] =?UTF-8?q?=D0=92=D0=BD=D0=B5=D1=81=D0=B5=D0=BD=20?= =?UTF-8?q?=D1=84=D1=83=D0=BD=D0=BA=D1=86=D0=B8=D0=BE=D0=BD=D0=B0=D0=BB=20?= =?UTF-8?q?10=20=D1=81=D0=BF=D1=80=D0=B8=D0=BD=D1=82=D0=B0=20=D0=94=D0=BE?= =?UTF-8?q?=D0=B1=D0=B0=D0=B2=D0=BB=D0=B5=D0=BD=D0=BE=20=D0=BB=D0=BE=D0=B3?= =?UTF-8?q?=D0=B8=D1=80=D0=BE=D0=B2=D0=B0=D0=BD=D0=B8=D0=B5=20=D0=B8=20?= =?UTF-8?q?=D1=82=D0=B5=D1=81=D1=82=D1=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../filmorate/controller/FilmController.java | 12 ++++++- .../filmorate/controller/UserController.java | 6 ---- .../controller/FilmControllerTest.java | 33 ++++++++++++++++++- .../controller/UserControllerTest.java | 33 ++++++++++++++++++- 4 files changed, 75 insertions(+), 9 deletions(-) diff --git a/src/main/java/ru/yandex/practicum/filmorate/controller/FilmController.java b/src/main/java/ru/yandex/practicum/filmorate/controller/FilmController.java index 70619dc..91f1405 100644 --- a/src/main/java/ru/yandex/practicum/filmorate/controller/FilmController.java +++ b/src/main/java/ru/yandex/practicum/filmorate/controller/FilmController.java @@ -3,8 +3,8 @@ import jakarta.validation.Valid; import lombok.extern.slf4j.Slf4j; import org.springframework.web.bind.annotation.*; -import ru.yandex.practicum.filmorate.exception.ValidationException; import ru.yandex.practicum.filmorate.model.Film; +import jakarta.validation.ValidationException; import java.time.LocalDate; import java.util.Collection; @@ -71,5 +71,15 @@ private void filmValidation(Film film) { log.warn("Ошибка даты"); throw new ValidationException("Неверная дата релиза"); } + + if (film.getName() == null || film.getName().isBlank()) { + log.warn("Пустое название фильма"); + throw new ValidationException("Название не может быть пустым"); + } + + if (film.getDuration() < 1) { + log.warn("Ошибка длительности"); + throw new ValidationException("Длительность не может быть меньше 1"); + } } } \ No newline at end of file diff --git a/src/main/java/ru/yandex/practicum/filmorate/controller/UserController.java b/src/main/java/ru/yandex/practicum/filmorate/controller/UserController.java index 788aa64..7439148 100644 --- a/src/main/java/ru/yandex/practicum/filmorate/controller/UserController.java +++ b/src/main/java/ru/yandex/practicum/filmorate/controller/UserController.java @@ -50,12 +50,6 @@ public User update(@RequestBody User newUser) { if (users.containsKey(newUser.getId())) { User oldUser = users.get(newUser.getId()); userValidation(newUser); - for (User usr : users.values()) { - if (usr.getEmail().equals(newUser.getEmail())) { - log.warn("Попытка присвоить почту существующего пользователя"); - throw new ValidationException("Этот Email уже используется"); - } - } oldUser.setEmail(newUser.getEmail()); oldUser.setName(newUser.getName()); oldUser.setLogin(newUser.getLogin()); diff --git a/src/test/java/ru/yandex/practicum/filmorate/controller/FilmControllerTest.java b/src/test/java/ru/yandex/practicum/filmorate/controller/FilmControllerTest.java index 6f0c65f..7bb1ead 100644 --- a/src/test/java/ru/yandex/practicum/filmorate/controller/FilmControllerTest.java +++ b/src/test/java/ru/yandex/practicum/filmorate/controller/FilmControllerTest.java @@ -1,4 +1,35 @@ package ru.yandex.practicum.filmorate.controller; +import jakarta.validation.ValidationException; +import org.junit.jupiter.api.Test; +import ru.yandex.practicum.filmorate.model.Film; +import static org.junit.jupiter.api.Assertions.*; + +import java.time.LocalDate; + public class FilmControllerTest { -} + + FilmController filmController = new FilmController(); + + @Test + void getFilmTest() { + Film film = new Film(); + film.setReleaseDate(LocalDate.now()); + film.setDuration(100); + film.setName("test"); + film.setDescription("t"); + filmController.create(film); + film.setName(" "); + assertThrows(ValidationException.class, () -> filmController.update(film)); + film.setName("test"); + String description200 = "A".repeat(200); + film.setDescription(film.getDescription() + description200); + assertThrows(ValidationException.class, () -> filmController.update(film)); + film.setDescription("t"); + film.setReleaseDate(LocalDate.of(1895, 12, 27)); + assertThrows(ValidationException.class, () -> filmController.update(film)); + film.setReleaseDate(LocalDate.now()); + film.setDuration(0); + assertThrows(ValidationException.class, () -> filmController.update(film)); + } +} \ No newline at end of file diff --git a/src/test/java/ru/yandex/practicum/filmorate/controller/UserControllerTest.java b/src/test/java/ru/yandex/practicum/filmorate/controller/UserControllerTest.java index 29c79e6..f2af4a7 100644 --- a/src/test/java/ru/yandex/practicum/filmorate/controller/UserControllerTest.java +++ b/src/test/java/ru/yandex/practicum/filmorate/controller/UserControllerTest.java @@ -1,4 +1,35 @@ package ru.yandex.practicum.filmorate.controller; +import org.junit.jupiter.api.Test; +import ru.yandex.practicum.filmorate.exception.ValidationException; +import ru.yandex.practicum.filmorate.model.User; + +import java.time.LocalDate; + +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertThrows; + public class UserControllerTest { -} + UserController userController = new UserController(); + + @Test + void getFilmTest() { + User user = new User(); + user.setName("test1"); + user.setLogin("test2"); + user.setBirthday(LocalDate.of(2000, 12, 27)); + user.setEmail("test@"); + userController.create(user); + user.setEmail(" "); + assertThrows(ValidationException.class, () -> userController.update(user)); + user.setEmail("test2@"); + user.setLogin("TEST ETS"); + assertThrows(ValidationException.class, () -> userController.update(user)); + user.setLogin("test2"); + user.setName(" "); + userController.update(user); + assertEquals(user.getLogin(), user.getName(), "Имя совпадает с логином"); + user.setBirthday(LocalDate.of(2200, 12, 27)); + assertThrows(ValidationException.class, () -> userController.update(user)); + } +} \ No newline at end of file From c4f524d1af0b9121c9999345eb6b9dd8a35b594f Mon Sep 17 00:00:00 2001 From: Denis Panasyuk Date: Sun, 19 Oct 2025 14:01:01 +0300 Subject: [PATCH 4/4] =?UTF-8?q?=D0=98=D1=81=D0=BF=D1=80=D0=B0=D0=B2=D0=BB?= =?UTF-8?q?=D0=B5=D0=BD=D1=8B=20update=20=D0=BC=D0=B5=D1=82=D0=BE=D0=B4?= =?UTF-8?q?=D1=8B=20=D1=81=D0=BE=D0=B3=D0=BB=D0=B0=D1=81=D0=BD=D0=BE=20?= =?UTF-8?q?=D0=BC=D0=B5=D1=82=D0=BE=D0=B4=D0=B8=D0=BA=D0=B8=20early=20retu?= =?UTF-8?q?rn=20=D0=98=D1=81=D0=BF=D1=80=D0=B0=D0=B2=D0=BB=D0=B5=D0=BD=20?= =?UTF-8?q?=D0=BD=D0=B5=D0=B9=D0=BC=D0=B8=D0=BD=D0=B3=20=D0=B2=D0=B0=D0=BB?= =?UTF-8?q?=D0=B8=D0=B4=D0=B8=D1=80=D1=83=D1=8E=D1=89=D0=B8=D1=85=20=D0=BC?= =?UTF-8?q?=D0=B5=D1=82=D0=BE=D0=B4=D0=BE=D0=B2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../filmorate/controller/FilmController.java | 26 +++++++++---------- .../filmorate/controller/UserController.java | 26 +++++++++---------- 2 files changed, 26 insertions(+), 26 deletions(-) diff --git a/src/main/java/ru/yandex/practicum/filmorate/controller/FilmController.java b/src/main/java/ru/yandex/practicum/filmorate/controller/FilmController.java index 91f1405..4116f66 100644 --- a/src/main/java/ru/yandex/practicum/filmorate/controller/FilmController.java +++ b/src/main/java/ru/yandex/practicum/filmorate/controller/FilmController.java @@ -35,7 +35,7 @@ private int getNextId() { @PostMapping public Film create(@Valid @RequestBody Film film) { - filmValidation(film); + validateFilm(film); film.setId(getNextId()); films.put(film.getId(), film); log.info("Фильм: {} добавлен в базу", film); @@ -48,21 +48,21 @@ public Film update(@Valid @RequestBody Film newFilm) { log.warn("Не указан id"); throw new ValidationException("Id должен быть указан"); } - if (films.containsKey(newFilm.getId())) { - filmValidation(newFilm); - Film oldFilm = films.get(newFilm.getId()); - oldFilm.setDescription(newFilm.getDescription()); - oldFilm.setDuration(newFilm.getDuration()); - oldFilm.setName(newFilm.getName()); - oldFilm.setReleaseDate(newFilm.getReleaseDate()); - log.info("Данные о фильме: {} обновлены", oldFilm); - return oldFilm; + if (!films.containsKey(newFilm.getId())) { + log.warn("Фильм с указанным id не найден"); + throw new ValidationException("Фильм с id = " + newFilm.getId() + " не найден"); } - log.warn("Фильм с указанным id не найден"); - throw new ValidationException("Фильм с id = " + newFilm.getId() + " не найден"); + validateFilm(newFilm); + Film oldFilm = films.get(newFilm.getId()); + oldFilm.setDescription(newFilm.getDescription()); + oldFilm.setDuration(newFilm.getDuration()); + oldFilm.setName(newFilm.getName()); + oldFilm.setReleaseDate(newFilm.getReleaseDate()); + log.info("Данные о фильме: {} обновлены", oldFilm); + return oldFilm; } - private void filmValidation(Film film) { + private void validateFilm(Film film) { if (film.getDescription().length() > 200) { log.warn("Ошибка лимита"); throw new ValidationException("Описание превышает 200 символов"); diff --git a/src/main/java/ru/yandex/practicum/filmorate/controller/UserController.java b/src/main/java/ru/yandex/practicum/filmorate/controller/UserController.java index 7439148..915a2df 100644 --- a/src/main/java/ru/yandex/practicum/filmorate/controller/UserController.java +++ b/src/main/java/ru/yandex/practicum/filmorate/controller/UserController.java @@ -34,7 +34,7 @@ private int getNextId() { @PostMapping public User create(@RequestBody User user) { - userValidation(user); + validateUser(user); user.setId(getNextId()); users.put(user.getId(), user); log.info("Пользователь: {} добавлен в базу", user); @@ -47,21 +47,21 @@ public User update(@RequestBody User newUser) { log.warn("Не указан id"); throw new ValidationException("Id должен быть указан"); } - if (users.containsKey(newUser.getId())) { - User oldUser = users.get(newUser.getId()); - userValidation(newUser); - oldUser.setEmail(newUser.getEmail()); - oldUser.setName(newUser.getName()); - oldUser.setLogin(newUser.getLogin()); - oldUser.setBirthday(newUser.getBirthday()); - log.info("Данные о пользователе: {} обновлены", oldUser); - return oldUser; + if (!users.containsKey(newUser.getId())) { + log.warn("Пользователь с указанным id не найден"); + throw new ValidationException("Пользователь с id = " + newUser.getId() + " не найден"); } - log.warn("Пользователь с указанным id не найден"); - throw new ValidationException("Пользователь с id = " + newUser.getId() + " не найден"); + validateUser(newUser); + User oldUser = users.get(newUser.getId()); + oldUser.setEmail(newUser.getEmail()); + oldUser.setName(newUser.getName()); + oldUser.setLogin(newUser.getLogin()); + oldUser.setBirthday(newUser.getBirthday()); + log.info("Данные о пользователе: {} обновлены", oldUser); + return oldUser; } - private void userValidation(User user) { + private void validateUser(User user) { if (!user.getEmail().contains("@")) { log.warn("Ошибка в формате почты"); throw new ValidationException("Неверная почта");