package com.fitbank.web; import javax.servlet.ServletRequest; import javax.servlet.http.HttpSession; import com.fitbank.dto.management.Detail; import com.fitbank.dto.management.Field; import com.fitbank.dto.management.Record; import com.fitbank.dto.management.Table; public class MenuLoader { private DataManage dm; private ServletRequest request; private HttpSession session; private String context = ""; public MenuLoader(DataManage pDM, ServletRequest pRequest, HttpSession pSession) { this.dm = pDM; this.request = pRequest; this.session = pSession; this.context = (String) this.dm.getHttpSession().getAttribute("u_site"); if (this.context == null) { this.context = ""; } } public String getSubMenu() throws Exception { try { /* * String menuitem = this.request.getParameter("menuitem"); String * subsystem = this.request.getParameter("subsystem"); String level = * this.request.getParameter("level"); */ String menuitem = (String) this.session.getAttribute("_mmenuitem"); String subsystem = (String) this.session.getAttribute("_msubsystem"); String level = (String) this.session.getAttribute("_mLevel"); // System.out.println("Sub MEnu " + menuitem + " " + subsystem + " " + // level); Detail detail = new Detail(); this.dm.prepareHeaderData(detail, this.request); detail.setSubsystem("01"); detail.setTransaction("0001"); detail.setVersion("01"); detail.setType(MessageTypes.SIG.name()); detail.findFieldByNameCreate("MENUITEM").setValue(menuitem); detail.findFieldByNameCreate("SUBSISTEMA").setValue(subsystem); detail.findFieldByNameCreate("NIVEL").setValue(level); detail.findFieldByNameCreate("_SUBMENU_").setValue("1"); try { BussinessDelegate bd = new BussinessDelegate(); detail = bd.process(detail); } catch (Exception ex) { ; } this.session.setAttribute("_submenuD", detail); Table table = detail.findTableByName("TOOLBAR"); if (table == null) { return ""; } String items = "var menuItems = [\n"; for (Record record : table.getRecords()) { String code = (String) record.findFieldByNameCreate("CODE").getValue(); String name = (String) record.findFieldByNameCreate("NAME").getValue(); String page = (String) record.findFieldByNameCreate("PAGE").getValue(); String base = (String) record.findFieldByNameCreate("BASE").getValue(); String param = ""; if ((menuitem != null) && (subsystem == null) && (level == null)) { param = "menuitem=" + menuitem + "&subsystem=" + code; items += "[\"" + code + " " + name + "\",\"\",,,,,,,\"" + this.context + "/jsp/menu.jsp?" + param + "\",],\n"; } else if ((menuitem != null) && (subsystem != null) && (level == null)) { param = "menuitem=" + menuitem + "&subsystem=" + subsystem + "&level=" + code; items += "[\"" + name + "\",\"\",,,,,,,\"" + this.context + "/jsp/menu.jsp?" + param + "\",],\n"; } else if ((menuitem != null) && (subsystem != null) && (level != null)) { param = code; items += "[\"" + code + " " + name + "\",\"javascript:top.showPage('" + page + "','" + base + "','" + subsystem + "','" + code + "');\"],\n"; } } items = items + "];"; return items; } catch (Exception e) { e.printStackTrace(); throw e; } } public Detail query() throws Exception { Detail det = new Detail(); this.dm.prepareHeaderData(det, this.request); det.setSubsystem("01"); det.setTransaction("0001"); det.setVersion("01"); det.setType(MessageTypes.SIG.name()); BussinessDelegate bd = new BussinessDelegate(); Detail detail = bd.process(det); Field menu = detail.findFieldByNameCreate("MENU"); String value = "" + menu.getValue(); value = value.replaceAll("jsp\\/menu.jsp", "\\" + this.context + "\\/" + "jsp\\/menu.jsp"); detail.addTable(this.transformMenu(value)); menu.setValue(value); return detail; } private Table transformMenu(String pData) throws Exception { String menu[] = pData.split("\\]"); pData = ""; for (String str : menu) { if (str.indexOf(",,,,,,,") < 0) { continue; } pData += str.replaceAll("\"", ""); } menu = pData.split("\\["); Table tbl = new Table("menudata", "menudata"); for (String str : menu) { if (str.indexOf(",,,,,,,") < 0) { continue; } String[] tmp = str.split(","); String[] tmp1 = tmp[8].split("="); Record rec = new Record(); rec.findFieldByNameCreate("DES").setValue(tmp[0]); rec.findFieldByNameCreate("SUB").setValue(tmp1[1]); tbl.addRecord(rec); } return tbl; } }