From 5321c0aaa36849e6421fc6ddfe63af18b65c5e68 Mon Sep 17 00:00:00 2001 From: user Date: Mon, 21 Sep 2026 21:20:02 +0400 Subject: [PATCH] feat(cli): add interactive CRUD menu and resource cleanup --- .../src/main/java/com/example/Main.java | 110 +++++++++++++++++- .../src/main/java/com/example/UserDao.java | 4 + 2 files changed, 110 insertions(+), 4 deletions(-) diff --git a/second-part/hw-02/user-service/src/main/java/com/example/Main.java b/second-part/hw-02/user-service/src/main/java/com/example/Main.java index 890ffaa..d38b1c7 100644 --- a/second-part/hw-02/user-service/src/main/java/com/example/Main.java +++ b/second-part/hw-02/user-service/src/main/java/com/example/Main.java @@ -1,17 +1,119 @@ package com.example; +import java.util.Scanner; + public class Main { public static void main(String[] args) { UserDao userDao = new UserDao(); + Scanner scanner = new Scanner(System.in); + try { + while (true) { + printMenu(); + + String choice = scanner.nextLine(); + + clearConsole(); + + try { + switch (choice) { + case "1" -> createUser(userDao, scanner); + case "2" -> findUser(userDao, scanner); + case "3" -> updateUser(userDao, scanner); + case "4" -> deleteUser(userDao, scanner); + case "0" -> { + return; + } + default -> System.out.println("Неизвестная команда."); + } + } catch (NumberFormatException e) { + System.out.println("Ошибка: введите корректное число."); + } catch (RuntimeException e) { + System.out.println("Ошибка при работе с базой данных."); + } + } + } finally { + scanner.close(); + userDao.close(); + } + } + + private static void printMenu() { + System.out.println("\n1. Создать пользователя"); + System.out.println("2. Найти пользователя"); + System.out.println("3. Обновить пользователя"); + System.out.println("4. Удалить пользователя"); + System.out.println("0. Выход"); + System.out.print("Выберите действие: "); + } + + private static void createUser(UserDao userDao, Scanner scanner) { User user = new User(); - user.setName("User"); - user.setEmail("user@example.com"); - user.setAge(99); + + System.out.print("Имя: "); + user.setName(scanner.nextLine()); + + System.out.print("Email: "); + user.setEmail(scanner.nextLine()); + + System.out.print("Возраст: "); + user.setAge(Integer.parseInt(scanner.nextLine())); userDao.create(user); - System.out.println(user); + System.out.println("Пользователь создан: " + user); + } + + private static void findUser(UserDao userDao, Scanner scanner) { + System.out.print("ID пользователя: "); + Long id = Long.parseLong(scanner.nextLine()); + + User user = userDao.findById(id); + + if (user != null) { + System.out.println(user); + } else { + System.out.println("Пользователь не найден."); + } + } + + private static void updateUser(UserDao userDao, Scanner scanner) { + System.out.print("ID пользователя: "); + Long id = Long.parseLong(scanner.nextLine()); + + User user = userDao.findById(id); + + if (user == null) { + System.out.println("Пользователь не найден."); + return; + } + + System.out.print("Новое имя: "); + user.setName(scanner.nextLine()); + + System.out.print("Новый email: "); + user.setEmail(scanner.nextLine()); + + System.out.print("Новый возраст: "); + user.setAge(Integer.parseInt(scanner.nextLine())); + + userDao.update(user); + + System.out.println("Пользователь обновлён."); + } + + private static void deleteUser(UserDao userDao, Scanner scanner) { + System.out.print("ID пользователя: "); + Long id = Long.parseLong(scanner.nextLine()); + + userDao.deleteById(id); + + System.out.println("Пользователь удалён."); + } + + private static void clearConsole() { + System.out.print("\033[H\033[2J"); + System.out.flush(); } } diff --git a/second-part/hw-02/user-service/src/main/java/com/example/UserDao.java b/second-part/hw-02/user-service/src/main/java/com/example/UserDao.java index e0fd7ac..c50165d 100644 --- a/second-part/hw-02/user-service/src/main/java/com/example/UserDao.java +++ b/second-part/hw-02/user-service/src/main/java/com/example/UserDao.java @@ -76,6 +76,10 @@ public class UserDao { } } + public void close() { + sessionFactory.close(); + } + private void handleException(Transaction transaction, HibernateException e) { if (transaction != null) { try {