Dashboard
+Total Users
+10,234
+New Posts Today
+156
+Active Users
+8,742
+Users Management
+| User Id | +Role | +Name | + +
|---|---|---|
| ${user.user_id} | +${user.role} | +${user.first_name} ${user.last_name} | +
GET and POST
+ * methods.
+ *
+ * @param request servlet request
+ * @param response servlet response
+ * @throws ServletException if a servlet-specific error occurs
+ * @throws IOException if an I/O error occurs
+ */
+ protected void processRequest(HttpServletRequest request, HttpServletResponse response)
+ throws ServletException, IOException {
+ response.setContentType("text/html;charset=UTF-8");
+ try (PrintWriter out = response.getWriter()) {
+ /* TODO output your page here. You may use following sample code. */
+ out.println("");
+ out.println("");
+ out.println("");
+ out.println("GET method.
+ *
+ * @param request servlet request
+ * @param response servlet response
+ * @throws ServletException if a servlet-specific error occurs
+ * @throws IOException if an I/O error occurs
+ */
+ @Override
+ protected void doGet(HttpServletRequest request, HttpServletResponse response)
+ throws ServletException, IOException {
+ processRequest(request, response);
+ }
+
+ /**
+ * Handles the HTTP POST method.
+ *
+ * @param request servlet request
+ * @param response servlet response
+ * @throws ServletException if a servlet-specific error occurs
+ * @throws IOException if an I/O error occurs
+ */
+ @Override
+ protected void doPost(HttpServletRequest request, HttpServletResponse response)
+ throws ServletException, IOException {
+ String type = request.getParameter("type");
+ int id = Integer.parseInt(request.getParameter("idtype"));
+ int userId = Integer.parseInt(request.getParameter("userId"));
+ postDAO postDAO = new postDAO();
+ UserActivityDAO useractivitydao=new UserActivityDAO();
+ if (type.equals("Post")) {
+ Logger.getLogger(userpageServlet.class.getName()).info("try to delete post");
+
+ try {
+ useractivitydao.deleteUserActivityByPostId(id);
+ postDAO.deletePost(id);
+ Logger.getLogger(userpageServlet.class.getName()).info("delete post complete");
+ } catch (Exception ex) {
+ Logger.getLogger(userpageServlet.class.getName()).log(Level.SEVERE, null, ex);
+ }
+
+ response.sendRedirect("log?id="+userId);
+ }
+ if (type.equals("Comment")){
+ Logger.getLogger(userpageServlet.class.getName()).info("try to delete comment");
+ try {
+ useractivitydao.deleteUserActivityByCommentId(id);
+ postDAO.deleteComment(id);
+ Logger.getLogger(userpageServlet.class.getName()).info("delete comment complete");
+ } catch (Exception ex) {
+ Logger.getLogger(userpageServlet.class.getName()).log(Level.SEVERE, null, ex);
+ }
+ response.sendRedirect("log?id="+userId);
+ }
+ }
+
+ /**
+ * Returns a short description of the servlet.
+ *
+ * @return a String containing servlet description
+ */
+ @Override
+ public String getServletInfo() {
+ return "Short description";
+ }// GET and POST
+ * methods.
+ *
+ * @param request servlet request
+ * @param response servlet response
+ * @throws ServletException if a servlet-specific error occurs
+ * @throws IOException if an I/O error occurs
+ */
+ protected void processRequest(HttpServletRequest request, HttpServletResponse response)
+ throws ServletException, IOException {
+ response.setContentType("text/html;charset=UTF-8");
+ try (PrintWriter out = response.getWriter()) {
+ /* TODO output your page here. You may use following sample code. */
+ out.println("");
+ out.println("");
+ out.println("");
+ out.println("GET method.
+ *
+ * @param request servlet request
+ * @param response servlet response
+ * @throws ServletException if a servlet-specific error occurs
+ * @throws IOException if an I/O error occurs
+ */
+ @Override
+ protected void doGet(HttpServletRequest request, HttpServletResponse response)
+ throws ServletException, IOException {
+ Integer id=Integer.parseInt( request.getParameter("id"));
+ String action=request.getParameter("action");
+ AdminDAO dao=new AdminDAO();
+ if (action.equalsIgnoreCase("ban")){
+ dao.updateUserBanStatus(id, true);
+ }
+ else dao.updateUserBanStatus(id, false);
+ request.getRequestDispatcher("log?id="+id).forward(request, response);
+ }
+
+ /**
+ * Handles the HTTP POST method.
+ *
+ * @param request servlet request
+ * @param response servlet response
+ * @throws ServletException if a servlet-specific error occurs
+ * @throws IOException if an I/O error occurs
+ */
+ @Override
+ protected void doPost(HttpServletRequest request, HttpServletResponse response)
+ throws ServletException, IOException {
+ processRequest(request, response);
+ }
+
+ /**
+ * Returns a short description of the servlet.
+ *
+ * @return a String containing servlet description
+ */
+ @Override
+ public String getServletInfo() {
+ return "Short description";
+ }// GET and POST
@@ -77,12 +74,13 @@ protected void doGet(HttpServletRequest request, HttpServletResponse response)
String usersConversationId = request.getParameter("usersConversationId");
String messagesConversationId = request.getParameter("messagesConversationId");
String conversationKeyword = request.getParameter("conversationKeyword");
- String json = "Must have username or conversation id as request param";
+ String json = "";
+ ConversationService conversationService = ConversationService.getInstance();
ObjectMapper objectMapper = new ObjectMapper();
try {
if (conversationKeyword != null && !conversationKeyword.isEmpty() && user_id != null && !user_id.isEmpty()) {
-
+ LOGGER.info("Fetching conversations by keyword for user");
ListGET and POST
+ * methods.
+ *
+ * @param request servlet request
+ * @param response servlet response
+ * @throws ServletException if a servlet-specific error occurs
+ * @throws IOException if an I/O error occurs
+ */
+ protected void processRequest(HttpServletRequest request, HttpServletResponse response)
+ throws ServletException, IOException {
+ response.setContentType("text/html;charset=UTF-8");
+ try (PrintWriter out = response.getWriter()) {
+ /* TODO output your page here. You may use following sample code. */
+ out.println("");
+ out.println("");
+ out.println("");
+ out.println("GET method.
+ *
+ * @param request servlet request
+ * @param response servlet response
+ * @throws ServletException if a servlet-specific error occurs
+ * @throws IOException if an I/O error occurs
+ */
+ @Override
+ protected void doGet(HttpServletRequest request, HttpServletResponse response)
+ throws ServletException, IOException {
+ processRequest(request, response);
+ }
+
+ /**
+ * Handles the HTTP POST method.
+ *
+ * @param request servlet request
+ * @param response servlet response
+ * @throws ServletException if a servlet-specific error occurs
+ * @throws IOException if an I/O error occurs
+ */
+ private String getFileName(Part part) {
+ String contentDisp = part.getHeader("content-disposition");
+ String[] tokens = contentDisp.split(";");
+
+ for (String token : tokens) {
+ if (token.trim().startsWith("filename")) {
+ return token.substring(token.indexOf("=") + 2, token.length() - 1);
+ }
+ }
+ return "";
+ }
+
+ @Override
+ protected void doPost(HttpServletRequest request, HttpServletResponse response)
+ throws ServletException, IOException {
+ request.setCharacterEncoding("UTF-8");
+
+ HttpSession session = request.getSession(false);
+ if (session != null && session.getAttribute("user") != null) {
+ logger.info("User session found. Proceeding with file upload.");
+ User user = (User) session.getAttribute("user");
+ int userId = user.getUser_id();
+
+ String name = request.getParameter("name");
+ String description = request.getParameter("description");
+ if(description==null){
+ response.sendRedirect("ngu");
+return;
+ }
+ Part filePart = request.getPart("context");
+ String context = getFileName(filePart);
+ String subjectCode = request.getParameter("subjectCode");
+ String departmentIdStr = request.getParameter("departmentId");
+ String review = request.getParameter("review");
+
+ try {
+ InputStream inputStream = filePart.getInputStream();
+ logger.info("Uploading file to Dropbox: " + context);
+ client.files().uploadBuilder("/" + context)
+ .withMode(WriteMode.OVERWRITE)
+ .uploadAndFinish(inputStream);
+ logger.info("File uploaded successfully.");
+
+ } catch (Exception e) {
+ logger.info("Error uploading file to Dropbox");
+ response.sendRedirect("lmaterialLink");
+return;
+ }
+
+ int departmentId;
+ try {
+ departmentId = Integer.parseInt(departmentIdStr);
+ logger.info("Parsed department ID: " + departmentId);
+ } catch (NumberFormatException e) {
+ response.sendRedirect("lmaterialLink");
+ return;
+ }
+
+ Date publishDate = new Date();
+
+ LearningMaterial learningMaterial = new LearningMaterial(0, userId, name, description, context, subjectCode, publishDate, review, departmentId);
+
+ learningMaterialDao dao = new learningMaterialDao();
+ try {
+ dao.createLearningMaterial(learningMaterial);
+ logger.info("Learning material created successfully.");
+ request.setAttribute("successMessage", "Learning Material created successfully");
+ response.sendRedirect("lmaterialLink");
+ } catch (Exception e) {
+ e.printStackTrace();
+ request.setAttribute("errorMessage", "Error creating learning material");
+ response.sendRedirect("lmaterialLink");
+ }
+ } else {
+ response.sendRedirect("login.jsp"); // Redirect to login page if user is not logged in
+ }
+ }
+
+ /**
+ * Returns a short description of the servlet.
+ *
+ * @return a String containing servlet description
+ */
+ @Override
+ public String getServletInfo() {
+ return "Short description";
+ }// GET and POST
+ * methods.
+ *
+ * @param request servlet request
+ * @param response servlet response
+ * @throws ServletException if a servlet-specific error occurs
+ * @throws IOException if an I/O error occurs
+ */
+ protected void processRequest(HttpServletRequest request, HttpServletResponse response)
+ throws ServletException, IOException {
+ response.setContentType("text/html;charset=UTF-8");
+ try (PrintWriter out = response.getWriter()) {
+ /* TODO output your page here. You may use following sample code. */
+ out.println("");
+ out.println("");
+ out.println("");
+ out.println("GET method.
+ *
+ * @param request servlet request
+ * @param response servlet response
+ * @throws ServletException if a servlet-specific error occurs
+ * @throws IOException if an I/O error occurs
+ */
+ @Override
+ protected void doGet(HttpServletRequest request, HttpServletResponse response)
+ throws ServletException, IOException {
+ String fileName= request.getParameter("name");
+
+ try {
+ response.setContentType("application/vnd.openxmlformats-officedocument.wordprocessingml.document");
+ response.setHeader("Content-Disposition", "attachment; filename=\"" + fileName + "\"");
+
+ client.files().downloadBuilder("/" + fileName)
+ .download(response.getOutputStream());
+
+ } catch (Exception e) {
+ logger.info( "Error downloading file " + fileName);
+
+ }
+
+ }
+
+ /**
+ * Handles the HTTP POST method.
+ *
+ * @param request servlet request
+ * @param response servlet response
+ * @throws ServletException if a servlet-specific error occurs
+ * @throws IOException if an I/O error occurs
+ */
+ @Override
+ protected void doPost(HttpServletRequest request, HttpServletResponse response)
+ throws ServletException, IOException {
+ processRequest(request, response);
+ }
+
+ /**
+ * Returns a short description of the servlet.
+ *
+ * @return a String containing servlet description
+ */
+ @Override
+ public String getServletInfo() {
+ return "Short description";
+ }// GET and POST
@@ -38,10 +45,10 @@ protected void processRequest(HttpServletRequest request, HttpServletResponse re
out.println("");
out.println("");
out.println("");
- out.println("POST method.
+ *
+ * @param request servlet request
+ * @param response servlet response
+ * @throws ServletException if a servlet-specific error occurs
+ * @throws IOException if an I/O error occurs
+ */
+ @Override
+ protected void doPost(HttpServletRequest request, HttpServletResponse response)
+ throws ServletException, IOException {
+
+ }
+
+ @Override
+ public String getServletInfo() {
+ return "Short description";
+ }//
+
+}
diff --git a/src/java/controller/LogServlet.java b/src/java/controller/LogServlet.java
new file mode 100644
index 0000000..88d2af4
--- /dev/null
+++ b/src/java/controller/LogServlet.java
@@ -0,0 +1,88 @@
+/*
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license
+ * Click nbfs://nbhost/SystemFileSystem/Templates/JSP_Servlet/Servlet.java to edit this template
+ */
+package controller;
+
+import java.io.IOException;
+import java.io.PrintWriter;
+import jakarta.servlet.ServletException;
+import jakarta.servlet.annotation.WebServlet;
+import jakarta.servlet.http.HttpServlet;
+import jakarta.servlet.http.HttpServletRequest;
+import jakarta.servlet.http.HttpServletResponse;
+
+/**
+ *
+ * @author Quocb
+ */
+@WebServlet("/log")
+public class LogServlet extends HttpServlet {
+
+ /**
+ * Processes requests for both HTTP GET and POST
+ * methods.
+ *
+ * @param request servlet request
+ * @param response servlet response
+ * @throws ServletException if a servlet-specific error occurs
+ * @throws IOException if an I/O error occurs
+ */
+ protected void processRequest(HttpServletRequest request, HttpServletResponse response)
+ throws ServletException, IOException {
+ response.setContentType("text/html;charset=UTF-8");
+ try (PrintWriter out = response.getWriter()) {
+ /* TODO output your page here. You may use following sample code. */
+ out.println("");
+ out.println("");
+ out.println("");
+ out.println("GET method.
+ *
+ * @param request servlet request
+ * @param response servlet response
+ * @throws ServletException if a servlet-specific error occurs
+ * @throws IOException if an I/O error occurs
+ */
+ @Override
+ protected void doGet(HttpServletRequest request, HttpServletResponse response)
+ throws ServletException, IOException {
+ String id=request.getParameter("id");
+ request.getRequestDispatcher("/WEB-INF/log.jsp?id="+id).forward(request, response);
+ }
+
+ /**
+ * Handles the HTTP POST method.
+ *
+ * @param request servlet request
+ * @param response servlet response
+ * @throws ServletException if a servlet-specific error occurs
+ * @throws IOException if an I/O error occurs
+ */
+ @Override
+ protected void doPost(HttpServletRequest request, HttpServletResponse response)
+ throws ServletException, IOException {
+ processRequest(request, response);
+ }
+
+ /**
+ * Returns a short description of the servlet.
+ *
+ * @return a String containing servlet description
+ */
+ @Override
+ public String getServletInfo() {
+ return "Short description";
+ }// Không tìm thấy kết quả
" + + "GET and POST
+ * methods.
+ *
+ * @param request servlet request
+ * @param response servlet response
+ * @throws ServletException if a servlet-specific error occurs
+ * @throws IOException if an I/O error occurs
+ */
+ protected void processRequest(HttpServletRequest request, HttpServletResponse response)
+ throws ServletException, IOException {
+ response.setContentType("text/html;charset=UTF-8");
+ try (PrintWriter out = response.getWriter()) {
+ /* TODO output your page here. You may use following sample code. */
+ out.println("");
+ out.println("");
+ out.println("");
+ out.println("GET method.
+ *
+ * @param request servlet request
+ * @param response servlet response
+ * @throws ServletException if a servlet-specific error occurs
+ * @throws IOException if an I/O error occurs
+ */
+ @Override
+ protected void doGet(HttpServletRequest request, HttpServletResponse response)
+ throws ServletException, IOException {
+ processRequest(request, response);
+ }
+
+ /**
+ * Handles the HTTP POST method.
+ *
+ * @param request servlet request
+ * @param response servlet response
+ * @throws ServletException if a servlet-specific error occurs
+ * @throws IOException if an I/O error occurs
+ */
+ @Override
+ protected void doPost(HttpServletRequest request, HttpServletResponse response)
+ throws ServletException, IOException {
+ response.setContentType("application/json");
+ HttpSession session = request.getSession(false);
+ int comment_id = Integer.parseInt(request.getParameter("commentId"));
+ UserActivityDAO useractivitydao=new UserActivityDAO();
+ postDAO postDAO = new postDAO();
+ try {
+ useractivitydao.deleteUserActivityByCommentId(comment_id);
+ postDAO.deleteComment(comment_id);
+ response.getWriter().write("{\"success\": true}");
+ } catch (Exception ex) {
+ Logger.getLogger(userpageServlet.class.getName()).log(Level.SEVERE, null, ex);
+ response.getWriter().write("{\"success\": false}");
+ }
+ }
+
+ /**
+ * Returns a short description of the servlet.
+ *
+ * @return a String containing servlet description
+ */
+ @Override
+ public String getServletInfo() {
+ return "Short description";
+ }// GET and POST methods.
+ * @param request servlet request
+ * @param response servlet response
+ * @throws ServletException if a servlet-specific error occurs
+ * @throws IOException if an I/O error occurs
+ */
+ protected void processRequest(HttpServletRequest request, HttpServletResponse response)
+ throws ServletException, IOException {
+ response.setContentType("text/html;charset=UTF-8");
+ try (PrintWriter out = response.getWriter()) {
+ /* TODO output your page here. You may use following sample code. */
+ out.println("");
+ out.println("");
+ out.println("");
+ out.println("GET method.
+ * @param request servlet request
+ * @param response servlet response
+ * @throws ServletException if a servlet-specific error occurs
+ * @throws IOException if an I/O error occurs
+ */
+ @Override
+ protected void doGet(HttpServletRequest request, HttpServletResponse response)
+ throws ServletException, IOException {
+ processRequest(request, response);
+ }
+
+ /**
+ * Handles the HTTP POST method.
+ * @param request servlet request
+ * @param response servlet response
+ * @throws ServletException if a servlet-specific error occurs
+ * @throws IOException if an I/O error occurs
+ */
+ @Override
+protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
+ HttpSession session = request.getSession(false);
+ if (session != null && session.getAttribute("user") != null) {
+ String idStr = request.getParameter("id");
+ User user = (User) session.getAttribute("user");
+
+ if (idStr == null) {
+ response.sendRedirect("lmaterialLink");
+ return;
+ }
+
+ int id;
+ try {
+ id = Integer.parseInt(idStr);
+ } catch (NumberFormatException e) {
+ response.sendRedirect("lmaterialLink");
+ return;
+ }
+
+ learningMaterialDao learningMaterialDao = new learningMaterialDao();
+ try {
+ LearningMaterial lm = learningMaterialDao.getLearningMaterialById(id);
+ if (lm != null && lm.getUserId() == user.getUser_id()) {
+ learningMaterialDao.deleteLearningMaterial(id);
+ request.setAttribute("successMessage", "Learning Material deleted successfully");
+ } else {
+ request.setAttribute("errorMessage", "You do not have permission to delete this learning material");
+ }
+ response.sendRedirect("lmaterialLink");
+ } catch (Exception e) {
+ e.printStackTrace();
+ request.setAttribute("errorMessage", "Error deleting learning material");
+ response.sendRedirect("lmaterialLink");
+ }
+ } else {
+ response.sendRedirect("WEB-INF/login.jsp");
+ }
+}
+ /**
+ * Returns a short description of the servlet.
+ * @return a String containing servlet description
+ */
+ @Override
+ public String getServletInfo() {
+ return "Short description";
+ }// GET and POST methods.
+ * @param request servlet request
+ * @param response servlet response
+ * @throws ServletException if a servlet-specific error occurs
+ * @throws IOException if an I/O error occurs
+ */
+ protected void processRequest(HttpServletRequest request, HttpServletResponse response)
+ throws ServletException, IOException {
+ response.setContentType("text/html;charset=UTF-8");
+ try (PrintWriter out = response.getWriter()) {
+ /* TODO output your page here. You may use following sample code. */
+ out.println("");
+ out.println("");
+ out.println("");
+ out.println("GET method.
+ * @param request servlet request
+ * @param response servlet response
+ * @throws ServletException if a servlet-specific error occurs
+ * @throws IOException if an I/O error occurs
+ */
+ @Override
+ protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
+ String departmentIdStr = request.getParameter("departmentId");
+ learningMaterialDao dao = new learningMaterialDao();
+ ListPOST method.
+ * @param request servlet request
+ * @param response servlet response
+ * @throws ServletException if a servlet-specific error occurs
+ * @throws IOException if an I/O error occurs
+ */
+ @Override
+ protected void doPost(HttpServletRequest request, HttpServletResponse response)
+ throws ServletException, IOException {
+ processRequest(request, response);
+ }
+
+ /**
+ * Returns a short description of the servlet.
+ * @return a String containing servlet description
+ */
+ @Override
+ public String getServletInfo() {
+ return "Short description";
+ }// GET and POST methods.
+ * @param request servlet request
+ * @param response servlet response
+ * @throws ServletException if a servlet-specific error occurs
+ * @throws IOException if an I/O error occurs
+ */
+ protected void processRequest(HttpServletRequest request, HttpServletResponse response)
+ throws ServletException, IOException {
+ response.setContentType("text/html;charset=UTF-8");
+ try (PrintWriter out = response.getWriter()) {
+ /* TODO output your page here. You may use following sample code. */
+ out.println("");
+ out.println("");
+ out.println("");
+ out.println("GET method.
+ * @param request servlet request
+ * @param response servlet response
+ * @throws ServletException if a servlet-specific error occurs
+ * @throws IOException if an I/O error occurs
+ */
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
@@ -28,4 +70,27 @@ protected void doGet(HttpServletRequest request, HttpServletResponse response)
request.getRequestDispatcher("WEB-INF/LearningMaterial.jsp").forward(request, response);
// chuyển hướng đến lmaterial.jsp
}
-}
\ No newline at end of file
+
+ /**
+ * Handles the HTTP POST method.
+ * @param request servlet request
+ * @param response servlet response
+ * @throws ServletException if a servlet-specific error occurs
+ * @throws IOException if an I/O error occurs
+ */
+ @Override
+ protected void doPost(HttpServletRequest request, HttpServletResponse response)
+ throws ServletException, IOException {
+ processRequest(request, response);
+ }
+
+ /**
+ * Returns a short description of the servlet.
+ * @return a String containing servlet description
+ */
+ @Override
+ public String getServletInfo() {
+ return "Short description";
+ }// GET and POST
- * methods.
- *
- * @param request servlet request
- * @param response servlet response
- * @throws ServletException if a servlet-specific error occurs
- * @throws IOException if an I/O error occurs
- */
- protected void processRequest(HttpServletRequest request, HttpServletResponse response)
- throws ServletException, IOException {
- response.setContentType("text/html;charset=UTF-8");
- try (PrintWriter out = response.getWriter()) {
- /* TODO output your page here. You may use following sample code. */
- out.println("");
- out.println("");
- out.println("");
- out.println("GET method.
- *
- * @param request servlet request
- * @param response servlet response
- * @throws ServletException if a servlet-specific error occurs
- * @throws IOException if an I/O error occurs
- */
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
+ LOGGER.info("Processing GET request");
HttpSession session = request.getSession(false);
+
if (session != null && session.getAttribute("user") != null) {
User currentUser = (User) session.getAttribute("user");
- ListPOST method.
- *
- * @param request servlet request
- * @param response servlet response
- * @throws ServletException if a servlet-specific error occurse
- * @throws IOException if an I/O error occurs
- */
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
+ LOGGER.info("Processing POST request");
HttpSession session = request.getSession(false);
- // -------------------------------------------------------------------------------------------------
if (session != null && session.getAttribute("user") != null) {
User user = (User) session.getAttribute("user");
+ LOGGER.info("User " + user.getUser_id() + " attempting to create post");
+
String body = request.getParameter("postContent");
- Part file = request.getPart("image");
+ Part filePart = request.getPart("image");
String sourceUrl = request.getParameter("sourceUrl");
- String image_path = file.getSubmittedFileName();
-// String uploadPath = "D:/fpt/prj301/project/FUNET_FINAL/FUNET/Downloads/FUNET/web/assets/post_image/" + image_path;
- String uploadPath = getServletContext().getRealPath("/assets/post_image/") + image_path;
- //E:\FUNET\FUNET\web\assets
- try {
+ String imageUrl = null;
+ String resourceType = null;
- FileOutputStream fos = new FileOutputStream(uploadPath);
- InputStream is = file.getInputStream();
+ if (filePart != null && filePart.getSize() > 0) {
+ String contentType = filePart.getContentType();
+ LOGGER.info("File upload detected with content type: " + contentType);
- byte[] data = new byte[is.available()];
- is.read(data);
- fos.write(data);
- fos.close();
- } catch (Exception e) {
- e.printStackTrace();
+ if (!ALLOWED_IMAGE_TYPES.contains(contentType) && !ALLOWED_VIDEO_TYPES.contains(contentType)) {
+ LOGGER.warning("Unsupported file type attempted: " + contentType);
+ request.setAttribute("error", "Unsupported file type");
+ response.sendRedirect(sourceUrl != null && sourceUrl.contains("profile") ? "profile" : "home");
+ return;
+ }
+
+ resourceType = ALLOWED_IMAGE_TYPES.contains(contentType) ? "image" : "video";
+
+ try {
+ File tempFile = File.createTempFile("upload_", filePart.getSubmittedFileName());
+ LOGGER.info("Created temporary file for upload: " + tempFile.getName());
+
+ try (InputStream inputStream = filePart.getInputStream(); FileOutputStream outputStream = new FileOutputStream(tempFile)) {
+ byte[] buffer = new byte[1024];
+ int bytesRead;
+ while ((bytesRead = inputStream.read(buffer)) != -1) {
+ outputStream.write(buffer, 0, bytesRead);
+ }
+ }
+
+ Map uploadResult = CloudinaryAPI.getInstance().uploader().upload(tempFile, ObjectUtils.asMap(
+ "resource_type", resourceType
+ ));
+ imageUrl = (String) uploadResult.get("url");
+ LOGGER.info("Successfully uploaded file to Cloudinary: " + imageUrl);
+
+ Files.deleteIfExists(tempFile.toPath());
+ LOGGER.info("Deleted temporary file: " + tempFile.getName());
+
+ } catch (Exception e) {
+ LOGGER.log(Level.SEVERE, "Error during file upload", e);
+ request.setAttribute("errorMessage", "Error uploading image");
+ response.sendRedirect("home");
+ return;
+ }
}
- if (!body.trim().equals("") || !image_path.equals("")) {
+ if (!body.trim().equals("") || imageUrl != null) {
Post post = new Post();
post.setUser_id(user.getUser_id());
post.setBody(body);
- post.setImage_path(image_path);
- postDAO PostDao = new postDAO();
+ post.setImage_path(imageUrl);
+ post.setType(resourceType);
+
try {
+ postDAO PostDao = new postDAO();
PostDao.addPost(post);
+ LOGGER.info("Successfully created new post for user " + user.getUser_id());
TimeUnit.SECONDS.sleep(2);
- if (sourceUrl != null && sourceUrl.contains("profile")) {
- response.sendRedirect("profile");
- } else {
- response.sendRedirect("home");
- }
+ response.sendRedirect(sourceUrl != null && sourceUrl.contains("profile") ? "profile" : "home");
+
} catch (Exception e) {
- e.printStackTrace();
+ LOGGER.log(Level.SEVERE, "Error saving post to database", e);
request.setAttribute("errorMessage", "Error saving post");
response.sendRedirect("home");
}
} else {
+ LOGGER.info("Empty post attempted - redirecting");
response.sendRedirect("home");
}
} else {
+ LOGGER.warning("Unauthorized post attempt - redirecting to home");
response.sendRedirect("home");
}
}
- /**
- * Returns a short description of the servlet.
- *
- * @return a String containing servlet description
- */
@Override
public String getServletInfo() {
- return "Short description";
+ return "Post management servlet handling creation and retrieval of posts";
}
}
diff --git a/src/java/controller/saveLearningMaterial.java b/src/java/controller/saveLearningMaterial.java
new file mode 100644
index 0000000..306b03b
--- /dev/null
+++ b/src/java/controller/saveLearningMaterial.java
@@ -0,0 +1,101 @@
+/*
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license
+ * Click nbfs://nbhost/SystemFileSystem/Templates/JSP_Servlet/Servlet.java to edit this template
+ */
+package controller;
+
+import com.google.gson.Gson;
+import dao.learningMaterialDao;
+import model.User;
+import java.io.IOException;
+import java.io.PrintWriter;
+import jakarta.servlet.ServletException;
+import jakarta.servlet.http.HttpServlet;
+import jakarta.servlet.http.HttpServletRequest;
+import jakarta.servlet.http.HttpServletResponse;
+import java.util.List;
+import model.LearningMaterial;
+
+/**
+ *
+ * @author gabri
+ */
+public class saveLearningMaterial extends HttpServlet {
+
+ /**
+ * Processes requests for both HTTP GET and POST
+ * methods.
+ *
+ * @param request servlet request
+ * @param response servlet response
+ * @throws ServletException if a servlet-specific error occurs
+ * @throws IOException if an I/O error occurs
+ */
+ protected void processRequest(HttpServletRequest request, HttpServletResponse response)
+ throws ServletException, IOException {
+ response.setContentType("text/html;charset=UTF-8");
+ try (PrintWriter out = response.getWriter()) {
+ /* TODO output your page here. You may use following sample code. */
+ out.println("");
+ out.println("");
+ out.println("");
+ out.println("GET method.
+ *
+ * @param request servlet request
+ * @param response servlet response
+ * @throws ServletException if a servlet-specific error occurs
+ * @throws IOException if an I/O error occurs
+ */
+ @Override
+protected void doGet(HttpServletRequest request, HttpServletResponse response)
+ throws ServletException, IOException {
+ User currentUser = (User) request.getSession().getAttribute("user");
+ learningMaterialDao dao = new learningMaterialDao();
+
+ try {
+ ListGET and POST methods.
+ * @param request servlet request
+ * @param response servlet response
+ * @throws ServletException if a servlet-specific error occurs
+ * @throws IOException if an I/O error occurs
+ */
+ protected void processRequest(HttpServletRequest request, HttpServletResponse response)
+ throws ServletException, IOException {
+ response.setContentType("text/html;charset=UTF-8");
+ try (PrintWriter out = response.getWriter()) {
+ /* TODO output your page here. You may use following sample code. */
+ out.println("");
+ out.println("");
+ out.println("");
+ out.println("GET method.
+ * @param request servlet request
+ * @param response servlet response
+ * @throws ServletException if a servlet-specific error occurs
+ * @throws IOException if an I/O error occurs
+ */
+ @Override
+ protected void doGet(HttpServletRequest request, HttpServletResponse response)
+ throws ServletException, IOException {
+ HttpSession session = request.getSession(false);
+ if (session != null && session.getAttribute("user") != null) {
+ User user = (User) session.getAttribute("user");
+ int userId = user.getUser_id();
+ postDAO dao = new postDAO();
+ ListPOST method.
+ * @param request servlet request
+ * @param response servlet response
+ * @throws ServletException if a servlet-specific error occurs
+ * @throws IOException if an I/O error occurs
+ */
+ @Override
+ protected void doPost(HttpServletRequest request, HttpServletResponse response)
+ throws ServletException, IOException {
+ HttpSession session = request.getSession(false);
+ if (session != null && session.getAttribute("user") != null) {
+ User user = (User) session.getAttribute("user");
+ int userId = user.getUser_id();
+ int postId = Integer.parseInt(request.getParameter("postId"));
+ postDAO dao = new postDAO();
+
+ try {
+ if (dao.isPostSavedByUser(userId, postId)) {
+ dao.unsavePost(userId, postId);
+ } else {
+ dao.savePost(userId, postId);
+ }
+ response.sendRedirect("home");
+ } catch (SQLException e) {
+ e.printStackTrace();
+ response.sendRedirect("home");
+ }
+ } else {
+ response.sendRedirect("login");
+ }
+ }
+
+
+ /**
+ * Returns a short description of the servlet.
+ * @return a String containing servlet description
+ */
+ @Override
+ public String getServletInfo() {
+ return "Short description";
+ }// GET and POST methods.
+ * @param request servlet request
+ * @param response servlet response
+ * @throws ServletException if a servlet-specific error occurs
+ * @throws IOException if an I/O error occurs
+ */
+ protected void processRequest(HttpServletRequest request, HttpServletResponse response)
+ throws ServletException, IOException {
+ response.setContentType("text/html;charset=UTF-8");
+ try (PrintWriter out = response.getWriter()) {
+ /* TODO output your page here. You may use following sample code. */
+ out.println("");
+ out.println("");
+ out.println("");
+ out.println("GET method.
+ * @param request servlet request
+ * @param response servlet response
+ * @throws ServletException if a servlet-specific error occurs
+ * @throws IOException if an I/O error occurs
+ */
+ @Override
+ protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
+ String keyword = request.getParameter("search-name");
+ learningMaterialDao dao = new learningMaterialDao();
+ ListPOST method.
+ * @param request servlet request
+ * @param response servlet response
+ * @throws ServletException if a servlet-specific error occurs
+ * @throws IOException if an I/O error occurs
+ */
+ @Override
+ protected void doPost(HttpServletRequest request, HttpServletResponse response)
+ throws ServletException, IOException {
+ processRequest(request, response);
+ }
+
+ /**
+ * Returns a short description of the servlet.
+ * @return a String containing servlet description
+ */
+ @Override
+ public String getServletInfo() {
+ return "Short description";
+ }// GET and POST methods.
+ * @param request servlet request
+ * @param response servlet response
+ * @throws ServletException if a servlet-specific error occurs
+ * @throws IOException if an I/O error occurs
+ */
+ protected void processRequest(HttpServletRequest request, HttpServletResponse response)
+ throws ServletException, IOException {
+ response.setContentType("text/html;charset=UTF-8");
+ try (PrintWriter out = response.getWriter()) {
+ /* TODO output your page here. You may use following sample code. */
+ out.println("");
+ out.println("");
+ out.println("");
+ out.println("GET method.
+ * @param request servlet request
+ * @param response servlet response
+ * @throws ServletException if a servlet-specific error occurs
+ * @throws IOException if an I/O error occurs
+ */
+ @Override
+ protected void doGet(HttpServletRequest request, HttpServletResponse response)
+ throws ServletException, IOException {
+ processRequest(request, response);
+ }
+
+ /**
+ * Handles the HTTP POST method.
+ * @param request servlet request
+ * @param response servlet response
+ * @throws ServletException if a servlet-specific error occurs
+ * @throws IOException if an I/O error occurs
+ */
+ @Override
+ protected void doPost(HttpServletRequest request, HttpServletResponse response)
+ throws ServletException, IOException {
+ response.setContentType("application/json");
+ HttpSession session = request.getSession(false);
+ if (session != null && session.getAttribute("user") != null){
+ String newComment = request.getParameter("newCommentText");
+ int commentId = Integer.parseInt(request.getParameter("commentId"));
+ if(!newComment.trim().isEmpty()){
+ Comment comment = new Comment();
+ comment.setComment_id(commentId);
+ comment.setComment_text(newComment);
+ postDAO PostDao = new postDAO();
+ try {
+ PostDao.updateComment(comment);
+ response.getWriter().write("{\"success\": true}");
+ } catch (Exception e) {
+ e.printStackTrace();
+ response.getWriter().write("{\"success\": false}");
+ }
+ } else {
+ response.getWriter().write("{\"success\": false}");
+ }
+ } else {
+ response.getWriter().write("{\"success\": false}");
+ }
+ }
+
+ /**
+ * Returns a short description of the servlet.
+ * @return a String containing servlet description
+ */
+ @Override
+ public String getServletInfo() {
+ return "Short description";
+ }// GET and POST
+ * methods.
+ *
+ * @param request servlet request
+ * @param response servlet response
+ * @throws ServletException if a servlet-specific error occurs
+ * @throws IOException if an I/O error occurs
+ */
+ protected void processRequest(HttpServletRequest request, HttpServletResponse response)
+ throws ServletException, IOException {
+ response.setContentType("text/html;charset=UTF-8");
+ try (PrintWriter out = response.getWriter()) {
+ /* TODO output your page here. You may use following sample code. */
+ out.println("");
+ out.println("");
+ out.println("");
+ out.println("GET method.
+ *
+ * @param request servlet request
+ * @param response servlet response
+ * @throws ServletException if a servlet-specific error occurs
+ * @throws IOException if an I/O error occurs
+ */
+ @Override
+ protected void doGet(HttpServletRequest request, HttpServletResponse response)
+ throws ServletException, IOException {
+ processRequest(request, response);
+ }
+
+ /**
+ * Handles the HTTP POST method.
+ *
+ * @param request servlet request
+ * @param response servlet response
+ * @throws ServletException if a servlet-specific error occurs
+ * @throws IOException if an I/O error occurs
+ */
+ @Override
+ protected void doPost(HttpServletRequest request, HttpServletResponse response)
+ throws ServletException, IOException {
+ HttpSession session = request.getSession(false);
+ if (session != null && session.getAttribute("user") != null) {
+ LOGGER.info("Starting to process post update request");
+ try {
+ String newBody = request.getParameter("newBody");
+ Part filePart = request.getPart("newImage");
+ int postId = Integer.parseInt(request.getParameter("postId"));
+ String resourceType = null;
+ if (filePart == null) {
+ LOGGER.warning("No file part found in request");
+
+ }
+
+ postDAO PostDao = new postDAO();
+ Post post = PostDao.getPostById(postId);
+ LOGGER.log(Level.INFO, "Updating post with ID: {0}", postId);
+ if (post == null) {
+ LOGGER.warning("Post not found with ID: " + postId);
+ session.setAttribute("errorMessage", "Post not found");
+ response.sendRedirect("profile");
+ return;
+ }
+
+ if (newBody != null && !newBody.trim().isEmpty()) {
+ post.setBody(newBody);
+ }
+
+ if (filePart != null && filePart.getSize() > 0) {
+ String contentType = filePart.getContentType();
+ LOGGER.info("File upload detected with content type: " + contentType);
+ if (!ALLOWED_IMAGE_TYPES.contains(contentType) && !ALLOWED_VIDEO_TYPES.contains(contentType)) {
+ LOGGER.warning("Unsupported file type attempted: " + contentType);
+ request.setAttribute("error", "Unsupported file type");
+ response.sendRedirect("profile");
+ return;
+ }
+ resourceType = ALLOWED_IMAGE_TYPES.contains(contentType) ? "image" : "video";
+ try {
+ LOGGER.info("Starting file upload process");
+ File tempFile = File.createTempFile("upload_", filePart.getSubmittedFileName());
+
+ try (InputStream inputStream = filePart.getInputStream(); FileOutputStream outputStream = new FileOutputStream(tempFile)) {
+ byte[] buffer = new byte[8192];
+ int bytesRead;
+ while ((bytesRead = inputStream.read(buffer)) != -1) {
+ outputStream.write(buffer, 0, bytesRead);
+ }
+ }
+
+ Map uploadResult = cloud.uploader().upload(tempFile, ObjectUtils.asMap(
+ "resource_type", resourceType
+ ));
+ String imageUrl = (String) uploadResult.get("url");
+ post.setImage_path(imageUrl);
+ post.setType(resourceType);
+ LOGGER.info("File upload with type "+ resourceType);
+ LOGGER.info("File uploaded successfully to Cloudinary");
+ Files.deleteIfExists(tempFile.toPath());
+ } catch (Exception e) {
+ LOGGER.log(Level.SEVERE, "Error uploading file", e);
+ e.printStackTrace();
+ session.setAttribute("errorMessage", "Error uploading image");
+ //response.sendRedirect("profile");
+ return;
+ }
+ }
+
+ PostDao.updatePost(post);
+ session.setAttribute("successMessage", "Post updated successfully");
+ LOGGER.info("Post updated successfully");
+ response.setContentType("text/plain");
+ response.getWriter().write("success");
+ // response.sendRedirect("profile");
+
+ } catch (Exception e) {
+ e.printStackTrace();
+ LOGGER.log(Level.SEVERE, "Error in doPost method", e);
+ session.setAttribute("errorMessage", "Error updating post: " + e.getMessage());
+ response.setContentType("text/plain");
+ response.getWriter().write("error: Invalid post ID");
+ // response.sendRedirect("profile");
+ }
+ } else {
+ response.sendRedirect("profile");
+ }
+ }
+
+ /**
+ * Returns a short description of the servlet.
+ *
+ * @return a String containing servlet description
+ */
+ @Override
+ public String getServletInfo() {
+ return "Short description";
+ }// GET and POST
+ * methods.
+ *
+ * @param request servlet request
+ * @param response servlet response
+ * @throws ServletException if a servlet-specific error occurs
+ * @throws IOException if an I/O error occurs
+ */
+ protected void processRequest(HttpServletRequest request, HttpServletResponse response)
+ throws ServletException, IOException {
+ response.setContentType("text/html;charset=UTF-8");
+ try (PrintWriter out = response.getWriter()) {
+ /* TODO output your page here. You may use following sample code. */
+ out.println("");
+ out.println("");
+ out.println("");
+ out.println("GET method.
+ *
+ * @param request servlet request
+ * @param response servlet response
+ * @throws ServletException if a servlet-specific error occurs
+ * @throws IOException if an I/O error occurs
+ */
+ @Override
+ protected void doGet(HttpServletRequest request, HttpServletResponse response)
+ throws ServletException, IOException {
+ processRequest(request, response);
+ }
+
+ /**
+ * Handles the HTTP POST method.
+ *
+ * @param request servlet request
+ * @param response servlet response
+ * @throws ServletException if a servlet-specific error occurs
+ * @throws IOException if an I/O error occurs
+ */
+ @Override
+ protected void doPost(HttpServletRequest request, HttpServletResponse response)
+ throws ServletException, IOException {
+ int postId = Integer.parseInt(request.getParameter("postId"));
+ String privacyMode = request.getParameter("privacyMode");
+ postDAO postDao = new postDAO();
+ postDao.updatePostPrivacy(postId, privacyMode);
+ response.sendRedirect("profile");
+ }
+
+ /**
+ * Returns a short description of the servlet.
+ *
+ * @return a String containing servlet description
+ */
+ @Override
+ public String getServletInfo() {
+ return "Short description";
+ }// GET and POST
+ * methods.
+ *
+ * @param request servlet request
+ * @param response servlet response
+ * @throws ServletException if a servlet-specific error occurs
+ * @throws IOException if an I/O error occurs
+ */
+ protected void processRequest(HttpServletRequest request, HttpServletResponse response)
+ throws ServletException, IOException {
+ response.setContentType("text/html;charset=UTF-8");
+ try (PrintWriter out = response.getWriter()) {
+ /* TODO output your page here. You may use following sample code. */
+ out.println("");
+ out.println("");
+ out.println("");
+ out.println("GET method.
+ *
+ * @param request servlet request
+ * @param response servlet response
+ * @throws ServletException if a servlet-specific error occurs
+ * @throws IOException if an I/O error occurs
+ */
+ @Override
+ protected void doGet(HttpServletRequest request, HttpServletResponse response)
+ throws ServletException, IOException {
+ processRequest(request, response);
+ }
+
+ /**
+ * Handles the HTTP POST method.
+ *
+ * @param request servlet request
+ * @param response servlet response
+ * @throws ServletException if a servlet-specific error occurs
+ * @throws IOException if an I/O error occurs
+ */
+ @Override
+ protected void doPost(HttpServletRequest request, HttpServletResponse response)
+ throws ServletException, IOException {
+ HttpSession session = request.getSession(false);
+ if (session != null && session.getAttribute("user") != null) {
+ User user = (User) session.getAttribute("user");
+ String newIntroduction = request.getParameter("userIntro");
+ if (newIntroduction != null && !newIntroduction.trim().isEmpty()) {
+ userDAO.getInstance().updateUserIntroduction(user.getUser_id(), newIntroduction);
+ user.setUser_introduce(newIntroduction);
+ response.sendRedirect("profile");
+ } else {
+ response.sendRedirect("profile");
+ }
+ } else {
+ response.sendRedirect("login");
+ }
+ }
+
+ /**
+ * Returns a short description of the servlet.
+ *
+ * @return a String containing servlet description
+ */
+ @Override
+ public String getServletInfo() {
+ return "Short description";
+ }// 10,234
+156
+8,742
+| User Id | +Role | +Name | + +
|---|---|---|
| ${user.user_id} | +${user.role} | +${user.first_name} ${user.last_name} | +
${material.learningMaterialDescription}
+Subject: ${material.subjectCode}
+Published on: ${material.publishDate}
+Review: ${material.review}
+ Download this document +