package controller; import model.Professor; import model.Faculty; import model.Subject; import model.University; import service.ProfessorService; import service.FacultyService; import service.SubjectService; import service.UniversityService; import service.impl.ProfessorServiceImpl; import service.impl.FacultyServiceImpl; import service.impl.SubjectServiceImpl; import service.impl.UniversityServiceImpl; import javax.servlet.RequestDispatcher; 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.List; //@WebServlet("/professor/*") public class ProfessorServlet extends HttpServlet { private static final long serialVersionUID = 1L; private final ProfessorService professorService = new ProfessorServiceImpl(); private final SubjectService subjectService = new SubjectServiceImpl(); private final service.ProfessorSubjectService profSubService = new service.impl.ProfessorSubjectServiceImpl(); private final FacultyService facultyService = new FacultyServiceImpl(); private final UniversityService universityService = new UniversityServiceImpl(); @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": insertProfessor(request, response); break; case "/delete": deleteProfessor(request, response); break; case "/edit": showEditForm(request, response); break; case "/update": updateProfessor(request, response); break; case "/list": default: listProfessor(request, response); break; } } catch (SQLException e) { throw new ServletException("Database error in ProfessorServlet", e); } } private void listProfessor(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException, SQLException { List professors = professorService.getAllProfessors(); request.setAttribute("listProfessor", professors); request.getRequestDispatcher("/pages/professor-list.jsp").forward(request, response); } private void showNewForm(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException, SQLException { List faculties = facultyService.getAllFaculty(); List universities = universityService.getAllUniversities(); request.setAttribute("faculties", faculties); request.setAttribute("universities", universities); request.getRequestDispatcher("/pages/professor-form.jsp").forward(request, response); } private void showEditForm(HttpServletRequest request, HttpServletResponse response) throws SQLException, ServletException, IOException { Long id = Long.parseLong(request.getParameter("id")); Professor existingProfessor = professorService.getById(id); if (existingProfessor == null) { response.sendError(HttpServletResponse.SC_NOT_FOUND, "Professor not found"); return; } List taughtSubjects = profSubService.getSubjectsForProfessor(id); List allSubjects = subjectService.getAllSubjects(); List faculties = facultyService.getAllFaculty(); List universities = universityService.getAllUniversities(); request.setAttribute("professor", existingProfessor); request.setAttribute("taughtSubjects", taughtSubjects); request.setAttribute("allSubjectsList", allSubjects); request.setAttribute("faculties", faculties); request.setAttribute("universities", universities); request.getRequestDispatcher("/pages/professor-form.jsp").forward(request, response); } private void insertProfessor(HttpServletRequest request, HttpServletResponse response) throws SQLException, IOException { Professor professor = parseProfessorFromRequest(request); professorService.save(professor); response.sendRedirect(request.getContextPath() + "/professor/list"); } private void updateProfessor(HttpServletRequest request, HttpServletResponse response) throws SQLException, IOException { Long id = Long.parseLong(request.getParameter("id")); Professor professor = parseProfessorFromRequest(request); professor.setId(id); professorService.update(professor); response.sendRedirect(request.getContextPath() + "/professor/list"); } private void deleteProfessor(HttpServletRequest request, HttpServletResponse response) throws SQLException, IOException { Long id = Long.parseLong(request.getParameter("id")); professorService.delete(id); response.sendRedirect(request.getContextPath() + "/professor/list"); } private Professor parseProfessorFromRequest(HttpServletRequest request) { String name = request.getParameter("name"); String surname = request.getParameter("surname"); int age = Integer.parseInt(request.getParameter("age")); long facultyid = Long.parseLong(request.getParameter("facultyid")); String universityIdStr = request.getParameter("universityId"); University university = new University(); if (universityIdStr != null && !universityIdStr.isEmpty()) { university.setId(Long.parseLong(universityIdStr)); } return new Professor(null, name, surname, age, facultyid, university); } }