/
Maksim_Shchelochok
/
Course_Work
Обзор
Документация
Войти
/
Maksim_Shchelochok
/
Course_Work
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
master
src/model/TeacherManager.java
132 строки
5 KB
Maksim
Добавление валидации
22 июн 2026, 18:40
22 июн 2026, 18:40
d86e5d4
Код
Авторство
О чём код?
package model; import util.ConnectDatabase; import util.Validator; import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; import java.util.ArrayList; import java.util.List; public class TeacherManager { private Connection getConnection() { return ConnectDatabase.getInstance().getConnection(); } public List<Teacher> getAll() { List<Teacher> list = new ArrayList<>(); String sql = "SELECT teacher_id, last_name, first_name, patronymic, " + "work_experience, phone_number FROM teachers ORDER BY teacher_id"; try (PreparedStatement ps = getConnection().prepareStatement(sql); ResultSet rs = ps.executeQuery()) { while (rs.next()) { list.add(new Teacher( rs.getInt("teacher_id"), rs.getString("last_name"), rs.getString("first_name"), rs.getString("patronymic"), rs.getInt("work_experience"), rs.getString("phone_number"))); } } catch (SQLException e) { System.out.println("Ошибка чтения преподавателей: " + e.getMessage()); } return list; } public String create(String lastName, String firstName, String patronymic, int work_experience, String phone) { if (!Validator.isValidName(lastName)) { return "Фамилия должна состоять только из букв."; } if (!Validator.isValidName(firstName)) { return "Имя должно состоять только из букв."; } if (patronymic != null && !patronymic.trim().isEmpty() && !Validator.isValidName(patronymic)) { return "Отчество должно состоять только из букв."; } if (!Validator.isValidExperience(work_experience)) { return "Стаж должен быть числом от 0 до 80."; } if (!Validator.isValidPhone(phone)) { return "Телефон должен быть в формате +7XXXXXXXXXX."; } if (lastName.trim().isEmpty() || firstName.trim().isEmpty()) { return "Фамилия и имя обязательны."; } if (phone.trim().isEmpty()) { return "Телефон обязателен."; } String sql = "INSERT INTO teachers " + "(last_name, first_name, patronymic, work_experience, phone_number) " + "VALUES (?, ?, ?, ?, ?)"; try (PreparedStatement ps = getConnection().prepareStatement(sql)) { ps.setString(1, lastName.trim()); ps.setString(2, firstName.trim()); ps.setString(3, patronymic == null ? null : patronymic.trim()); ps.setInt(4, work_experience); ps.setString(5, phone.trim()); ps.executeUpdate(); return null; } catch (SQLException e) { return "Ошибка добавления: " + e.getMessage(); } } public String update(int id, String lastName, String firstName, String patronymic, int work_experience, String phone) { if (!Validator.isValidName(lastName)) { return "Фамилия должна состоять только из букв."; } if (!Validator.isValidName(firstName)) { return "Имя должно состоять только из букв."; } if (patronymic != null && !patronymic.trim().isEmpty() && !Validator.isValidName(patronymic)) { return "Отчество должно состоять только из букв."; } if (!Validator.isValidExperience(work_experience)) { return "Стаж должен быть числом от 0 до 80."; } if (!Validator.isValidPhone(phone)) { return "Телефон должен быть в формате +7XXXXXXXXXX."; } if (lastName.trim().isEmpty() || firstName.trim().isEmpty()) { return "Фамилия и имя обязательны."; } String sql = "UPDATE teachers SET last_name = ?, first_name = ?, " + "patronymic = ?, work_experience = ?, phone_number = ? WHERE teacher_id = ?"; try (PreparedStatement ps = getConnection().prepareStatement(sql)) { ps.setString(1, lastName.trim()); ps.setString(2, firstName.trim()); ps.setString(3, patronymic == null ? null : patronymic.trim()); ps.setInt(4, work_experience); ps.setString(5, phone.trim()); ps.setInt(6, id); ps.executeUpdate(); return null; } catch (SQLException e) { return "Ошибка изменения: " + e.getMessage(); } } public String delete(int id) { String sql = "DELETE FROM teachers WHERE teacher_id = ?"; try (PreparedStatement ps = getConnection().prepareStatement(sql)) { ps.setInt(1, id); ps.executeUpdate(); return null; } catch (SQLException e) { return "Не удалось удалить (возможно, преподаватель используется): " + e.getMessage(); } } }