Add MenuHeadServlet.java

This commit is contained in:
Paramita Pahari 2025-03-22 14:32:55 +00:00
parent ca4186826b
commit 41f0a65092

168
MenuHeadServlet.java Normal file
View File

@ -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("<!DOCTYPE html>");
out.println("<html>");
out.println("<head>");
out.println("<title>Servlet MenuHeadServlet</title>");
out.println("</head>");
out.println("<body>");
out.println("<h1>Servlet MenuHeadServlet at " + request.getContextPath() + "</h1>");
out.println("</body>");
out.println("</html>");
}
}
@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<String, Object> responseData = new HashMap<>();
Map<String, List<Map<String, String>>> 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<String, String> 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";
}// </editor-fold>
}