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 = "
";
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 = "
"
+ "
"
+ "
"
+ "
"
+ "
"
+ "
"
+ "
"
+ "
"
+ "
"
+ "
"
+ "
"
+ "
"
+ "
"
+ "
"
+ "
"
+ "
"
+ "
"
+ "
"
+ "
"
+ "
"
+ "
"
+ "
"
+ "
"
+ "
"
+ "
" + "
";
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 = "
"
+ "
"
+ "
"
+ "
"
+ "
"
+ "
";
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 += "";
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
" + "" + "";
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"
+ ""
+ ""
+ ""
+ ""
+ ""
+ ""
+ "
"
+ ""
+ "
"
+ "
"
+ ""
+ "
"
+ "
"
+ ""
+ "
"
+ "
"
+ ""
+ "
"
+ "
"
+ "" + "
" + "";
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
""
+ "
"
+ ""
+ "
"
+ "
"
+ ""
+ "
"
+ "
"
+ ""
+ "
"
+ "
"
+ ""
+ "
"
+ "
"
+ ""
+ "
"
+ "
"
+ ""
+ "
"
+ "
"
+ "
"
+ ""
+ "
"
+ ""
+ "
"
+ ""
+ ""
+
// 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" + ""
+ ""
+ ""
+ ""
+ "" + "";
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 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"
+ ""
+ ""
+ " "
+ ""
+ "