package com.FitBank.web.util; import java.io.BufferedReader; import java.io.FileReader; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Date; import java.util.List; import java.util.Map; import java.util.MissingResourceException; import java.util.ResourceBundle; import java.util.Vector; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import org.w3c.dom.Node; import org.w3c.dom.traversal.NodeIterator; import com.FitBank.common.Servicios; import com.FitBank.xml.Mensaje.Compania; import com.FitBank.xml.Mensaje.MensajeXml; import com.FitBank.xml.Mensaje.Subsistema; import com.FitBank.xml.Parser.ParserReport; /** * Clase que concentra todos los contenidos html, xml y Java Script que se generan en el Servidor y se envian al * cliente. * * @author FITBANK * @version 2.0 Junio 2003 */ public class ConstruirContenido extends HttpServlet { public static String banktarget = ""; public static String imagepath = "logo.png"; public static final String FORMATO_FECHA_PANTALLA_INICIO = "formatoFechaInicioAplicacion"; private static String inactiveTime = "3600000"; private static String colorBarraMenuCombo; private static String tipoMenu; private static String load_teller_submenu; private static String caducatedTime; private static String formatoFecha; /** * Cadena que almacena el path y nombre de archivo de la imagen que se presenta en la ventana de ingreso de * parametros adicionales del para los reportes en PDF. Utilizado en el metodo showParameterReportWindow. */ public static String pdf_img = "logo.png"; /** * Cadena que almacena el path y el nombre de archivo de estilos utilizado en el metodo showParameterReportWindow. */ public static String css_path = "estilos/Fitbank.css"; static { ResourceBundle rb = ResourceBundle.getBundle("webapp"); try { css_path = rb.getString("client.css.file"); } catch (Exception e) { } try { pdf_img = rb.getString("client.image.pdf.log"); } catch (Exception e) { } try { imagepath = rb.getString("client.image.path"); } catch (Exception e) { } try { inactiveTime = rb.getString("tiempoCaducidadSesion"); } catch (Exception e) { } try { banktarget = rb.getString("client.name"); } catch (Exception e) { banktarget = ""; } try { colorBarraMenuCombo = rb.getString("colorBarraMenu"); } catch (Exception e) { colorBarraMenuCombo = "rgb(255,255,255)"; } try { tipoMenu = rb.getString("tipoMenu"); } catch (Exception e) { tipoMenu = "0"; } try { load_teller_submenu = rb.getString("load_teller_submenu"); } catch (Exception e) { load_teller_submenu = "0"; } try { caducatedTime = rb.getString("tiempoCaducidadSesion"); } catch (Exception e) { caducatedTime = "000000"; } try { formatoFecha = rb.getString(FORMATO_FECHA_PANTALLA_INICIO); } catch (Exception e) { e.printStackTrace();// Es un campo necesario } } /** * M�todo que lee el archivo que se le indica en el path de par�metro del FileSystem Server. * * @param pathChangePassword Objeto que contiene en cadena el path del File System del archivo. * @return Objeto que contiene el archivo le�do del File System Server. */ public static String changePassword(String pathChangePassword, String sessionId) { String htmlPassword = leerArchivo(pathChangePassword); htmlPassword = htmlPassword.replaceAll("--reemplazaSession--", ";jsessionid=" + sessionId); return htmlPassword; } /** * M�todo que arma una cadena de javascript con las c?digos alternos de transacciones para submen?es y cargarlos en * arrays al momento de iniciar la aplicaci?n. * * @param evento Contiene el evento a procesar. * @return Devuelve una cadena con la sentencia de javascript para el seteo de arrays globales con los c?digos * alternos de transacciones para submen?es */ public static String construirCajas(EjecutarEventos evento) { String csubnivelmenu = ""; String cadena = ""; if (load_teller_submenu.equals("1")) { cadena = "globalVarsSubMenu = new Array(); "; String ejemplo = evento.procesoXml.getXmlMensaje().getValor("SUBMENU", MensajeXml.SEC_DET); if (!ejemplo.equals("")) { String[] submenues = ejemplo.split(","); for (int i = 0; i < submenues.length; i++) { String[] transaccionessubmenu = submenues[i].split("\\."); if (csubnivelmenu.equals(transaccionessubmenu[0])) { cadena = cadena + submenues[i] + ","; } else { if (!cadena.endsWith("; ")) { if (cadena.endsWith(",")) { cadena = cadena.substring(0, cadena.lastIndexOf(",")); } cadena = cadena + "'; "; } cadena = cadena + "globalVarsSubMenu['" + transaccionessubmenu[0] + "'] = '"; csubnivelmenu = transaccionessubmenu[0]; i--; } } if (cadena.endsWith(",")) { cadena = cadena.substring(0, cadena.lastIndexOf(",")); } cadena = cadena + "'; "; } } return cadena; } /** * M�todo que construye un objeto con la cadena que se muestra en el menu de Companias en el sistema de manera * dinamica, utilizando la informacion que contiene el mensaje. * * @param evento Objeto que contiene como atributo el mensaje del cual se obtiene la informacion de las companias. * @return Objeto que contiene la cadena con las companias que se cargaron en la aplicacion. */ public static String construirCompanias(EjecutarEventos evento, String sessionId, String subs, String tran) { Class clsCia = new Compania("", "").getClass(); int cntCias = 0; for (int a = 0; a < evento.procesoXml.getXmlMensaje().detalle[0].size(); a++) { if (evento.procesoXml.getXmlMensaje().detalle[0].get(a).getClass() == clsCia) { cntCias++; } } String companias = ""; companias += (""; return companias; } /** * M�todo que genera el objeto con la cadena de la secci�n Contenido para el HTML a publicar en el cliente. * * @return Objeto que tiene la cadena de la secci�n Contenido del entorno visual de la aplicaci�n. */ public static String construirContenido() { String retorno = ""; retorno = "" + "" + "" + "" + "" + "" + "" + "" + "" + "" + "" + "" + "" + "" + ""; return retorno; } /** * Metodo que genera el objeto con la cadena de la seccion Contenido para el HTML a publicar en el cliente, en * Listar Valores. * * @return Objeto que contiene una cadena con la seccion del Contenido para la generacion del entorno visual de * Listar Valores. */ public static String construirContenidoLV(String sessionId) { String contenido = ""; contenido = "" + "" + "" + "" + "" + "" + "" + ""; return contenido; } /** * M�todo que genera el objeto con la cadena de la secci�n Estatus para el HTML a publicar en el cliente. * * @return Objeto que posee la cadena con el contenido de la secci�n Estatus del entorno visual de la aplicacion. */ public static String construirEstatus() { String retorno = ""; retorno = "" + "" + "" + "" + /* * "" + */ " " + "
" + "" + "  " + "" + * "  Transacción:" + " " + /* * " " * + * " " * + */ "
"; return retorno; } /** * M�todo que genera el objeto con la cadena de la secci�n Logo para el HTML a publicar en el cliente. * * @return Objeto que posee la cadena con el contenido de la secci�n Logo del entorno visual de la aplicaci�n. */ public static String construirLogo() { String retorno = ""; // / retorno = ""; return retorno; } /** * M�todo que genera el objeto con la cadena de la secci�n Subsistemas para el HTML a publicar en el cliente. * * @param evento Objeto que contiene como atributo el MensajeXml del cual se obtiene el menu. * @param pedido Pedido del browser. * @return Objeto que contiene la cadena con los susbsitemas listos para ser mostrados en el cliente. */ public static String construirSubsistemas(EjecutarEventos evento, HttpServletRequest pedido) { String subsystems = ""; if (true) {// Globales.isDynamicMenu()) { return getDynamicMenu(evento, pedido); } else { Vector subsistemas = evento.procesoXml.getXmlMensaje().getMenu().subsistemas; subsystems = "" + " "; } return subsystems; } /** * Metodo que genera el objeto que contiene la cadena de la seccion Teclas para el HTML a publicar en el cliente. * * @return Objeto que contiene la cadena de la seccion Teclas del entorno visual de la aplicacion. */ public static String construirTeclas() { String retorno = ""; String teclasEstilo = "teclastd"; retorno = "" + "" + "" + "" + "" + "" + "" + "" + "" + "" + "" + "" + "" + "
" + "\"Ayuda\"" + "\"Limpiar\"" + "\"\"" + "\"Cerrar" + "\"\"" + "\"\"" + "\"Consultar\"" + "\"Anterior\"" + "\"Siguiente\"" + "\"\"" + "\"\"" + "\"Grabar\"
"; return retorno; } /** * Metodo que genera el objeto con la cadena de la seccion Contenido para el HTML a publicar en el cliente, en * Listar Valores. * * @return Objeto que contiene una cadena con la seccion del Contenido para la generacion del entorno visual de * Listar Valores. */ public static String construirTeclasLV() { String teclas = ""; String teclasEstilo = "teclastd"; teclas = "" + "" + "" + "" + "" + "
\"Limpiar\"\"Consultar\"\"Anterior\"\"Siguiente\"
"; return teclas; } /** * Metodo que genera el objeto con la cadena de la seccion Titulo para el HTML a publicar en el cliente, en Listar * Valores. * * @return Objeto que contiene una cadena con la seccion del Titulo para la generacion del entorno visual de Listar * Valores. */ public static String construirTituloLV() { String titulo; titulo = "
"; return titulo; } /** * Metodo que genera el objeto con la cadena de la seccion Usuario para el HTML a publicar en el cliente. * * @param evento Objeto que contiene como atributo el MensajeXml del cual se obtiene la informaci�n de esta seccion. * @return Objeto que contiene la cadena que se env�a al cliente con el HTML correspondiente. */ public static String construirUsuario(EjecutarEventos evento, String activaJavaScript, String sessionId) { String retorno = ""; String fechaRealIngreso = evento.procesoXml.getXmlMensaje().getValor("FTR", MensajeXml.SEC_CAB) .substring(0, 10); String horaRealIngreso = evento.procesoXml.getXmlMensaje().getValor("FTR", MensajeXml.SEC_CAB).substring(10); String fechaContableIngreso = evento.procesoXml.getXmlMensaje().getValor("FCN", MensajeXml.SEC_CAB); try { SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd"); Date fechaHora = df.parse(fechaRealIngreso); df.applyPattern(formatoFecha); fechaRealIngreso = df.format(fechaHora); // formtear fecha contable df.applyPattern("yyyy-MM-dd"); fechaHora = df.parse(fechaContableIngreso); df.applyPattern(formatoFecha); fechaContableIngreso = df.format(fechaHora); } catch (NullPointerException npex) { System.out.println("Formato de fecha no v�lido"); } catch (MissingResourceException mrex) { System.out.println("Formato de fecha no definido"); } catch (ParseException pex) { System.out.println("Formato de fecha no v�lido"); } // retorno = // ""+ retorno = "
" + " " + " " + " " + " " + " " + " " + " " + " " + " " + " " + " " + " " + " " + " " + " " + " " + " " + " " + " " + " " + " " + " " + " " + " " + " " + " " + "
Usuario: " + " " + evento.procesoXml.getXmlMensaje().getValor("USR", MensajeXml.SEC_DET) + "       " + " Sucursal: " + " " + evento.procesoXml.getXmlMensaje().getValor("SUC", MensajeXml.SEC_CAB) + " - " + evento.procesoXml.getXmlMensaje().getValor("_BranchName", MensajeXml.SEC_DET) + "       " + " Rol: " + " " + evento.procesoXml.getXmlMensaje().getValor("ROL", MensajeXml.SEC_CAB) + " - " + evento.procesoXml.getXmlMensaje().getValor("_RoleName", MensajeXml.SEC_DET) + "       " + " Fecha Real:" + " " + "
" + fechaRealIngreso + horaRealIngreso + "
" + "
Terminal: " + " " + evento.procesoXml.getXmlMensaje().getValor("TER", MensajeXml.SEC_CAB) + "       " + " Oficina:" + " " + evento.procesoXml.getXmlMensaje().getValor("OFC", MensajeXml.SEC_CAB) + " - " + evento.procesoXml.getXmlMensaje().getValor("_OfficeName", MensajeXml.SEC_DET) + "       " + " Area: " + " " + evento.procesoXml.getXmlMensaje().getValor("ARE", MensajeXml.SEC_CAB) + " - " + evento.procesoXml.getXmlMensaje().getValor("_AreaName", MensajeXml.SEC_DET) + "       " + " Fecha Contable: " + " " + fechaContableIngreso + "
"; retorno += ""; return retorno; } /** * M�todo que construye la cadena que se env�a al cliente cuando el cambio de clave no fue exitoso. * * @param evento Objeto que contiene el mensaje de respuesta del sistema que, y del cual se extrae la descripci�n de * la respuesta. * @return Objeto que contiene la cadena de env�o */ public static String errorChangePassword(EjecutarEventos evento) { String mensaje = "ERROR EN INGRESO DE PASSWORD:"; String error = evento.procesoXml.getXmlMensaje().getValor("DSC", MensajeXml.SEC_RES); error = Servicios.reemplazarContenido(error, "\n", "\\n", 1); String carga = ""; return carga; } /** * M�todo que construye la cadena que se env�a al cliente cuando el cambio de clave no fue exitoso. * * @param evento Objeto que contiene el mensaje de respuesta del sistema que, y del cual se extrae la descripci�n de * la respuesta. * @return Objeto que contiene la cadena de env�o */ public static String exitoChangePassword(EjecutarEventos evento) { String mensaje = "EXITO EN INGRESO DE PASSWORD

Cierre esta ventana e ingrese en el sistema normalmente

"; String carga = "" + "FIT-BANK Autenticación" + "" + "" + "" + "" + "" + "" + "" + "" + "" + "
" + "" + "" + "" + "" + "
" + "

" + mensaje + "

" + "
" + "
" + "
" + "" + ""; return carga; } /** * M�todo que construye la cadena que se env�a al cliente cuando un formulario no se pudo cargar en el sistema * debido a que el formato del archivo no es un XML v�lido como formulario o la parametrizaci�n de la transacci�n a * la que est� asociada el formulario son err�neos. * * @return Objeto que contiene la cadena que se env�a al cliente. */ public static String failedUploadForm() { String retorno; retorno = ""; return retorno; } /** * Metodo que genera un objeto que contiene la cadena que se envia al cliente cuando se ha definido el fallo en la * autenticacion. * * @param evento Objeto que contiene como atributo el MensajeXml del cual se obtiene la informacion de esta seccion. * @return Objeto que contiene la cadena que se envia al cliente con el HTML correspondiente, en caso de que la * autenticacion falle. */ public static String forInvalidate(EjecutarEventos evento) { String mensaje = "FIT-BANK NO PUEDE AUTORIZAR SU INGRESO:"; String error = evento.procesoXml.getXmlMensaje().getValor("DSC", MensajeXml.SEC_RES); error = Servicios.reemplazarContenido(error, "\n", "\\n", 1); String carga = ""; carga += ("" + "" + "FIT-BANK Autenticación" + "" + "" + "" + "" + "" + "" + "" + "" + "" + "" + "
" + "" + "" + "" + "" + "
" + "" + "
" + "
" + "

" + mensaje + "

" + "
" + error + "
" + "
" + "" + ""); return carga; } /** * Metodo que genera la cadena que se envia al cliente, cuando invalida la session en el browser exponiendo como * mensaje de error la cadena enviada. * * @param messageSecurity Objeto que contiene la cadena de error a exponer. * @return Objeto que contiene la cadena que se envia al cliente para invalidar la session. */ public static String forInvalidate(String messageSecurity) { String mensaje = "FIT-BANK NO PUEDE AUTORIZAR SU INGRESO: APLICACION DE SEGURIDAD LOGICA INDICA:"; String error = Servicios.reemplazarContenido(messageSecurity, "\n", "\\n", 1); String carga = ""; return carga; } /** * Metodo que construye un objeto que contiene la cadena que se envia al cliente cuando a este se le asigna sesion * desde el servidor. * * @param request Pedido del browser * @return Objeto que contiene una cadena con lo que envia al cliente en caso de asignarle una sesion luego de la * autenticacion. */ public static String forSession(HttpServletRequest request) { String carga = ""; carga += ("\n" + " \n" + " FIT-BANK APPLICATION ENVIRONMENT\n" + " \n" + " \n" + " \n" + ""); return carga; } /** * Metodo que construye un objeto que contiene la cadena que se envia al cliente cuando a este se le asigna sesion * desde el servidor. * * @param request Pedido del browser * @param flag indica si se debe cerrar la ventana que abrio este servlet * @return Objeto que contiene una cadena con lo que env�a al cliente en caso de asignarle una sesi�n luego de la * autenticaci�n. */ public static String forSession(HttpServletRequest request, Boolean flag) { String reference = "FIT_ENVIRONMENT"; String nameWindow = request.getSession().getId(); String carga = ""; return carga; } /** * Metodo que devuelve el archivo que lee el archivo que se muestra cuando la sesion del servidor ha caducado. * * @param pathCaducidad Objeto que contiene el URL absoluto donde se encuentra el archivo que se desea leer. * @return String con el archivo */ public static String generarCaducidad(String pathCaducidad) { return leerArchivo(pathCaducidad); } /** * Metodo que contiene la logica de la generacion del entorno visual de la aplicacion, lee el archivo especificado * en el objeto path, invoca los metodos que generan el contenido de las respectivas secciones utilizando para ello * el objeto evento. Luego reemplaza esos contenidos en el archivo leido. * * @param evento Objeto que contiene como atributo el MensajeXml del cual se obtiene la informacion. * @param pedido Pedido del browser. * @return Objeto que contiene la cadena con el archivo que se envia al cliente para la presentacion del entorno * visula de la aplicacion. */ public static String generarEntorno(EjecutarEventos evento, HttpServletRequest pedido, String estliloAplicacion, String sessionId) { String baseHtml = ""; String subs = Servicios.verificarCadena(pedido.getParameter("subs")); String tran = Servicios.verificarCadena(pedido.getParameter("tran")); baseHtml = generarMascara(banktarget, imagepath, estliloAplicacion); baseHtml = reemplazarContenido(baseHtml, "CIA", construirCompanias(evento, sessionId,subs,tran)); baseHtml = reemplazarContenido(baseHtml, "CON", construirContenido()); baseHtml = reemplazarContenido(baseHtml, "IMG", construirLogo()); baseHtml = reemplazarContenido(baseHtml, "USR", construirUsuario(evento, null, sessionId)); return baseHtml; } public static String generarEntornoAux(EjecutarEventos evento, HttpServletRequest pedido, String estliloAplicacion, String sessionId) { String baseHtml = ""; String subs = Servicios.verificarCadena(pedido.getParameter("subs")); String tran = Servicios.verificarCadena(pedido.getParameter("tran")); baseHtml = generarMascaraAux(banktarget, imagepath, estliloAplicacion,subs,tran); baseHtml = reemplazarContenido(baseHtml, "CIA", construirCompanias(evento, sessionId,subs,tran)); baseHtml = reemplazarContenido(baseHtml, "CON", construirContenido()); baseHtml = reemplazarContenido(baseHtml, "IMG", construirLogo()); baseHtml = reemplazarContenido(baseHtml, "USR", construirUsuario(evento, "1", sessionId)); baseHtml = reemplazarContenido(baseHtml, "CAJAS", construirCajas(evento)); if (!evento.procesoXml.getXmlMensaje().getValor("CID", MensajeXml.SEC_CAB).equals("")) { baseHtml = reemplazarContenido(baseHtml, "EST", construirEstatus()); String scriptMenu = getDynamicMenu(evento, pedido); baseHtml = reemplazarContenido(baseHtml, "MEN", scriptMenu); baseHtml = reemplazarContenido(baseHtml, "TEC", construirTeclas()); } return baseHtml; } /** * Metodo que contiene la logica para la generacion del entorno visual en listar valores, lee el archivo * especificado en el objeto pathLV, invoca los metodos que generan contenido de las respectivas secciones * utilizando para ello el objeto evento. Luego reemplaza esos contenidos al archivo leido. * * @param pathLV Objeto que contiene el URL absoluto donde se encuentra el archivo que se desea leer. * @return String con el entorno */ public static String generarEntornoLV(String pathLV, String sessionId) { String baseLV; baseLV = leerArchivo(pathLV); baseLV = reemplazarContenido(baseLV, "TIT", construirTituloLV()); baseLV = reemplazarContenido(baseLV, "CON", construirContenidoLV(sessionId)); baseLV = reemplazarContenido(baseLV, "TEC", construirTeclasLV()); return baseLV; } /** * Metodo que contiene el entorno del aplicativo y lo devuelve en un objeto a manera de String. * * @param bank Objeto que contiene la cadena con el nombre que se desea desplegar como nombre del Banco o entidad * financiera a la que esta sirviendo la aplicacion. * @param pathImage Objeto que contiene el path de la imagen del entorno central * @return Objeto que contiene el entorno completo de FIT-BANK en forma de un String */ public static String generarMascara(String bank, String pathImage, String estilo) { String mascara = ""; mascara = "" + "" + "" + "" + "FIT-BANK APPLICATION" + "" + "" + "" + "" + "" + "" + "
" + "\"FIT-BANK" + "
" + "
" + "" + "
" + "
" + "" + "
" + "
" + "" + "
" + "
" + "" + "
" + ""; return mascara; } /** * Metodo que contiene el entorno del aplicativo y lo devuelve en un objeto a manera de String. * * @param bank Objeto que contiene la cadena con el nombre que se desea desplegar como nombre del Banco o entidad * financiera a la que esta sirviendo la aplicacion. * @param pathImage Objeto que contiene el path de la imagen del entorno central * @return Objeto que contiene el entorno completo de FIT-BANK en forma de un String */ public static String generarMascaraAux(String bank, String pathImage, String estilo, String subs, String tran) { String mascara = ""; String onload = ""; if(subs.compareTo("")!=0 && tran.compareTo("")!=0){ onload = "pt('"+subs+":"+tran+"');"; } mascara = "" + "" + "" + "" + "FIT-BANK APPLICATION" + "" + "" + "" + "" + "" // variables globales a traves de los formularios + "" + // fin globales entre formularios "" + "
" + "\"FIT-BANK" + "
" + "
" + "" + "
" + "
" + "" + "
" + "
" + "" + "
" + "
" + "" + "
" + "
" + "" + "
" + "
" + "
" + "" + "
" + "" + "
" + "
" + "
" + // Comentarios al Usuario "
" + "
" + ""; return mascara; } /** * Obtiene el menu dinamico. * * @param evento Instancia del objeto EjecutarEventos. * @param pedido HttpServletRequest. * @return String. */ public static String getDynamicMenu(EjecutarEventos evento, HttpServletRequest pedido) { String menu = ""; try { String scriptMenuEstatico = evento.procesoXml.getXmlMensaje().getValor("MENU", MensajeXml.SEC_DET); if ((scriptMenuEstatico != null) && (scriptMenuEstatico.compareTo("") != 0)) { if ((tipoMenu == null) || (tipoMenu.compareTo("0") == 0)) { menu = ""; } else if (tipoMenu.compareTo("1") == 0) { menu += ""; menu += ""; menu += ""; } else if (tipoMenu.compareTo("2") == 0) { menu += ""; menu += ""; menu += ""; menu += scriptMenuEstatico; } } } catch (Exception ex) { ex.printStackTrace(System.err); } return menu; } /** * Obtiene una lista de los items principales del menu. * * @param xml Mensaje XML. * @return List. * @throws Exception Exception. */ private static List getItemsXML(String xml) throws Exception { // Parser del mensaje xml ParserReport pxml = null; if (xml.indexOf("encoding=") < 0) { pxml = new ParserReport("" + xml); } else { pxml = new ParserReport(xml); } NodeIterator nit = pxml.getComplexNode("/MNU/SUB"); Node node = null; int a = 0; do { node = nit.nextNode(); if (node != null) { a++; } } while (node != null); // Seteo de los items List li = new ArrayList(); for (int i = 1; i <= a; i++) { String[] si = new String[2]; try { si[0] = pxml.getValue("/MNU/SUB[" + i + "]/COD"); si[1] = pxml.getValue("/MNU/SUB[" + i + "]/NOM"); li.add(si); } catch (Exception ex) { // TODO: hacer algo con esta excepcion } } return li; } /** * Obtiene una lista de niveles de transacciones. * * @param listItems Mensaje XML. * @param mapSubsistemas Mapa de subsistemas * @param listTransacciones Lista de transacciones * @return List. * @throws Exception Exception. */ private static String getNivelMenu(List listItems, Map mapSubsistemas, List listTransacciones) throws Exception { String menu = ""; List li = new ArrayList(); List ls = new ArrayList(); List ln = new ArrayList(); List lt = new ArrayList(); List listNiveles = new ArrayList(); List listSubsistemas = new ArrayList(); // Obtiene los items for (int i = 0; i < listItems.size(); i++) { String[] si = new String[2]; si[0] = ((String[]) listItems.get(i))[0]; si[1] = ((String[]) listItems.get(i))[1]; li.add(si); } // Obtiene los subsistemas for (int i = 0; i < listTransacciones.size(); i++) { String[] s = (String[]) listTransacciones.get(i); String itemmenu = s[0].split(":")[0].substring(0, 2); String subsistema = s[0].split(":")[2]; if (!listSubsistemas.contains(itemmenu + subsistema)) { listSubsistemas.add(itemmenu + subsistema); String[] sb = new String[3]; sb[0] = itemmenu; sb[1] = subsistema; sb[2] = (String) mapSubsistemas.get(subsistema); ls.add(sb); } } // Obtiene los niveles for (int i = 0; i < listTransacciones.size(); i++) { String[] s = (String[]) listTransacciones.get(i); String codigonivel = s[0].split(":")[0]; String nombrenivel = s[0].split(":")[1]; String subsistema = s[0].split(":")[2]; String itemmenu = codigonivel.substring(0, 2); if (!listNiveles.contains(subsistema + codigonivel)) { listNiveles.add(subsistema + codigonivel); String[] sn = new String[4]; sn[0] = itemmenu; sn[1] = subsistema; sn[2] = codigonivel; sn[3] = nombrenivel; ln.add(sn); } } // Obtiene las transacciones for (int i = 0; i < listTransacciones.size(); i++) { String[] s = (String[]) listTransacciones.get(i); String itemmenu = s[0].split(":")[0].substring(0, 2); String subsistema = s[0].split(":")[2]; String nivelmenu = s[0].split(":")[0]; String transaccion = s[0].split(":")[3]; String descripcion = s[1]; String[] st = new String[5]; st[0] = itemmenu; st[1] = subsistema; st[2] = nivelmenu; st[3] = transaccion; st[4] = descripcion; lt.add(st); } int cont1 = 0; for (int i = 0; i < li.size(); i++) { String[] si = (String[]) li.get(i); int a = 0; for (int x = 0; x < ls.size(); x++) { String[] sb = (String[]) ls.get(x); // GAN // Se incremento una validacion para los elementos si[0] y sb[0] para // que sean diferentes de null. Esto se hizo porque se esta cayendo el // armado dinamico del menu. if ((si[0] != null) && (sb[0] != null) && (si[0].compareTo(sb[0]) == 0)) { a++; } } if (a > 0) { cont1++; menu += ("\nMenu" + cont1 + "=new Array('" + si[1] + "','',''," + a + ",20,100);"); int cont2 = 0; for (int j = 0; j < ls.size(); j++) { String[] sb = (String[]) ls.get(j); if (si[0].compareTo(sb[0]) == 0) { cont2++; int b = 0; for (int y = 0; y < ln.size(); y++) { String[] sn = (String[]) ln.get(y); if ((si[0].compareTo(sn[0]) == 0) && (sb[1].compareTo(sn[1]) == 0)) { b++; } } if (b > 0) { menu += ("\nMenu" + cont1 + "_" + cont2 + "=new Array('" + sb[1] + " " + sb[2] + "','',''," + b + ",20,180);"); int cont3 = 0; for (int k = 0; k < ln.size(); k++) { String[] sn = (String[]) ln.get(k); if ((si[0].compareTo(sn[0]) == 0) && (sb[1].compareTo(sn[1]) == 0)) { cont3++; int c = 0; for (int z = 0; z < lt.size(); z++) { String[] st = (String[]) lt.get(z); if ((si[0].compareTo(st[0]) == 0) && (sb[1].compareTo(st[1]) == 0) && (sn[2].compareTo(st[2]) == 0)) { c++; } } if (c > 0) { menu += ("\nMenu" + cont1 + "_" + cont2 + "_" + cont3 + "=new Array('" + sn[3] + "','',''," + c + ",20,180);"); int cont4 = 0; for (int l = 0; l < lt.size(); l++) { String[] st = (String[]) lt.get(l); if ((si[0].compareTo(st[0]) == 0) && (sb[1].compareTo(st[1]) == 0) && (sn[2].compareTo(st[2]) == 0)) { cont4++; menu += ("\nMenu" + cont1 + "_" + cont2 + "_" + cont3 + "_" + cont4 + "=new Array('" + st[3] + " " + st[4] + "','JavaScript:pt(\"" + st[1] + ":" + st[3] + "\");CloseMenu();','',0,20,280);"); } } } } } } } } } } return "NoOffFirstLineMenus=" + cont1 + ";" + menu; } /** * Obtiene una lista de transacciones dado el xml. * * @param xml Mensaje XML. * @return List. * @throws Exception Exception */ private static List getTransactionXML(String xml) throws Exception { // Parser del mensaje xml ParserReport pxml = null; if (xml.indexOf("encoding=") < 0) { pxml = new ParserReport("" + xml); } else { pxml = new ParserReport(xml); } NodeIterator nit = pxml.getComplexNode("/MNU/SUB/TRN"); Node node = null; int a = 0; do { node = nit.nextNode(); if (node != null) { a++; } } while (node != null); // Seteo de las transacciones List lt = new ArrayList(); for (int i = 1; i <= a; i++) { String[] st = new String[2]; st[0] = pxml.getValue("/MNU/SUB/TRN[" + i + "]/COD"); st[1] = pxml.getValue("/MNU/SUB/TRN[" + i + "]/NOM"); lt.add(st); } return lt; } /** * M�todo que construye la cadena que se env�a al cliente browser cuando el cambio de clave ha sido exitoso. * * @return Objeto que contiene la cadena de env�o */ public static String hitChangePassword() { String retorno = ""; return carga; } /** * M�todo que permite generar una ventana presentada al usuario para que ingrese los par�metros necesarios para las * consultas de Reportes en Formato Pdf . * * @param pBloque N�mero del Bloque del un formulario, primer parametro de la funcion pdfParams. * @param pFila N�mero de fila dentro del bloque, segundo parametro de la funcion pdfParams. * @return Cadena en formato Html que al ejecutarse en el browser presenta el contenido de la ventana de ingreso de * par�metros necesarios para la consulta. */ public static String showParameterReportWindow(String pBloque, String pFila) { String retorno; retorno = "" + "Reportes de Consultas" + "" + "" + "" + "" + "
" + "" + "" + "
" + "" + "
" + "
" + "" + "" + "" + "" + "" + "" + "" + "" + "" + "
Número de página :
Número de registros por página :
" + "" + "" + " " + "" + "" + "
" + "
" + "
" + ""; return retorno; } /** * M�todo que construye la cadena que se env�a al cliente cuando un formulario es cargado en el sistema, este * mensaje se env�a al browser, para se mostrado en un alert del mismo. * * @return Objeto que contiene la cadena que se env�a al cliente. */ public static String uploadForm() { String retorno; retorno = ""; return retorno; } /** * Arma la ventana que permite ver la imagen en su tama�o real, y permite hacer zoom-in/out. * * @param num C�digo de la imagen ra�z. * @param sec Numero de pagina (0 es la primera). * @return el HTML de la ventana. */ public static String ventanaHerramientasImagen(String num, int sec, String tabla, String sessionId) { return ventanaHerramientasImagen(num, sec, null, null, tabla, sessionId); } /** * Arma la ventana que permite ver la imagen en su tamano real, y permite hacer zoom-in/out. Permite tambien navegar * un documento multipagina. * * @param num C�digo de la imagen ra�z (ver par�metro tipDoc). * @param sec N�mero de p�gina (0 es la primera). * @param tipDoc utilizado cuando se realiza la consulta de la imagen desde la tabla TPERSONADOCUMENTOS, indica el * c�digo de tipo de documento (CTIPODOCUMENTO). En este caso, num es el c�digo de la persona (CPERSONA). * @param tipPrs utilizado cuando se realiza la consulta de la imagen desde la tabla TPERSONADOCUMENTOS, indica el * c�digo de tipo de persona(CTIPOPERSONA). Igual que en el caso anterior, num es CPERSONA. * @return el HTML de la ventana. */ public static String ventanaHerramientasImagen(String num, int sec, String tipDoc, String tipPrs, String tabla, String sessionId) { String javascript = ""; String incTipEmp = ", '" + tabla + "'"; incTipEmp += ((tipDoc != null) && (tipPrs != null) ? ", " + tipDoc + ", '" + tipPrs + "'" : ""); String incTipNull = ", '" + tabla + "'"; incTipNull += ((tipDoc != null) && (tipPrs != null) ? ", " + tipDoc + ", '" + tipPrs + "'" : ", null, null"); String ventana = "" + "" + "Herramientas de Imagen" + "" + "" + " " + "" + "
" + "" + "
" + "
" + "" + "
" + "" + ""; String tools = javascript + "
Zoom:  " + "" + " +   " + "" + " -    " + "= 0) currZoom = absoluteZoom('imgZoom', " + "this.value / 100); this.value = parseInt(currZoom * 100);}\">%
" + " " + "
" + " " + " 0 ? (sec - 1) : 0) + incTipEmp + ")\" class=\"Boton\"> Página " + "= 0 ? sec + 1 : 1) + "\" tabindex=\"2\" onkeypress=\"" + "if (event.keyCode == 13) { if (parseInt(this.value) - 1 <= " + "parseInt(document.getElementById('paginaMaxPagina').value) && parseInt(this.value) >= 1)" + "window.location = pagZoom('" + num + "', parseInt(this.value) - 1" + incTipEmp + "); " + "else this.value = '" + (sec + 1) + "'; }\" maxlength=\"4\" size=\"4\"> " + "= 0 ? (sec + 1) : 1) + incTipNull + ", document.getElementById('paginaMaxPagina'))\" class=\"Boton\"> " + " " + "" + "
"; String img = ""; ventana = reemplazarContenido(ventana, "CON", tools); ventana = reemplazarContenido(ventana, "IMG", img); return ventana; } /** * Muestra la ventana de vista previa de escaneo. * * @param nom String con el nombre del objeto Escaner. * @param noi String con el nombre de la imagen relacionada al objeto Escaner. * @param num int con el codigo de imagen a grabar en la base de datos. * @param maxPag int con el numero maximo de paginas a escanear * @param pag int con el numero de pagina escaneado. * @return un String con el HTML de la ventana. */ public static String ventanaPreviewEscaneo(String nom, String noi, int num, int maxPag, int pag) { String ventana = "" + "" + "Vista Previa Escaneo" + "" + "" + " " + "" + "
" + "" + "
" + "
" + "" + "
" + "" + ""; String imagen = ""; String acpImg = "
Página: " + pag + "
" + "
Aceptar esta imagen?  " + "  " + "
"; ventana = reemplazarContenido(ventana, "CON", acpImg); ventana = reemplazarContenido(ventana, "IMG", imagen); return ventana; } }