package controller; import DAO.AdviceDAO; import DAO.impl.AdviceDAOImpl; import DAO.impl.StudentDAOImpl; import DAO.impl.ProfessorDAOImpl; import model.Advice; import model.Student; import model.Professor; 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.Date; import java.sql.SQLException; import java.util.List; @WebServlet("/advice/*") public class AdviceServlet extends HttpServlet { private static final long serialVersionUID = 1L; private AdviceDAO adviceDAO; private StudentDAOImpl studentDAO; private ProfessorDAOImpl professorDAO; public void init() { adviceDAO = new AdviceDAOImpl(); studentDAO = new StudentDAOImpl(); professorDAO = new ProfessorDAOImpl(); } protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { doGet(request, response); } 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 "/insert": insertAdvice(request, response); break; case "/delete": deleteAdvice(request, response); break; case "/edit": showEditForm(request, response); break; case "/update": updateAdvice(request, response); break; default: listAdvice(request, response); break; } } catch (SQLException ex) { throw new ServletException(ex); } } private void listAdvice(HttpServletRequest request, HttpServletResponse response) throws SQLException, IOException, ServletException { List listAdvice = adviceDAO.getAll(); request.setAttribute("listAdvice", listAdvice); request.getRequestDispatcher("/pages/advice-list.jsp").forward(request, response); } private void showNewForm(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException, SQLException { // We need these lists to populate the dropdowns in the form List listStudents = studentDAO.getAll(); List listProfessors = professorDAO.getall(); request.setAttribute("listStudents", listStudents); request.setAttribute("listProfessors", listProfessors); request.getRequestDispatcher("/pages/advice-form.jsp").forward(request, response); } private void showEditForm(HttpServletRequest request, HttpServletResponse response) throws SQLException, ServletException, IOException { int studentId = Integer.parseInt(request.getParameter("studentId")); int professorId = Integer.parseInt(request.getParameter("professorId")); Advice existingAdvice = adviceDAO.getById(studentId, professorId); request.setAttribute("advice", existingAdvice); // Still need lists if we want to show who is being edited request.setAttribute("listStudents", studentDAO.getAll()); request.setAttribute("listProfessors", professorDAO.getall()); request.getRequestDispatcher("/pages/advice-form.jsp").forward(request, response); } private void insertAdvice(HttpServletRequest request, HttpServletResponse response) throws SQLException, IOException { int studentId = Integer.parseInt(request.getParameter("studentId")); int professorId = Integer.parseInt(request.getParameter("professorId")); String startStr = request.getParameter("startDate"); Date startDate; if (startStr == null || startStr.isEmpty()) { startDate = new Date(System.currentTimeMillis()); } else { startDate = Date.valueOf(startStr); } String endStr = request.getParameter("endDate"); Date endDate = (endStr != null && !endStr.isEmpty()) ? Date.valueOf(endStr) : null; Advice newAdvice = new Advice(studentId, professorId, startDate, endDate); adviceDAO.save(newAdvice); response.sendRedirect(request.getContextPath() + "/advice/list"); } private void updateAdvice(HttpServletRequest request, HttpServletResponse response) throws SQLException, IOException { int studentId = Integer.parseInt(request.getParameter("studentId")); int professorId = Integer.parseInt(request.getParameter("professorId")); Date startDate = Date.valueOf(request.getParameter("startDate")); String endStr = request.getParameter("endDate"); Date endDate = (endStr != null && !endStr.isEmpty()) ? Date.valueOf(endStr) : null; Advice advice = new Advice(studentId, professorId, startDate, endDate); adviceDAO.update(advice); response.sendRedirect(request.getContextPath() + "/advice/list"); } private void deleteAdvice(HttpServletRequest request, HttpServletResponse response) throws SQLException, IOException { int studentId = Integer.parseInt(request.getParameter("studentId")); int professorId = Integer.parseInt(request.getParameter("professorId")); adviceDAO.delete(studentId, professorId); response.sendRedirect(request.getContextPath() + "/advice/list"); } }