source: src/main/java/controller/SubjectServlet.java@ 1eb7a55

Last change on this file since 1eb7a55 was 1eb7a55, checked in by Elena Markovska <elena.elenamarkovska@…>, 11 days ago

Initial commit - Scholaris project code

  • Property mode set to 100644
File size: 5.5 KB
RevLine 
[1eb7a55]1package controller;
2
3import java.io.IOException;
4import java.sql.SQLException;
5import java.util.List;
6import javax.servlet.RequestDispatcher;
7import javax.servlet.ServletException;
8import javax.servlet.annotation.WebServlet;
9import javax.servlet.http.HttpServlet;
10import javax.servlet.http.HttpServletRequest;
11import javax.servlet.http.HttpServletResponse;
12
13import model.Subject;
14import service.SubjectService;
15import service.impl.SubjectServiceImpl;
16
17//@WebServlet("/subject/*")
18public class SubjectServlet extends HttpServlet {
19 private static final long serialVersionUID = 1L;
20
21 private final SubjectService subjectService = new SubjectServiceImpl();
22 private final service.FacultyService facultyService = new service.impl.FacultyServiceImpl();
23
24 @Override
25 protected void doPost(HttpServletRequest request, HttpServletResponse response)
26 throws ServletException, IOException {
27 doGet(request, response);
28 }
29
30 @Override
31 protected void doGet(HttpServletRequest request, HttpServletResponse response)
32 throws ServletException, IOException {
33 String action = request.getPathInfo();
34 if (action == null || action.equals("/")) action = "/list";
35
36 try {
37 switch (action) {
38 case "/new":
39 showNewForm(request, response);
40 break;
41 case "/insert":
42 insertSubject(request, response);
43 break;
44 case "/delete":
45 deleteSubject(request, response);
46 break;
47 case "/edit":
48 showEditForm(request, response);
49 break;
50 case "/update":
51 updateSubject(request, response);
52 break;
53 case "/list":
54 default:
55 listSubjects(request, response);
56 break;
57 }
58 } catch (SQLException e) {
59 throw new ServletException("Database error in SubjectServlet", e);
60 }
61 }
62
63 private void listSubjects(HttpServletRequest request, HttpServletResponse response)
64 throws SQLException, ServletException, IOException {
65 List<Subject> subjects = subjectService.getAllSubjects();
66 request.setAttribute("listSubject", subjects);
67 request.getRequestDispatcher("/pages/subject-list.jsp").forward(request, response);
68 }
69
70 private void showNewForm(HttpServletRequest request, HttpServletResponse response)
71 throws ServletException, IOException, SQLException {
72 // 1. Fetch the list of faculties from the database
73 List<model.Faculty> faculties = facultyService.getAllFaculty();
74
75 // 2. Set it as an attribute named "listFaculty" (matching your c:forEach)
76 request.setAttribute("listFaculty", faculties);
77
78 // 3. Forward to the form
79 request.getRequestDispatcher("/pages/subject-form.jsp").forward(request, response);
80 }
81
82 private void showEditForm(HttpServletRequest request, HttpServletResponse response)
83 throws SQLException, ServletException, IOException {
84 Long id = Long.parseLong(request.getParameter("id"));
85 Subject subject = subjectService.getById(id);
86
87 if (subject == null) {
88 response.sendError(HttpServletResponse.SC_NOT_FOUND, "Subject not found");
89 return;
90 }
91
92 // 1. Fetch faculties so the dropdown appears
93 List<model.Faculty> faculties = facultyService.getAllFaculty();
94
95 // 2. Set both the subject and the faculty list
96 request.setAttribute("subject", subject);
97 request.setAttribute("listFaculty", faculties);
98
99 request.setAttribute("subject", subject);
100 request.getRequestDispatcher("/pages/subject-form.jsp").forward(request, response);
101 }
102
103 private void insertSubject(HttpServletRequest request, HttpServletResponse response)
104 throws SQLException, IOException {
105 String name = request.getParameter("name");
106 int semester = Integer.parseInt(request.getParameter("semester"));
107 int credits = Integer.parseInt(request.getParameter("credits"));
108
109 String facultyIdStr = request.getParameter("facultyid");
110 Long facultyId = (facultyIdStr != null) ? Long.parseLong(facultyIdStr) : null;
111
112 Subject subject = new Subject(null, name, semester, credits, facultyId);
113 subjectService.save(subject);
114
115 response.sendRedirect(request.getContextPath() + "/subject/list");
116 }
117
118 private void updateSubject(HttpServletRequest request, HttpServletResponse response)
119 throws SQLException, IOException {
120 Long id = Long.parseLong(request.getParameter("id"));
121 String name = request.getParameter("name");
122 int semester = Integer.parseInt(request.getParameter("semester"));
123 int credits = Integer.parseInt(request.getParameter("credits"));
124
125 String facultyIdStr = request.getParameter("facultyid");
126 Long facultyId = (facultyIdStr != null) ? Long.parseLong(facultyIdStr) : null;
127
128 Subject subject = new Subject(id, name, semester, credits, facultyId);
129 subjectService.update(subject);
130
131 response.sendRedirect(request.getContextPath() + "/subject/list");
132 }
133
134 private void deleteSubject(HttpServletRequest request, HttpServletResponse response)
135 throws SQLException, IOException {
136 Long id = Long.parseLong(request.getParameter("id"));
137 subjectService.delete(id);
138 response.sendRedirect(request.getContextPath() + "/subject/list");
139 }
140}
Note: See TracBrowser for help on using the repository browser.