From 41f0a650922245bca8322e6feca7b72ba9be51e8 Mon Sep 17 00:00:00 2001 From: Paramita Pahari Date: Sat, 22 Mar 2025 14:32:55 +0000 Subject: [PATCH] Add MenuHeadServlet.java --- MenuHeadServlet.java | 168 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 168 insertions(+) create mode 100644 MenuHeadServlet.java diff --git a/MenuHeadServlet.java b/MenuHeadServlet.java new file mode 100644 index 0000000..86b8184 --- /dev/null +++ b/MenuHeadServlet.java @@ -0,0 +1,168 @@ +package Controller; + +import LoginDb.DbHandler; +import com.google.gson.Gson; +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; +import jakarta.servlet.http.HttpSession; +import java.sql.Connection; +import java.sql.PreparedStatement; +import java.sql.ResultSet; +import java.sql.SQLException; +import java.util.ArrayList; +import java.util.Collections; +import java.util.HashMap; +import java.util.LinkedHashMap; +import java.util.List; +import java.util.Map; +import java.util.logging.Level; +import java.util.logging.Logger; + +/** + * + * @author 1121947 + */ +//@WebServlet(name = "MenuHeadServlet", urlPatterns = {"/MenuHeadServlet"}) +public class MenuHeadServlet extends HttpServlet { + + protected void processRequest(HttpServletRequest request, HttpServletResponse response) + throws ServletException, IOException { + response.setContentType("text/html;charesultsetet=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("Servlet MenuHeadServlet"); + out.println(""); + out.println(""); + out.println("

Servlet MenuHeadServlet at " + request.getContextPath() + "

"); + out.println(""); + out.println(""); + } + } + + @Override + protected void doGet(HttpServletRequest request, HttpServletResponse response) + throws ServletException, IOException { + processRequest(request, response); + + HttpSession session = request.getSession(false); + + String user = (String) session.getAttribute("user"); + + String userRole =(String)session.getAttribute("userRole"); + System.out.println("User is :" + user); + + Map responseData = new HashMap<>(); + Map>> menuData = new LinkedHashMap<>(); // Main Menu → Submenus + + if (user == null) { + responseData.put("role", "Guest"); + responseData.put("screens", menuData); + response.getWriter().write(new Gson().toJson(responseData)); + return; + } + + Connection conn = null; + PreparedStatement preparedStatement = null; + ResultSet resultset = null; + + try { + + conn = DbHandler.getDBConnection(); + String Screen_details = "select SCREEN_NAME from ROLE_MANAGEMENT where ID =?"; + + preparedStatement = conn.prepareStatement(Screen_details); + preparedStatement.setString(1, user); + resultset = preparedStatement.executeQuery(); + + System.out.println("1st Result set: " +resultset); + + // String userRole = null; // Default role + while (resultset.next()) { + + String screenIds = resultset.getString("SCREEN_NAME"); + + System.out.println("Controller.MenuHeadServlet.doGet()" + userRole + " " + screenIds); + + if (screenIds != null && !screenIds.isEmpty()) { + + String[] screenArray = screenIds.split("#"); + + // Fetch corresponding JSP pages + String JSP_sql = "SELECT SC.SCREEN_ID, SC.JSP_PAGE, M.MENU_NAME " + + "FROM SCREENS SC " + + "JOIN MENUS M ON SC.MENU_ID = M.MENU_ID " + + "WHERE SC.SCREEN_ID IN (" + + String.join(",", Collections.nCopies(screenArray.length, "?")) + ") and SC.ROLE_ID IN (" + userRole + ")"; + + preparedStatement = conn.prepareStatement(JSP_sql); + + for (int i = 0; i < screenArray.length; i++) { + preparedStatement.setString(i + 1, screenArray[i]); + } + + resultset = preparedStatement.executeQuery(); + + while (resultset.next()) { + String menuName = resultset.getString("MENU_NAME"); + + System.out.println("Menu Name:" +menuName); + Map screenData = new HashMap<>(); + screenData.put("screenID", resultset.getString("SCREEN_ID")); + screenData.put("jspPage", resultset.getString("JSP_PAGE")); + + // Add to the correct menu category + menuData.computeIfAbsent(menuName, k -> new ArrayList<>()).add(screenData); + } + System.out.println("Menu Data :" +menuData); + } + } + + responseData.put("role", userRole); + responseData.put("menus", menuData); + System.out.println("Response :" +responseData); + + } catch (SQLException e) { + } finally { + try { + if (resultset != null) { + resultset.close(); + } + } catch (SQLException e) { + } + try { + if (preparedStatement != null) { + preparedStatement.close(); + } + } catch (SQLException e) { + } + try { + if (conn != null) { + conn.close(); + } + } catch (SQLException e) { + } + } + + response.getWriter().write(new Gson().toJson(responseData)); + } + + @Override + protected void doPost(HttpServletRequest request, HttpServletResponse response) + throws ServletException, IOException { + processRequest(request, response); + } + + @Override + public String getServletInfo() { + return "Short description"; + }// + +}