package controller; import DAO.impl.StudentSubjectDAOImpl; import model.StudentSubject; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.IOException; import java.sql.SQLException; import java.time.LocalDate; import java.util.List; @WebServlet("/enrollment/*") public class StudentSubjectServlet extends HttpServlet { private final StudentSubjectDAOImpl dao = new StudentSubjectDAOImpl(); @Override protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { String action = request.getPathInfo(); try { switch (action) { case "/insert": insertEnrollment(request, response); break; case "/update": updateEnrollment(request, response); break; } } catch (SQLException e) { throw new ServletException(e); } } @Override protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { String action = request.getPathInfo(); if (action == null) action = "/list"; try { switch (action) { case "/new": showNewForm(request, response); break; case "/edit": showEditForm(request, response); break; case "/delete": deleteEnrollment(request, response); break; case "/list": default: listEnrollments(request, response); break; } } catch (SQLException e) { throw new ServletException(e); } } private void listEnrollments(HttpServletRequest request, HttpServletResponse response) throws SQLException, ServletException, IOException { List list = dao.getAll(); request.setAttribute("enrollments", list); request.getRequestDispatcher("/pages/enrollment-list.jsp").forward(request, response); } private void showNewForm(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // Just forward to form; fields will be empty/default request.getRequestDispatcher("/pages/enrollment-form.jsp").forward(request, response); } private void showEditForm(HttpServletRequest request, HttpServletResponse response) throws SQLException, ServletException, IOException { Long ss_id = Long.parseLong(request.getParameter("ss_id")); StudentSubject existing = dao.getById(ss_id); request.setAttribute("enrollment", existing); request.getRequestDispatcher("/pages/enrollment-form.jsp").forward(request, response); } private void insertEnrollment(HttpServletRequest request, HttpServletResponse response) throws SQLException, IOException { Long student_id = Long.parseLong(request.getParameter("student_id")); Long subject_id = Long.parseLong(request.getParameter("subject_id")); int absences = Integer.parseInt(request.getParameter("absences_count")); StudentSubject ss = new StudentSubject(student_id, subject_id, LocalDate.now(), absences, "ENROLLED"); dao.save(ss); response.sendRedirect(request.getContextPath() + "/enrollment/list"); } private void updateEnrollment(HttpServletRequest request, HttpServletResponse response) throws SQLException, IOException { Long ss_id = Long.parseLong(request.getParameter("ss_id")); String status = request.getParameter("status"); int absences = Integer.parseInt(request.getParameter("absences_count")); String gradeStr = request.getParameter("final_grade"); Integer final_grade = (gradeStr != null && !gradeStr.isEmpty()) ? Integer.parseInt(gradeStr) : null; StudentSubject ss = new StudentSubject(); ss.setSs_id(ss_id); ss.setStatus(status); ss.setAbsences_count(absences); ss.setFinal_grade(final_grade); dao.update(ss); response.sendRedirect(request.getContextPath() + "/enrollment/list"); } private void deleteEnrollment(HttpServletRequest request, HttpServletResponse response) throws SQLException, IOException { Long ss_id = Long.parseLong(request.getParameter("ss_id")); dao.delete(ss_id); response.sendRedirect(request.getContextPath() + "/enrollment/list"); } }