package controller; import model.Faculty; import model.Student; import model.Subject; import service.FacultyService; import service.ProfessorService; import service.StudentService; import service.SubjectService; import service.impl.FacultyServiceImpl; import service.impl.ProfessorServiceImpl; import service.impl.StudentServiceImpl; import service.impl.SubjectServiceImpl; 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.util.*; import java.util.stream.Collectors; //@WebServlet("/student/*") public class StudentServlet extends HttpServlet { private static final long serialVersionUID = 1L; private final StudentService studentService = new StudentServiceImpl(); private final FacultyService facultyService = new FacultyServiceImpl(); private final ProfessorService professorService = new ProfessorServiceImpl(); private final SubjectService subjectService = new SubjectServiceImpl(); @Override protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { doGet(request, response); } @Override protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { String action = request.getPathInfo(); if (action == null || action.equals("/")) { action = "/list"; } try { switch (action) { case "/new": showNewForm(request, response); break; case "/insert": insertStudent(request, response); break; case "/delete": deleteStudent(request, response); break; case "/edit": showEditForm(request, response); break; case "/update": updateStudent(request, response); break; case "/list": default: listStudent(request, response); break; } } catch (SQLException ex) { throw new ServletException("Database error: " + ex.getMessage(), ex); } } private void listStudent(HttpServletRequest request, HttpServletResponse response) throws SQLException, IOException, ServletException { List listStudent = studentService.getAllStudent(); request.setAttribute("listStudent", listStudent); request.getRequestDispatcher("/pages/student-list.jsp").forward(request, response); } private void showNewForm(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { try { request.setAttribute("faculties", facultyService.getAllFaculty()); request.setAttribute("allSubjects", subjectService.getAllSubjects()); request.getRequestDispatcher("/pages/student-form.jsp").forward(request, response); } catch (SQLException e) { response.sendError(HttpServletResponse.SC_INTERNAL_SERVER_ERROR); } } private void showEditForm(HttpServletRequest request, HttpServletResponse response) throws SQLException, ServletException, IOException { Long id = Long.parseLong(request.getParameter("id")); Student existingStudent = studentService.getById(id); if (existingStudent == null) { response.sendError(HttpServletResponse.SC_NOT_FOUND); return; } request.setAttribute("student", existingStudent); request.setAttribute("faculties", facultyService.getAllFaculty()); request.getRequestDispatcher("/pages/student-form.jsp").forward(request, response); } private void insertStudent(HttpServletRequest request, HttpServletResponse response) throws SQLException, IOException { Student student = parseStudentFromRequest(request); studentService.save(student); response.sendRedirect(request.getContextPath() + "/student/list"); } private void updateStudent(HttpServletRequest request, HttpServletResponse response) throws SQLException, IOException { Student student = parseStudentFromRequest(request); student.setId(Long.parseLong(request.getParameter("id"))); studentService.update(student); response.sendRedirect(request.getContextPath() + "/student/list"); } private void deleteStudent(HttpServletRequest request, HttpServletResponse response) throws SQLException, IOException { Long id = Long.parseLong(request.getParameter("id")); studentService.delete(id); response.sendRedirect(request.getContextPath() + "/student/list"); } private Student parseStudentFromRequest(HttpServletRequest request) { String name = request.getParameter("name"); String surname = request.getParameter("surname"); String location = request.getParameter("location"); int indeks = Integer.parseInt(request.getParameter("studentindex")); long facultyId = Long.parseLong(request.getParameter("facultyid")); return new Student(null, name, surname, location, indeks, facultyId); } }