/
eelamimi
/
SberJavaCourseBeginner
Обзор
Документация
Войти
/
eelamimi
/
SberJavaCourseBeginner
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
Аналитика
Безопасность
master
hw5/src/main/java/courseSber/repositories/CoursesRepository.java
180 строк
6 KB
glebka
fixed bugs
19 апр 2025, 15:26
19 апр 2025, 15:26
f35dbdc
Код
Авторство
О чём код?
package courseSber.repositories; import courseSber.enums.FieldsOfCourse; import courseSber.models.Course; import courseSber.utils.*; import java.sql.*; import java.util.*; import static courseSber.utils.GetRS.getCourseFromResultSet; import static courseSber.utils.SetPS.setCourseForPreparedStatement; public class CoursesRepository { public List<Course> findAll() { String sql = "SELECT * FROM courses " + "INNER JOIN teachers ON courses.teacher_course = teachers.contract_teacher"; List<Course> courses = new ArrayList<>(); try (PreparedStatement ps = DBConnector.getConnection().prepareStatement(sql); ResultSet rs = ps.executeQuery()) { while (rs.next()) { Course course = getCourseFromResultSet(rs); courses.add(course); } } catch (SQLException e) { System.out.println("Ошибка при получении курсов: " + e.getMessage()); e.printStackTrace(); return null; } if (courses.isEmpty()) { return null; } else { return courses; } } public List<Course> findByField(String value, FieldsOfCourse field) { String sql = "SELECT * FROM courses " + "INNER JOIN teachers ON courses.teacher_course = teachers.contract_teacher " + "WHERE " + field + " = ?"; List<Course> courses = new ArrayList<>(); try (PreparedStatement ps = DBConnector.getConnection().prepareStatement(sql)) { switch (field) { case ID_COURSE -> ps.setObject(1, UUID.fromString(value)); default -> ps.setString(1, value); } try (ResultSet rs = ps.executeQuery()) { while (rs.next()) { Course course = getCourseFromResultSet(rs); courses.add(course); } } } catch (SQLException e) { System.out.println("Ошибка при получении курсов: " + e.getMessage()); e.printStackTrace(); return null; } if (courses.isEmpty()) { return null; } else { return courses; } } public boolean save(Course course) { if (CheckInDB.teacherNotInDB(course)) { return false; } String sql = "INSERT INTO courses (id_course, title_course, description_course, teacher_course) VALUES (?, ?, ?, ?)"; try (PreparedStatement ps = DBConnector.getConnection().prepareStatement(sql)) { setCourseForPreparedStatement(course, ps); ps.executeUpdate(); return true; } catch (SQLException e) { if (e.getErrorCode() == 1062) { System.out.println("Такой курс уже есть в базе данных"); } else { System.out.println("Ошибка при добавлении курса: " + e.getMessage()); } return false; } } public boolean save(List<Course> courses) { if (CheckInDB.teachersNotInDB(courses)) { return false; } String sql = "INSERT INTO courses (id_course, title_course, description_course, teacher_course) VALUES (?, ?, ?, ?)"; try (PreparedStatement ps = DBConnector.getConnection().prepareStatement(sql)) { for (Course course : courses) { setCourseForPreparedStatement(course, ps); ps.addBatch(); } ps.executeBatch(); return true; } catch (SQLException e) { System.out.println("Ошибка при добавлении курсов: " + e.getMessage()); return false; } } public boolean delete(Course course) { String sql = "DELETE FROM courses WHERE id_course = ?"; try (PreparedStatement ps = DBConnector.getConnection().prepareStatement(sql)) { ps.setObject(1, course.getId()); return ps.executeUpdate() > 0; } catch (SQLException e) { System.out.println("Ошибка при удалении курса: " + e.getMessage()); return false; } } public boolean delete(List<Course> courses) { if (courses.isEmpty()) { return false; } String sql = "DELETE FROM courses WHERE id_course = ?"; try (PreparedStatement ps = DBConnector.getConnection().prepareStatement(sql)) { for (Course course : courses) { ps.setObject(1, course.getId()); ps.addBatch(); } ps.executeBatch(); return true; } catch (SQLException e) { System.out.println("Ошибка при удалении курсов: " + e.getMessage()); return false; } } public boolean update(Course course, String value, FieldsOfCourse field) { if (CheckInDB.teacherNotInDB(course)) { return false; } if (field == FieldsOfCourse.TEACHER_COURSE) { if (CheckInDB.teacherNotInDB(value)) { return false; } if (CheckInDB.teacherUniqueCourses(value)) { return false; } } String sql = "UPDATE courses SET " + field + " = ? WHERE id_course = ?"; try (PreparedStatement ps = DBConnector.getConnection().prepareStatement(sql)) { ps.setString(1, value); ps.setObject(2, course.getId()); int rowsAffected = ps.executeUpdate(); if (rowsAffected > 0) { switch (field) { case ID_COURSE -> course.setId(UUID.fromString(value)); case TITLE_COURSE -> course.setTitle(value); case DESCRIPTION_COURSE -> course.setDescription(value); case TEACHER_COURSE -> course.setTeacher((new TeachersRepository()).findByContract(value)); } return true; } else { return false; } } catch (SQLException e) { System.out.println("Ошибка при обновлении курса: " + e.getMessage()); e.printStackTrace(); return false; } } }