package com.FitBank.web.util; import java.io.Serializable; import java.sql.Date; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Calendar; import java.util.Enumeration; import java.util.GregorianCalendar; import java.util.HashSet; import java.util.LinkedHashMap; import java.util.List; import java.util.Map; import java.util.Set; import java.util.Vector; import javax.servlet.http.HttpServletRequest; import com.FitBank.common.Debug; import com.FitBank.common.Servicios; import com.FitBank.xml.Formas.ArbolBloques; import com.FitBank.xml.Formas.DatoHttp; import com.FitBank.xml.Formas.Elemento; import com.FitBank.xml.Formas.Escaner; import com.FitBank.xml.Formas.Etiqueta; import com.FitBank.xml.Formas.FBloque; import com.FitBank.xml.Formas.Fila; import com.FitBank.xml.Formas.Formulario; import com.FitBank.xml.Formas.Imagen; import com.FitBank.xml.Formas.ListaCamposConsultables; import com.FitBank.xml.Formas.Notificacion; import com.FitBank.xml.Formas.Origen; import com.FitBank.xml.Formas.ServiciosFormas; import com.FitBank.xml.Mensaje.AutoGenerado; import com.FitBank.xml.Mensaje.Bloque; import com.FitBank.xml.Mensaje.Campo; import com.FitBank.xml.Mensaje.Criterio; import com.FitBank.xml.Mensaje.DatoGeneral; import com.FitBank.xml.Mensaje.Dependencia; import com.FitBank.xml.Mensaje.MensajeXml; import com.fitbank.common.exception.FitbankException; import com.fitbank.common.helper.Dates; import com.fitbank.common.logger.FitbankLogger; import org.apache.commons.lang.StringUtils; /** * Esta clase se encarga de procesar documentos XML generados desde el Generador * o desde la Base de Datos, con Formularios y Mensajes. * * @author Bantec Inc. */ @SuppressWarnings("serial") public class ProcesarXml implements Serializable { private String vOne="one"; private String vFieldCompany="1231001"; private String vFieldFProcess="1231006"; private String vFieldFNotificaction="1231005"; private String vFieldTexto="1231007"; private String vFieldSubsistem="1231002"; private String vFieldTransaction="1231003"; private String vFieldVersion="1231008"; private String vFieldUser="1231004"; private String vFieldFnotif="fnotif"; private String vFieldSub="sub"; private String vFieldTran="trn"; private String vFieldVer="ver"; private String vFieldMen="men"; private String vFieldUSRUpper="USR"; private String vFieldUSRLower="usr"; private String vFieldCID="CID"; private String vLiteral="'"; private String vEspacio="', '"; /** * Atributo que contiene el objeto de la clase MensajeXml, a trav�s del * cual los m�todos de la clase referencian las operaciones concernientes * al objeto de la clase MensajeXml. */ private MensajeXml xmlMensaje = new MensajeXml(); /** * Atributo que contiene el objeto de la clase MensajeXml, a trav�s del * cual los m�todos de la clase referencian las operaciones concernientes * al objeto de la clase MensajeXml �nicamente para consultas para formato * en PDF. */ public MensajeXml xmlMensajeConsulta; /** * Atributo que contiene el objeto de la clase Formulario, mediante el cual * los m�todos de la clase referecian las operaciones relacionadas con el * objeto de la clase Formulario. */ private Formulario xmlFormulario = new Formulario(); /** * Atributo que contiene el objeto de la clase Formulario, mediante el cual * los m�todos de la clase referecian las operaciones relacionadas con el * objeto de la clase Formulario pero exclusivamente para reportes. */ private MensajeXml mensajeBackUp; /** * M�todo que retorna el atributo xmlMensaje de la Clase MensajeXml. * * @return Retorna el objeto xmlMensaje atributo de la clase. */ public MensajeXml getXmlMensaje() { return xmlMensaje; } /** * M�todo que Setea el atributo xmlMensaje con un valor externo, que ha * sido instanciado externamente a la clase. * * @param xmlMensaje * Objeto que contiene el Mensaje nuevo para ser seteado en el * atributo de la clase xmlMensaje. */ public void setXmlMensaje(MensajeXml xmlMensaje) { this.xmlMensaje = xmlMensaje; } /** * M�todo que retorna el atributo xmlFormulario que es de la clase * Formulario. * * @return Retorna el objeto xmlFormulario atributo de la clase. */ public Formulario getXmlFormulario() { return xmlFormulario; } /** * M�todo que setea el atributo xmlFormulario de la clase con un objeto * instanciado desde fuera de la clase. * * @param xmlFormulario * Objeto que contiene el Formulario nuevo para ser seteado en el * atributo de la clase xmlFormulario. */ public void setXmlFormulario(Formulario xmlFormulario) { this.xmlFormulario = xmlFormulario; } /** * Obtiene un entero de el pedido del browser. * * @param pedido * Pedido del browser * @param nombre * Nombre del campo * @param valorPorDefecto * Valor por defecto * @param cambiar * Valor que tiene que ser cambiado por el valor por defecto * * @return entero */ public int getEntero(HttpServletRequest pedido, String nombre, int valorPorDefecto, int cambiar) { return getEnteros(pedido, nombre, valorPorDefecto, cambiar)[0]; } /** * Obtiene un array de enteros de el pedido del browser. * * @param pedido * Pedido del browser * @param nombre * Nombre del campo * @param valorPorDefecto * Valor por defecto * @param cambiar * Valor que tiene que ser cambiado por el valor por defecto * * @return array de enteros */ public int[] getEnteros(HttpServletRequest pedido, String nombre, int valorPorDefecto, int cambiar) { String[] valores = pedido.getParameterValues(nombre); int[] resultado = new int[valores.length]; for (int a = 0; a < valores.length; a++) { try { resultado[a] = Integer.parseInt(valores[a]); if (resultado[a] == cambiar) { resultado[a] = valorPorDefecto; } } catch (NumberFormatException e) { resultado[a] = valorPorDefecto; } } return resultado; } /** * Crea un hashmap con los valores de los campos. El Hashmap tiene la * siguiente forma: nombre campo -> Vector de valores * * @param numeroBloque * Numero del bloque a procesar * * @return Hashmap */ @SuppressWarnings("unchecked") public LinkedHashMap cargarCampos(int numeroBloque) { LinkedHashMap campos = new LinkedHashMap(); Bloque bloque = buscarBloque(numeroBloque); for (int a = 0; bloque != null && a < bloque.campos.size(); a++) { if (!(bloque.campos.elementAt(a) instanceof Criterio)) { Campo campo = (Campo) bloque.campos.elementAt(a); if (!campos.containsKey(campo.getNombre())) { campos.put(campo.getNombre(), new Vector()); } ((Vector) campos.get(campo.getNombre())).add(campo.getValor()); } } return campos; } /** * Metodo que llena el Formulario que se encuentra en el atributo * xmlFormulario, el proceso se ejecuta secuencialmente bloque a bloque. */ public void llenarFormulario() { limpiarFormulario(false); for (int bloque = 0; bloque < getXmlFormulario().size(); bloque++) { llenarBloque(bloque); } } /** * Metodo que llena un Bloque que se encuentra en el atributo * xmlFormulario con la informaci�n que traen los campos del xmlMensaje. * * @param bloque * Bloque */ @SuppressWarnings("unchecked") public void llenarBloque(int bloque) { LinkedHashMap m = cargarCampos(bloque); getXmlFormulario().setValoresElemento(m, bloque); } /** * Metodo que llena una ListaValor que se encuentra en el atributo * xmlFormulario con la informaci�n que traen los campos del xmlMensaje, * el proceso se ejecuta secuencialmente bloque a bloque. * * @param names * Names de los elementos * @param parametrosCargarImagenes * Un String con los parametros que se utilizar�n en javascript * para cargar im�genes en el formulario */ public void llenarLV(String[] names, String parametrosCargarImagenes) { for (int b = 0; b < getXmlFormulario().size(); b++) { getXmlFormulario().setValoresElementoLV(cargarCampos(b), b, names, parametrosCargarImagenes); } } /** * M�todo que permite crear el encabezado de un mensaje recibiendo como * par�metros los datos del encabezado. * * @param encabezado * Matriz de objetos de la clase String que contiene los tags a * crear en el encabezado del xmlMensaje y sus respectivos * valores. * * @return Devuelve un objeto que indica si fue exitoso el proceso ejecutado * dentro del m�todo. */ public boolean crearMensaje(String[][] encabezado) { if (encabezado == null) { Debug.imprimirError("Encabezado nulo"); return false; } for (int i = 0; i < encabezado.length; i++) { try { getXmlMensaje().setValor(new DatoGeneral(encabezado[i][0], encabezado[i][1]), MensajeXml.SEC_CAB); } catch (NullPointerException e) { Debug.imprimirError("Mensaje no inicializado antes", e); return false; } } return true; } /** * Obtenemos la pagina del Bloque * @param bloque * @return */ private int obtenerPaginaBloque(int bloque) { int pag = getXmlFormulario().getBloque(getXmlFormulario().esMaestroDetalle() ? bloque : 0).getNroPagina(); if (getXmlFormulario().getBloque(bloque).getListaCamposConsultables().getNumeroRegistrosConsulta() == 1 && !getXmlFormulario().getPaginacion().equals(Formulario.PAGINACION_HABILITADA)) { pag = 1; } return pag == -1 ? 1 : pag; } /** * Actualiza la pagina en el formulario. * * @param pedido Pedido del navegador */ public void actualizarArbolBloques(HttpServletRequest pedido) { if (getXmlFormulario().esMaestroDetalle()) { for (int b = 0; b < getXmlFormulario().size(); b++) { actualizarNodo(pedido, b); } } else { getXmlFormulario().getBloque(0).setNroPagina(getEntero(pedido, "qzPagina", 1, -1)); } } /** * Actualizamos el Nodo * @param pedido * @param bloque */ private void actualizarNodo(HttpServletRequest pedido, int bloque) { ArbolBloques ab = getXmlFormulario().getArbolBloques(); ArbolBloques.Nodo nodo = ab.getNodo(bloque); getXmlFormulario().getBloque(nodo.getBloque()).setNroRegistro( getEnteros(pedido, "qzRegistro", 1, -1)[nodo.getBloque()]); getXmlFormulario().getBloque(nodo.getBloque()).setNroPagina( getEnteros(pedido, "qzPagina", 1, -1)[nodo.getBloque()]); getXmlFormulario().getBloque(nodo.getBloque()).setNroCodMen( getEnteros(pedido, "qzCodMen", 1, -1)[nodo.getBloque()]); } /** * Completamos valores * @param pedido * @param bloque */ @SuppressWarnings("unchecked") protected void completarValores(HttpServletRequest pedido, int bloque) { ArbolBloques ab = getXmlFormulario().getArbolBloques(); ArbolBloques.Nodo nodo = ab.getNodo(bloque); ArbolBloques.Nodo[] hijos = (ArbolBloques.Nodo[]) nodo.getHijos().values().toArray(new ArbolBloques.Nodo[0]); getXmlFormulario().getBloque(nodo.getBloque()).setNroRegistro(0); getXmlFormulario().getBloque(nodo.getBloque()).setNroPagina(1); getXmlFormulario().getBloque(nodo.getBloque()).setNroCodMen(111006); limpiarBloque(bloque, false); for (int e = 0; e < hijos.length; e++) { completarValores(pedido, hijos[e].getBloque()); } } /** * M�todo que arma el mensaje que se env�a a la zona de administraci�n * de la persitencia, con la informaci�n que se obtiene del Formulario y * de la petici�n hecha en el cliente. * * @param pedido * Objeto que contiene la petici�n del cliente los valores * utilizados como criterios de b�squeda. * * @return Devuelve un objeto que indica si fue exitoso el proceso ejecutado * dentro del m�todo. */ public boolean armarMensajeConsulta(HttpServletRequest pedido) { if (pedido.getParameter("FITORDCON") != null) { getXmlMensaje().setValor(new DatoGeneral("ORD", pedido.getParameter("FITORDCON")), MensajeXml.SEC_CAB); } getXmlMensaje().setTipo(MensajeXml.TIP_CON); try { for (int b = 0; b < getXmlFormulario().size(); b++) { agregarBloqueMensajeConsulta(pedido, b); } } catch (Exception e) { Debug.imprimirError(e); return false; } return true; } /** * M�todo que arma el mensaje que se env�a a la zona de administraci�n * de la persitencia, con la informaci�n que se obtiene del Formulario y * de la petici�n hecha en el cliente. * * @param pedido * Objeto que contiene la petici�n del cliente los valores * utilizados como criterios de b�squeda * @param b * es el n�mero de bloque que se debe enviar * * @return Devuelve un objeto que indica si fue exitoso el proceso ejecutado * dentro del m�todo. */ public boolean armarMensajeConsulta(HttpServletRequest pedido, int b) { try { agregarBloqueMensajeConsulta(pedido, b); } catch (Exception e) { Debug.imprimirError(e); return false; } return true; } private void agregarBloqueMensajeConsulta(HttpServletRequest pedido, int b) { Bloque bloque = new Bloque(); FBloque fbloque = getXmlFormulario().getBloque(b); ListaCamposConsultables consultables = fbloque.getListaCamposConsultables(); bloque.setNroBloque(fbloque.getNroBloque()); bloque.setNroRegistros(consultables.getNumeroRegistrosConsulta()); bloque.setNroPagina(obtenerPaginaBloque(b)); // Armar bloque for (int c = 0; c < consultables.numCamposConsultables(); c++) { String nombre = consultables.getCampoConsultable(c).getName(); Origen origen = consultables.getCampoConsultable(c).getOrigen(); if (pedido.getParameter(nombre) != null) { if (origen.esCriterio()) { Criterio criterio = bloque.getCriterioOCrear(origen.getCodigo(), null); if (origen.getTipo().equals(Origen.TIPO_CRITERIO)) { DatoHttp dato = getXmlFormulario().getDatoHttpPorName(nombre); setVariablesDatoHttp(dato); criterio.setValor(ServiciosFormas.setValorDatoHttpSinFormato(dato, 0, pedido .getParameter(nombre))); if (!dato.getValueInicial(0).equals(pedido.getParameter(nombre))) { dato.setValueConsulta(pedido.getParameter(nombre), 0); } } else if (origen.getTipo().equals(Origen.TIPO_ORDEN)) { DatoHttp dato = getXmlFormulario().getDatoHttpPorName(nombre); criterio.setOrden(ServiciosFormas.setValorDatoHttpSinFormato(dato, 0, pedido .getParameter(nombre))); } } else { Campo cam = new Campo(origen.getCodigo(), ""); cam.colocarDependencias(consultables.getCampoConsultable(c).getOrigen(), getXmlFormulario() .esMaestroDetalle(), b); Origen o = consultables.getCampoConsultable(c).getOrigen(); for (int a = 0; a < o.getNumeroDependencias(); a++) { if (getXmlFormulario().esMaestroDetalle()) { copiarCriterio(o.getBloqueDependencia(a), bloque.getNroBloque(), o.getCodigoDependencia(a)); } } bloque.add(cam); } } } getXmlMensaje().setValor(bloque, MensajeXml.SEC_DET); xmlMensajeConsulta = new MensajeXml(); xmlMensajeConsulta.detalle[0] = getXmlMensaje().detalle[0]; } private void copiarCriterio(int bloqueDesde, int bloqueHasta, String codigo) { FBloque desde = buscarFBloque(bloqueDesde); DatoHttp dato = desde.getDatoHttpPorOrigen(new Origen(codigo, desde.getNroRegistro())); if (dato != null && desde.getNroRegistro() != -1 && bloqueDesde != bloqueHasta) { String valor = dato.getValue(desde.getNroRegistro()); buscarBloque(-1).getCriterioOCrear(codigo, valor); } } /** * Metodo que arma un mensaje para Grafico a partir de los campos enviados * por Graficador. * * @param tablaX * Origene de los valores X de la tabla * @param tablasY * Origenes de los valores Y de la tabla */ public void armarMensajeGrafico(String tablaX, String[] tablasY) { Bloque bloque = new Bloque(); bloque.setNroRegistros(15000); bloque.setNroBloque(1); bloque.setNroPagina(1); Origen[] origenes = new Origen[tablasY.length + 1]; origenes[0] = new Origen(tablaX); for (int a = 1; a <= tablasY.length; a++) { origenes[a] = new Origen(tablasY[a - 1]); } for (int n = 0; n < origenes.length; n++) { if (bloque.getCampo(origenes[n].getCodigo(), 0) == null) { Campo cam = new Campo(origenes[n].getCodigo(), ""); cam.colocarDependencias(origenes[n]); bloque.add(cam); } } getXmlMensaje().setValor(bloque, MensajeXml.SEC_DET); } /** * Metodo que arma un mensaje apra lista de valor a partir de los campos * enviados por httpservletrequest. * @param pedido * Pedido que viene del navegador */ @SuppressWarnings("unchecked") public void armarMensajeLV(HttpServletRequest pedido) { String[] names = pedido.getParameterValues("r"); eliminarValueHttp("r"); for (int a = 0; a < names.length; a++) { insertarValueHttp("r", names[a]); } String[] values = pedido.getParameterValues("v"); eliminarValueHttp("v"); for (int a = 0; a < values.length; a++) { insertarValueHttp("v", values[a]); } Origen[] origenes = new Origen[pedido.getParameterValues("c").length]; eliminarValueHttp("c"); for (int a = 0; a < pedido.getParameterValues("c").length; a++) { origenes[a] = new Origen(pedido.getParameterValues("c")[a]); insertarValueHttp("c", pedido.getParameterValues("c")[a]); } if (Servicios.verificarCadena(pedido.getParameter("first")).equalsIgnoreCase("FIRST")) { setCriterioFormLV(values); } Map nom = new LinkedHashMap(); Set fil = new HashSet(); // obtener nombres de criterios for (int b = 0; b < getXmlFormulario().size(); b++) { for (int f = 0; f < getXmlFormulario().getBloque(b).size(); f++) { for (int e = 0; e < getXmlFormulario().getFila(b, f).size() && e < origenes.length; e++) { if (getXmlFormulario().getElemento(b, f, e) instanceof DatoHttp) { if (getXmlFormulario().getElemento(b, f, e).getOrigen().esCriterio()) { nom.put(origenes[e], ((DatoHttp) getXmlFormulario().getElemento(b, f, e)).getName()); } } } // agregar los filtros for (int e = getXmlFormulario().getFila(b, f).size(); e < origenes.length; e++) { fil.add(nom.get(origenes[e])); } } } String[] nombres = (String[]) nom.values().toArray(new String[0]); for (int b = 0; b < getXmlFormulario().size(); b++) { Bloque bloque = new Bloque(); bloque.setNroRegistros(getXmlFormulario().getBloque(b).size() - 2); bloque.setNroBloque(getXmlFormulario().getBloque(b).getNroBloque()); bloque.setNroPagina(obtenerPaginaBloque(b)); for (int n = 0; n < origenes.length && n < values.length; n++) { if (!values[n].equals("")) { bloque.getCriterioOCrear(origenes[n].getCodigo(), values[n]); } } // Sobreescribir con criterios del formulario for (int n = 0; n < nombres.length && n < origenes.length; n++) { String valorForm = pedido.getParameter(String.valueOf(nombres[n])); if (valorForm != null) { if (!fil.contains(nombres[n])) { bloque.getCriterioOCrear(origenes[n].getCodigo(), valorForm); } getXmlFormulario().setValoresElemento(String.valueOf(nombres[n]), new String[] { valorForm }); } } for (int n = 0; n < origenes.length && n < values.length; n++) { if (bloque.getCampo(origenes[n].getCodigo(), 0) == null) { Campo cam = new Campo(origenes[n].getCodigo(), ""); cam.colocarDependencias(origenes[n]); bloque.add(cam); } } getXmlMensaje().setValor(bloque, MensajeXml.SEC_DET); } } /** * M�todo que setea los criterios enviados desde el formulario master que * abre la lista, al formulario de lista de valores de tal forma que los * criterios no se pierden al realizar una consulta nueva en el formulario * de lista de valores. * * @param criterios * Arreglo que contiene los criterios enviados desde el * formulario master al formulario de Lista de Valores. */ protected void setCriterioFormLV(String[] criterios) { Fila filaTarget; if (getXmlFormulario().getElemento(0, 1, 0) instanceof DatoHttp) { filaTarget = getXmlFormulario().getFila(0, 1); } else { filaTarget = getXmlFormulario().getFila(0, 0); } for (int e = 0; e < criterios.length && e < filaTarget.size(); e++) { if ((criterios[e] != null) && !criterios[e].equals("")) { ((DatoHttp) filaTarget.getElemento(e)).setValue(criterios[e], 0); } } } /** * M�todo que permite seleccionar un Bloque dado su n�mero. * * @param nroBloque * Es el n�mero de Bloque sobre el cual se desea aplicar. * * @return El objeto bloque deseado. */ protected Bloque buscarBloque(int nroBloque) { for (int b = 0; b < getXmlMensaje().detalle[0].size(); b++) { Bloque bloque = (Bloque) getXmlMensaje().detalle[0].elementAt(b); if (bloque.getNroBloque() == nroBloque) { return bloque; } } return null; } /** * M�todo que permite seleccionar un Bloque dado su n�mero. * * @param nroBloque * Es el n�mero de Bloque sobre el cual se desea aplicar. * * @return El objeto bloque deseado. */ protected FBloque buscarFBloque(int nroBloque) { for (int b = 0; b < getXmlFormulario().size(); b++) { FBloque bloque = getXmlFormulario().getBloque(b); if (bloque.getNroBloque() == nroBloque) { return bloque; } } Debug.imprimirError("No se encontr� el bloque!"); return new FBloque(); } /** * M�todo que limpia el formulario atributo de la clase de los valores * cargados. */ public void limpiarFormularioLV() { for (int b = 0; b < getXmlFormulario().size(); b++) { for (int f = 1; f < getXmlFormulario().getBloque(b).size(); f++) { for (int e = 0; e < getXmlFormulario().getFila(b, f).size(); e++) { Elemento elemento = getXmlFormulario().getElemento(b, f, e); if (elemento instanceof Etiqueta) { Etiqueta etiqueta = (Etiqueta) elemento; etiqueta.setTexto(""); } else if (elemento instanceof DatoHttp) { DatoHttp datos = (DatoHttp) elemento; datos.resetearValues(); } } } } } /** * M�todo que limpia el formulario atributo de la clase de los valores * cargados. * * @param limpiarCompletamente * Indica si se debe limpiar completamente el formulario * incluyendo criterios o no */ public void limpiarFormulario(boolean limpiarCompletamente) { for (int b = 0; b < getXmlFormulario().size(); b++) { limpiarBloque(b, limpiarCompletamente); } } protected void limpiarBloque(int b, boolean limpiarCompletamente) { if (getXmlFormulario().getBloque(b).getNroPagina() == -1) { getXmlFormulario().getBloque(b).setNroPagina(1); } for (int f = 0; f < getXmlFormulario().getBloque(b).size(); f++) { getXmlFormulario().getFila(b, f).setConsultada(false, 0); for (int e = 0; e < getXmlFormulario().getFila(b, f).size(); e++) { if (getXmlFormulario().getElemento(b, f, e) instanceof DatoHttp) { DatoHttp dato = (DatoHttp) getXmlFormulario().getElemento(b, f, e); if (limpiarCompletamente || !dato.getOrigen().esCriterio()) { dato.resetearValues(); } } } } } /** * M�todo que coloca en el objeto formulario una propiedad http en el * Bloque Cero, y la fila cero del mismo, como ultimo elemento de la Fila. * * @param name * Objeto que contiene el nombre de objeto oculto que se desea * crear (propiedad Texto del mismo.) * @param value * Objeto que contiene el valor del objeto Oculto que se desea * crear. */ public void insertarValueHttp(String name, String value) { getXmlFormulario().addValueHttp(name, value); } /** * M�todo que elimina en el objeto formulario una propiedad http en el * Bloque Cero, y la fila cero del mismo, como ultimo elemento de la Fila. * * @param name * Objeto que contiene el nombre de objeto oculto que se desea * crear (propiedad Texto del mismo.) */ public void eliminarValueHttp(String name) { getXmlFormulario().quitarValueHttp(name); } /** * M�todo que modifica el valor de una propiedad http dado el valor de su * propiedad Texto. * * @param name * Objeto que contiene el valor de la propiedad Texto del objeto * oculto que se desea buscar en el Formulario. * @param value * Objeto que contiene el valor que se desea setear el Objeto * Oculto si este es encontrado en el Formulario. */ public void modificarValueHttp(String name, String value) { getXmlFormulario().setValueHttp(name, value); } /** * Setea todas las variables que pida el formulario en la forma $VAR. */ public void setVariablesFormulario() { for (int b = 0; b < getXmlFormulario().size(); b++) { for (int f = 0; f < getXmlFormulario().getBloque(b).size(); f++) { for (int e = 0; e < getXmlFormulario().getFila(b, f).size(); e++) { if (getXmlFormulario().getElemento(b, f, e) instanceof DatoHttp) { setVariablesDatoHttp((DatoHttp) getXmlFormulario().getElemento(b, f, e)); } } } } } /** * Setea todas las variables que pida el formulario en la forma $VAR. * * @param dato * DatoHttp que va a ser seteado */ public void setVariablesDatoHttp(DatoHttp dato) { for (int a = 0; a < dato.getClonacionConsulta(); a++) { String valorActual = dato.getValue(a); dato.setValue(setVariables(dato, valorActual), a); } } /** * Setea todas las variables que pida el formulario en la forma $VAR. * * @param dato * DatoHttp que va a ser seteado * @param valorActual * Valor que va a ser reemplazado * * @return String con la cadena hecha los reemplazos */ public String setVariables(DatoHttp dato, String valorActual) { String tipoDato = ""; if (dato.getTipoDato().length() > 0) { tipoDato = dato.getTipoDato().substring(0, 1); } String nuevoValor = valorActual; for (int i = 0; i < getXmlMensaje().encabezado.size(); i++) { DatoGeneral datoGeneral = (DatoGeneral) getXmlMensaje().encabezado.get(i); if (valorActual.indexOf("$FCN") != -1 && datoGeneral.getNombre().equalsIgnoreCase("FCN")) { if (tipoDato.equalsIgnoreCase("D")) { String formatoFecha = "yyyy-MM-dd hh-mm-ss"; SimpleDateFormat sdf = new SimpleDateFormat(formatoFecha); Calendar cal = Calendar.getInstance(); cal.set(Integer.parseInt(datoGeneral.getValor().substring(0, 4)), Integer.parseInt(datoGeneral .getValor().substring(5, 7)) - 1, Integer.parseInt(datoGeneral.getValor().substring(8))); nuevoValor = nuevoValor.replaceAll("\\$FCN", sdf.format(cal.getTime())); } } nuevoValor = nuevoValor.replaceAll("\\$" + datoGeneral.getNombre(), datoGeneral.getValor()); } return nuevoValor; } /** * M�todo que setea los elementos que se autogeneran en el sistema, para * colocarlos en los criterios del formulario. * * @return Objeto que contien el estado de la ejecuci�n del m�todo. */ public boolean cargarAutoGenerate() { AutoGenerado[] autoGenerados; try { autoGenerados = getXmlMensaje().getAutoGenerate(); for (int b = 0; b < getXmlFormulario().size(); b++) { for (int f = 0; f < getXmlFormulario().getBloque(b).size(); f++) { for (int e = 0; e < getXmlFormulario().getFila(b, f).size(); e++) { if (getXmlFormulario().getElemento(b, f, e) instanceof DatoHttp) { DatoHttp dato = (DatoHttp) getXmlFormulario().getElemento(b, f, e); if (!dato.getOrigen().getTipo().equalsIgnoreCase(Origen.TIPO_ORDEN)) { for (int m = 0; m < autoGenerados.length; m++) { if (dato.getOrigen().getCodigo().equalsIgnoreCase(autoGenerados[m].getOrigenDB())) { for (int v = 0; v < dato.getClonacionConsulta(); v++) { dato.setValue(autoGenerados[m].getValor(), v); dato.setValueConsulta(autoGenerados[m].getValor(), v); } } } } } } } } return true; } catch (Exception e) { Debug.imprimirError(e); } return false; } /** * M�todo que genera el mensaje de consulta cuando en el sistema se * ejecuta un Link desde un formulario hacia otro. * * @param pedido * Objeto que contiene la petici�n ejecutada desde el cliente * al Servidor. * * @return Objeto que contien el estado de la ejecuci�n del m�todo. */ public boolean armarMensajeLink(HttpServletRequest pedido) { try { String[] names = pedido.getParameterValues("r"); String[] origenes = pedido.getParameterValues("c"); String[] values = pedido.getParameterValues("v"); boolean armarLink = true; if (names == null || origenes == null || values == null) { return true; } setVariablesFormulario(); for (int b = 0; b < getXmlFormulario().size(); b++) { FBloque fBloque = getXmlFormulario().getBloque(b); fBloque.setNroPagina(1); ListaCamposConsultables consultables = fBloque.getListaCamposConsultables(); Bloque bloque = new Bloque(fBloque.getNroBloque(), fBloque.getListaCamposConsultables() .getNumeroRegistrosConsulta(), 1); agregarBloqueMensajeLink(bloque, consultables, pedido, armarLink); armarLink = false; } } catch (Exception e) { Debug.imprimirError(e); return false; } return true; } /** * M�todo que construye el bloque del mensaje para la consulta. * * @param bloque * Objeto que contiene los valores iniciales y ser� bajo el que * se construyan los campos y criterios. * @param consultables * Objeto que contiene los origenes de los DB de los campos * consultables * @param pedido * Pedido que viene desde el browser consultables. * @param armarLink * Objeto que indica que si el bloque a generar deber� incluir * valores que son enviados desde el Link. * * @return Objeto que contien el estado de la ejecuci�n del m�todo. */ protected boolean agregarBloqueMensajeLink(Bloque bloque, ListaCamposConsultables consultables, HttpServletRequest pedido, boolean armarLink) { String[] names = pedido.getParameterValues("r"); String[] origenes = pedido.getParameterValues("c"); String[] values = pedido.getParameterValues("v"); for (int c = 0; c < consultables.numCamposConsultables(); c++) { Origen origen = consultables.getCampoConsultable(c).getOrigen(); boolean setCampo = true; for (int a = 0; a < origenes.length; a++) { Origen origenTmp = new Origen(origenes[a]); if (origen.getCodigo().equalsIgnoreCase(origenTmp.getCodigo()) && armarLink) { Criterio criterio = (Criterio) bloque.getCampo(origen.getCodigo()); if (criterio == null) { criterio = new Criterio(origen.getCodigo(), values[a]); getXmlFormulario().setValoresElemento(names[a], new String[] { values[a] }, bloque.getNroBloque()); bloque.add(criterio); } else { criterio.setValor(values[a]); getXmlFormulario().setValoresElemento(names[a], new String[] { values[a] }, bloque.getNroBloque()); } } else if (origen.esCriterio()) { Criterio criterio = (Criterio) bloque.getCampo(origen.getCodigo()); if (criterio == null) { criterio = new Criterio(origen.getCodigo(), "", ""); if (origen.getTipo().equalsIgnoreCase(Origen.TIPO_CRITERIO)) { criterio.setValor(consultables.getCampoConsultable(c).getPrimerValue()); bloque.add(criterio); } } if (origen.getTipo().equalsIgnoreCase(Origen.TIPO_ORDEN)) { if (!consultables.getCampoConsultable(c).getPrimerValue().equals("")) { criterio.setOrden(consultables.getCampoConsultable(c).getPrimerValue()); } } } else if (!origen.esCriterio()) { if (setCampo) { setCampo = false; Campo campo = new Campo(origen.getCodigo(), ""); campo.colocarDependencias(origen); bloque.add(campo); } } } } getXmlMensaje().setValor(bloque, MensajeXml.SEC_DET); return true; } /** * M�todo que permite comparar el mensaje existente con lo que se obtiene * de la petici�n del cliente y asigna al atributo de la clase xmlMensaje * con el mensaje de mantenimiento. * * @param pedido * Objeto que contiene la petici�n del cliente en el vienen los * valores de los campos a incluir en el mensaje de * mantenimiento. * * @return Devuelve un objeto que indica si fue exitoso el proceso ejecutado * dentro del m�todo. */ @SuppressWarnings("unchecked") public boolean armarMensajeMantenimiento(HttpServletRequest pedido, boolean caducar) { String ignorarCambios = Servicios.verificarCadena(pedido.getParameter("flagMaintenence")); String[] names = getNamesRequest(pedido); String[][] values = getValuesRequest(pedido, names); for (int b = 0; b < getXmlFormulario().size(); b++) { int pagina = obtenerPaginaBloque(b); HashSet cambios = new HashSet(); // Obtener los modificados for (int v = 0; v < names.length && v < values.length; v++) { DatoHttp dato = getXmlFormulario().getBloque(b).getDatoHttpPorName(names[v]); // bc: preparar notificaciones if (dato != null && (dato instanceof Notificacion)) { Notificacion notif = (Notificacion) dato; String usrAut = pedido.getParameterValues(getXmlFormulario().getBloque(b).getDatoHttpPorName( notif.getCampoUsrAut()).getName())[0]; String compMess = ""; Vector cmpVals = new Vector(); String listaCampos[] = notif.getListaCampos().split(","); for (int i = 0; i < listaCampos.length; i++) { for (int j = 0; j < getXmlFormulario().size(); j++) { DatoHttp datoHttp = getXmlFormulario().getBloque(j).getDatoHttpPorName(listaCampos[i]); if (datoHttp != null) { String valCmp = pedido.getParameterValues(datoHttp.getName())[0]; cmpVals.add(valCmp); break; } } } compMess = notif.getMensajeParsed(cmpVals); DatoGeneral ntf = new DatoGeneral("NTF", usrAut + "|" + notif.getErrorCapt() + "|" + notif.getSubsistema() + "|" + notif.getTransaccion() + "|" + notif.getVersion() + "|" + compMess); getXmlMensaje().autorizaciones.add(ntf); // permite } if (dato != null) { if (!dato.getOrigen().esCriterio() && !dato.getOrigen().getCodigo().equals("")) { for (int c = 0; c < dato.getClonacionMantenimiento() && c < values[v].length; c++) { String antes = ServiciosFormas.getValorDatoHttpConFormato(dato, dato.getValue(c)); String despues = ServiciosFormas.getValorDatoHttpConFormato(dato, ServiciosFormas .getValorDatoHttpSinFormato(dato, values[v][c])); if (ignorarCambios.equals(vOne) || !antes.equals(despues) || (caducar && StringUtils.isNotBlank(despues))) { cambios.add(new Integer(dato.getOrigen().getNumeroRegistro(c + 1))); } } } } } if (caducar && cambios.size() != 1) { String mensaje = "Solo se puede caducar un registro por vez."; getXmlMensaje().setValor("COD", "-1", MensajeXml.SEC_RES); getXmlMensaje().setValor("DSC", mensaje, MensajeXml.SEC_RES); return false; } Bloque bloque = new Bloque(); bloque.setNroBloque(getXmlFormulario().getBloque(b).getNroBloque()); bloque.setNroRegistros(cambios.size()); bloque.setNroPagina(pagina); // Anadir criterios y campos for (int c = 0; c < Math.max(1, getXmlFormulario().getBloque(b).getListaCamposConsultables() .getNumeroRegistrosMantenimiento()); c++) { for (int f = 0; f < getXmlFormulario().getBloque(b).size(); f++) { elementos: for (int e = 0; e < getXmlFormulario().getFila(b, f).size(); e++) { if (getXmlFormulario().getElemento(b, f, e) instanceof DatoHttp) { DatoHttp dato = (DatoHttp) getXmlFormulario().getElemento(b, f, e); String[] value = pedido.getParameterValues(dato.getName()); if (dato.getClonacionMantenimiento() <= c || value == null || value.length <= c) { continue elementos; } if (dato != null) { if (dato.getOrigen().getTipo().equals(Origen.TIPO_CRITERIO)) { bloque.add(new Criterio(dato.getOrigen().getCodigo(), ServiciosFormas .setValorDatoHttpSinFormato(dato, 0, setVariables(dato, value[0])))); } else if (dato.getOrigen().getTipo().equals(Origen.TIPO_ORDEN)) { ServiciosFormas.setValorDatoHttpSinFormato(dato, 0, setVariables(dato, value[0])); } else if (dato instanceof Escaner) { DatoHttp datoTarget = getXmlFormulario().getDatoHttpPorName( ((Escaner) dato).getNameCampoNumero()); if (datoTarget != null && cambios.contains(new Integer(datoTarget.getOrigen().getNumeroRegistro( c + 1)))) { com.FitBank.xml.Mensaje.Imagen i = new com.FitBank.xml.Mensaje.Imagen( datoTarget.getOrigen().getCodigo()); if (datoTarget.getValue(c) != null) { i.setValor(datoTarget.getValue(c)); } bloque.add(i); } } else if (!dato.getOrigen().getCodigo().equals("")) { if (cambios.contains(new Integer(dato.getOrigen().getNumeroRegistro(c + 1)))) { Campo campo = new Campo(dato.getOrigen().getCodigo(), dato.getValueConsulta(c)); campo.setNuevoValor(ServiciosFormas.setValorDatoHttpSinFormato(dato, c, setVariables(dato, value[c]))); campo.setInsert(dato.esInsertable() ? "1" : "0"); if (ignorarCambios.equals(vOne)) { campo.setValor(""); } Origen origenDependencias = (Origen) dato.getOrigen().clone(); if (dato.getOrigen().getTipo().equals(Origen.TIPO_DINAMICO)) { origenDependencias.setTipo(String.valueOf(c + 1)); } campo.colocarDependencias(origenDependencias); bloque.add(campo); } } ServiciosFormas.setValorDatoHttpSinFormato(dato, c, setVariables(dato, value[c])); } } } } } getXmlMensaje().setValor(bloque, MensajeXml.SEC_DET); } for (int b = 0; b < getXmlMensaje().detalle[0].size(); b++) { setValoresDependencias((Bloque) getXmlMensaje().detalle[0].elementAt(b)); } if (getXmlFormulario().getTipoMen().equals("UDL") && ignorarCambios.equals(vOne)) { for (int x = 0; x < getXmlMensaje().detalle[0].size(); x++) { borrarCampos(x); } } if (getXmlFormulario().getTipoMen().equals("UDL") && ignorarCambios.equals("")) { mensajeBackUp = new MensajeXml(); mensajeBackUp.encabezado = getXmlMensaje().encabezado; mensajeBackUp.detalle[0] = getXmlMensaje().detalle[0]; } return true; } private void setValoresDependencias(Bloque bloque) { for (int c = 0; c < bloque.size(); c++) { if (bloque.elementAt(c) instanceof Campo) { Campo campo = (Campo) bloque.elementAt(c); for (int d = 0; d < campo.size(); d++) { Dependencia dep = (Dependencia) campo.elementAt(d); Bloque bloqueDependencia = dep.getBloque() != -1 ? (Bloque) getXmlMensaje().detalle[0] .elementAt(dep.getBloque()) : bloque; FBloque fbloqueDependencia = getXmlFormulario().getBloque(bloqueDependencia.getNroBloque()); int registro = getXmlFormulario().esMaestroDetalle() ? fbloqueDependencia.getNroRegistro() : dep .getOrigen().getNumeroRegistro(); DatoHttp datoDep = getXmlFormulario().getDatoHttpPorOrigen(new Origen(dep.getNombre(), registro)); String valorDep = datoDep != null ? datoDep.getValue(datoDep.getOrigen().getTipo().equals( Origen.TIPO_DINAMICO) ? registro - 1 : 0) : ""; DatoHttp dato = fbloqueDependencia.getDatoHttpPorOrigen(new Origen(dep.getNombre(), Origen.TIPO_CRITERIO)); if (dato != null && dato .getValue( dato.getOrigen().getTipo().equals(Origen.TIPO_DINAMICO) ? registro - 1 : 0) .equals("")) { dato = null; } if (dato == null) { dato = getXmlFormulario().getDatoHttpPorOrigen(new Origen(dep.getNombre(), registro)); if (dato == null) { dato = getXmlFormulario().getDatoHttpPorOrigen( new Origen(dep.getNombre(), Origen.TIPO_CRITERIO)); if (dato != null && dato.getValue( dato.getOrigen().getTipo().equals(Origen.TIPO_DINAMICO) ? registro - 1 : 0) .equals("")) { dato = null; } for (int s = 1; dato == null && s < registro; s++) { dato = getXmlFormulario().getDatoHttpPorOrigen(new Origen(dep.getNombre(), s)); } } } dep.setValor(valorDep); dep.setValor(""); if (dato != null) { dep.setNuevoValor(dato .getValue(dato.getOrigen().getTipo().equals(Origen.TIPO_DINAMICO) ? registro - 1 : 0)); dep .setInsert(dato.esInsertable() && bloque.getNroBloque() == bloqueDependencia.getNroBloque() ? "1" : "0"); } } } } } /** * M�todo que elimina dado el n�mero de bloque los campos que se * encuentren en exceso, debido a los procesos de mantenimiento repetitivos * en el bloque dado. * * @param nroBloque * N�mero del bloque al cual se le aplicar� el proceso de * simplificaci�n de campos. */ private void borrarCampos(int nroBloque) { Bloque bloque = (Bloque) (getXmlMensaje().detalle[0].get(nroBloque)); int nroElements = bloque.campos.size(); Bloque bloqueBackUp = (Bloque) (mensajeBackUp.detalle[0].get(nroBloque)); int nroElementsBU = bloqueBackUp.campos.size(); ((Bloque) (getXmlMensaje().detalle[0].get(nroBloque))).setNroRegistros(((Bloque) (mensajeBackUp.detalle[0] .get(nroBloque))).getNroRegistros()); if (nroElements > nroElementsBU) { bloque.campos = Servicios.deleteElementsVector(nroElementsBU, bloque.campos); } } /** * M�todo que obtiene en un Array estatico todos los names de los * elementos HTML que pertenecen al request enviado. * * @param pedido * Objeto que contiene la peticion del cliente. * * @return Objeto array de vectores */ @SuppressWarnings("unchecked") protected String[] getNamesRequest(HttpServletRequest pedido) { try { Enumeration names = pedido.getParameterNames(); ArrayList namesList = new ArrayList(); while (names.hasMoreElements()) { namesList.add(names.nextElement()); } return (String[]) namesList.toArray(new String[0]); } catch (Exception e) { Debug.imprimirError(e); return new String[0]; } } /** * M�todo que permite obtener los valores de los elementos HTML pasados en * el Array de objetos, utilizando la petici�n enviada. * * @param request * Objeto que contiene la petici�n del cliente * @param names * Objeto que contiene los nombres de los objetos HTML de los * cuales se desea obtener los valores. * * @return Objeto que contiene los valores extraidos de la petici�n. */ protected String[][] getValuesRequest(HttpServletRequest request, String[] names) { try { String[][] ret = new String[names.length][]; for (int i = 0; i < names.length; i++) { ret[i] = request.getParameterValues(names[i]); } return ret; } catch (Exception e) { Debug.imprimirError(e); return new String[0][0]; } } /** * M�todo que recorre los elmentos del formulario y selecciona aquellos * que son Imagenes, y setea el path de la Imagen segun el tipo que imagen * que es la que se analiza. * * @param propietario * DatoHttp que es propietario de la imagen. * @param propTipDoc * cuando se obtiene la imagen desde la base de datos, indica el * propietario del c�digo de tipo de documento * (CTIPODOCUMENTO). * @param propTipPrs * cuando se obtiene la imagen desde la base de datos, indica el * propietario del c�digo de tipo de persona (CTIPOPERSONA). * * @return Un String con los parametros que se utilizar�n en javascript * para cargar im�genes en el formulario */ public String armarParametrosCargarImagenes(String propietario, String propTipDoc, String propTipPrs) { String pathImage; String tipoImagen; String loadImages = ""; try { for (int i = 0; i < getXmlFormulario().size(); i++) { for (int j = 0; j < getXmlFormulario().getBloque(i).size(); j++) { for (int k = 0; k < getXmlFormulario().getFila(i, j).size(); k++) { if (getXmlFormulario().getElemento(i, j, k) instanceof Imagen) { Imagen imagen = (Imagen) getXmlFormulario().getElemento(i, j, k); pathImage = "imagenes/mm/"; if (!imagen.getTipoImagen().equals(Imagen.TIPO_DB)) { if (imagen.getDatoPropietario().equalsIgnoreCase(propietario)) { tipoImagen = imagen.getTipoImagen(); if (tipoImagen.equals(Imagen.TIPO_FOTO)) { pathImage += "photo/"; } else if (tipoImagen.equals(Imagen.TIPO_FIRMA)) { pathImage += "firm/"; } else if (tipoImagen.equals(Imagen.TIPO_DOCUMENTO)) { pathImage += "document/"; } loadImages += (vLiteral + imagen.getDatoPropietario() + vEspacio + pathImage + vEspacio + imagen.getExtension() + vEspacio + imagen.getTexto() + vLiteral); } } else { if (imagen.getDatoPropietario().equalsIgnoreCase(propietario)) { loadImages += (vLiteral + imagen.getDatoPropietario() + vEspacio + propTipDoc + vEspacio + propTipPrs + vEspacio + imagen.getTexto() + "', true"); } } } } } } return loadImages; } catch (Exception e) { Debug.imprimirError(e); return null; } } /** * M�todo que recorre los elmentos del formulario y selecciona aquellos * que son Imagenes, y setea el path de la Imagen segun el tipo que imagen * que es la que se analiza. * * @param propietario * DatoHttp que es propietario de la imagen * * @return Un String con los parametros que se utilizar�n en javascript * para cargar im�genes en el formulario */ public String armarParametrosCargarImagenes(String propietario) { return armarParametrosCargarImagenes(propietario, "", ""); } /** * Metodo que arma un mensaje para la obtenci�n de datos para reportes. * * @param pedido * Pedido que viene desde el browser */ @SuppressWarnings("unchecked") public void armarMensajeReporte(HttpServletRequest pedido) { Bloque bloque = new Bloque(); Enumeration en = pedido.getParameterNames(); while (en.hasMoreElements()) { String nombre = (String) en.nextElement(); Criterio criterio = new Criterio(nombre, null); DatoHttp dato = getXmlFormulario().getDatoHttpPorName(nombre); if (dato != null) { setVariablesDatoHttp(dato); criterio.setValor(ServiciosFormas.setValorDatoHttpSinFormato(dato, 0, pedido.getParameter(nombre))); criterio.setTipo(dato.getTipoDato()); } bloque.add(criterio); } Criterio idioma = new Criterio("IDM", getXmlMensaje().getValor("IDM", MensajeXml.SEC_CAB)); Criterio compania = new Criterio(vFieldCID, getXmlMensaje().getValor(vFieldCID, MensajeXml.SEC_CAB)); idioma.setTipo("C"); compania.setTipo("C"); bloque.add(idioma); bloque.add(compania); getXmlMensaje().setValor(bloque, MensajeXml.SEC_DET); if (pedido.getParameter("sec") != null) { getXmlMensaje().setValor("SEC", pedido.getParameter("sec"), MensajeXml.SEC_CAB); } else { getXmlMensaje().setValor("SEC", "-1", MensajeXml.SEC_CAB); } } /** * Arma el mensaje de consulta de notificaciones. * * @param pedido * HttpServletRequest con el pedido desde el browser. * @throws Exception */ @SuppressWarnings("unchecked") public void armarMensajeConsultaNotificaciones(HttpServletRequest pedido) { String cia = getXmlMensaje().getValor(vFieldCID, MensajeXml.SEC_CAB); String usr = getXmlMensaje().getValor(vFieldUSRUpper, MensajeXml.SEC_CAB); Bloque bloque = new Bloque(); bloque.setNroBloque(0); bloque.setNroRegistros(50); // GregorianCalendar fechaActCal = new GregorianCalendar(); Date fechadesde = null; Date fechaprox = null; try { Dates fechasistema = new Dates(new Date(System.currentTimeMillis())); fechadesde = fechasistema.getDate(); fechasistema.addField(Calendar.DAY_OF_YEAR, 1); fechaprox = fechasistema.getDate(); //Un dia antes y un dia despues equivale a la fecha original. fechasistema.addField(Calendar.DAY_OF_YEAR, -2); fechadesde=fechasistema.getDate(); } catch (Exception e) { FitbankLogger.getLogger().error(e); } Criterio[] crit = { new Criterio(vFieldCompany, cia), new Criterio(vFieldUser, usr),new Criterio(vFieldFProcess, "IS NULL"), new Criterio(vFieldFNotificaction, "between date(" + fechadesde + ") and date(" + fechaprox + ")") }; Campo[] camposCons = { new Campo(vFieldCompany, ""), new Campo(vFieldUser, ""), new Campo(vFieldTexto, ""), new Campo(vFieldSubsistem, ""), new Campo(vFieldTransaction, ""), new Campo(vFieldFNotificaction, ""), new Campo(vFieldVersion, ""), new Campo(vFieldFProcess, ""), }; for (int i = 0; i < crit.length; i++) { bloque.add(crit[i]); } for (int i = 0; i < camposCons.length; i++) { bloque.add(camposCons[i]); } getXmlMensaje().setNroDetalles(1); getXmlMensaje().detalle[0].add(bloque); } /** * Arma el mensaje de consulta de mensajes para personas. * * @param pedido * HttpServletRequest con el pedido desde el browser. */ @SuppressWarnings("unchecked") public void armarMensajeConsultaMensajesUsuarioPersona(HttpServletRequest pedido) { String codigo = pedido.getParameter("codigoMensaje"); Bloque bloque = new Bloque(); bloque.setNroBloque(0); bloque.setNroRegistros(50); GregorianCalendar fechaActCal = new GregorianCalendar(); Date fechaAct = new Date(fechaActCal.getTimeInMillis()); Criterio[] crit = { new Criterio("493003", codigo), new Criterio("493005", "between to_date('" + fechaAct.toString() + " 00:00:00', 'yyyy-mm-dd hh24:mi:ss') and " + "to_date('31-12-2999 00:00:00', " + "'dd-mm-yyyy hh24:mi:ss')") }; Campo[] camposCons = { new Campo("493015", ""), new Campo("493001", ""), new Campo("493002", ""), new Campo("493012", ""), new Campo("493003", ""), new Campo("493004", ""), new Campo("493011", ""), new Campo("493005", ""), new Campo("493006", ""), new Campo("493007", ""), new Campo("493008", ""), new Campo("493009", ""), new Campo("493010", ""), new Campo("493014", "") }; for (int i = 0; i < crit.length; i++) { bloque.add(crit[i]); } for (int i = 0; i < camposCons.length; i++) { bloque.add(camposCons[i]); } getXmlMensaje().setNroDetalles(1); getXmlMensaje().detalle[0].add(bloque); } /** * Arma el mensaje de consulta de mensajes para cuentas. * * @param pedido * HttpServletRequest con el pedido desde el browser. */ @SuppressWarnings("unchecked") public void armarMensajeConsultaMensajesUsuarioCuenta(HttpServletRequest pedido) { String codigo = pedido.getParameter("codigoMensaje"); Bloque bloque = new Bloque(); bloque.setNroBloque(0); bloque.setNroRegistros(50); GregorianCalendar fechaActCal = new GregorianCalendar(); Date fechaAct = new Date(fechaActCal.getTimeInMillis()); Criterio[] crit = { new Criterio("492001", codigo), new Criterio("493005", "between to_date('" + fechaAct.toString() + " 00:00:00', 'yyyy-mm-dd hh24:mi:ss') and " + "to_date('31-12-2999 00:00:00', " + "'dd-mm-yyyy hh24:mi:ss')") }; Campo[] camposCons = { new Campo("492002", ""), new Campo("492001", ""), new Campo("492003", ""), new Campo("492004", ""), new Campo("492005", ""), new Campo("492012", ""), new Campo("492006", ""), new Campo("492007", ""), new Campo("492008", ""), new Campo("492009", ""), new Campo("492010", ""), new Campo("492011", ""), new Campo("492014", "") }; for (int i = 0; i < crit.length; i++) { bloque.add(crit[i]); } for (int i = 0; i < camposCons.length; i++) { bloque.add(camposCons[i]); } getXmlMensaje().setNroDetalles(1); getXmlMensaje().detalle[0].add(bloque); } /** * Arma el mensaje de consulta de campos consultables * * @param pedido * HttpServletRequest con el pedido desde el browser. */ @SuppressWarnings("unchecked") public void armarMensajeConsultaCamposConsultables(HttpServletRequest pedido) { List listaCriterios = (List) pedido.getSession().getAttribute("listaCamposMensajes"); if (listaCriterios != null) { Bloque bloque = new Bloque(); bloque.setNroBloque(0); bloque.setNroRegistros(50); for (int i = 0; i < listaCriterios.size(); i++) { bloque.add(new Criterio("16003", (String) listaCriterios.get(i))); } Campo[] camposCons = { new Campo("16001", ""), new Campo("16003", ""), new Campo("16005", ""), new Campo("16006", ""), new Campo("16030", ""), new Campo("16008", ""), new Campo("16031", ""), new Campo("16027", ""), new Campo("16017", ""), new Campo("16032", ""), new Campo("16018", ""), new Campo("16021", ""), new Campo("16024", ""), new Campo("16025", ""), new Campo("16013", ""), new Campo("16020", ""), new Campo("16029", ""), new Campo("16022", ""), new Campo("16023", ""), new Campo("16028", ""), new Campo("16026", ""), new Campo("16019", "") }; for (int i = 0; i < camposCons.length; i++) { bloque.add(camposCons[i]); } getXmlMensaje().setNroDetalles(1); getXmlMensaje().detalle[0].add(bloque); } } /** * Arma el mensaje de consulta para Tabla * * @param pedido * HttpServletRequest con el pedido desde el browser. */ public Bloque armarNuevoBloque() { String cia = getXmlMensaje().getValor(vFieldCID, MensajeXml.SEC_CAB); String usr = getXmlMensaje().getValor(vFieldUSRUpper, MensajeXml.SEC_CAB); Bloque bloque = new Bloque(); bloque.setNroBloque(1); bloque.setNroRegistros(50); Criterio[] crit = { new Criterio(vFieldCompany, cia), new Criterio(vFieldUser, usr), }; Campo[] camposCons = { new Campo(vFieldCompany, ""), new Campo(vFieldUser, ""), new Campo(vFieldTexto, ""), new Campo(vFieldSubsistem, ""), new Campo(vFieldTransaction, ""), new Campo(vFieldFNotificaction, ""), new Campo(vFieldVersion, ""), new Campo(vFieldFProcess, ""), }; for (int i = 0; i < crit.length; i++) { bloque.add(crit[i]); } for (int i = 0; i < camposCons.length; i++) { bloque.add(camposCons[i]); } return bloque; } /** * Arma el mensaje de mantenimiento de notificaciones. Seg�n los * par�metros enviados, ejecuta una inserci�n o una actualizaci�n de * una notificaci�n ya existente. * * @param pedido * HttpServletRequest con el pedido desde el browser. */ @SuppressWarnings("unchecked") public void armarMensajeMantenimientoNotificaciones(HttpServletRequest pedido) { String cia = getXmlMensaje().getValor(vFieldCID, MensajeXml.SEC_CAB); String usr = getXmlMensaje().getValor(vFieldUSRUpper, MensajeXml.SEC_CAB); GregorianCalendar today = new GregorianCalendar(); Criterio[] crit = { new Criterio(vFieldCompany, cia), new Criterio(vFieldUser, usr), new Criterio(vFieldFProcess, " between ('2004/01/01','2008/01/01')") }; Campo[] cmps = { new Campo(vFieldCompany, cia), new Campo(vFieldUser, (pedido.getParameter(vFieldUSRLower) != null ? pedido.getParameter(vFieldUSRLower) : usr)), pedido.getParameter(vFieldFnotif) != null ? new Campo(vFieldFNotificaction, pedido.getParameter(vFieldFnotif)) : null, pedido.getParameter(vFieldSub) != null ? new Campo(vFieldSubsistem, pedido.getParameter(vFieldSub)) : null, pedido.getParameter(vFieldTran) != null ? new Campo(vFieldTransaction, pedido.getParameter(vFieldTran)) : null, pedido.getParameter(vFieldVer) != null ? new Campo(vFieldVersion, pedido.getParameter(vFieldVer)) : null, pedido.getParameter(vFieldMen) != null ? new Campo(vFieldTexto, pedido.getParameter(vFieldMen)) : null }; Campo cmpToday = new Campo(pedido.getParameter(vFieldFnotif) != null ? "1231006" : "123005", today .get(Calendar.YEAR) + "-" + (today.get(Calendar.MONTH) < 9 ? "0" : "") + (today.get(Calendar.MONTH) + 1) + "-" + (today.get(Calendar.DAY_OF_MONTH) < 10 ? "0" : "") + today.get(Calendar.DAY_OF_MONTH) + " " + (today.get(Calendar.HOUR_OF_DAY) < 10 ? "0" : "") + today.get(Calendar.HOUR_OF_DAY) + "-" + (today.get(Calendar.MINUTE) < 10 ? "0" : "") + today.get(Calendar.MINUTE) + "-" + (today.get(Calendar.SECOND) < 10 ? "0" : "") + today.get(Calendar.SECOND)); cmpToday.setNuevoValor(cmpToday.getValor()); Bloque mant = new Bloque(); mant.setNroBloque(0); mant.setNroRegistros(1); for (int i = 0; i < crit.length; i++) { mant.add(crit[i]); } for (int i = 0; i < cmps.length; i++) { if (cmps[i] != null) { cmps[i].setNuevoValor(cmps[i].getValor()); cmps[i].setInsert("1"); mant.add(cmps[i]); } } mant.add(cmpToday); getXmlMensaje().setNroDetalles(1); getXmlMensaje().detalle[0].add(mant); } /** * Arma el mensaje de mantenimiento de mensajes de usuario. Seg�n los * par�metros enviados, ejecuta una inserci�n de un mensaje de usuario * ya existente. * * @param pedido * HttpServletRequest con el pedido desde el browser. */ @SuppressWarnings("unchecked") public void armarMensajeMantenimientoMensajesUsuario(HttpServletRequest pedido) { String cia = getXmlMensaje().getValor(vFieldCID, MensajeXml.SEC_CAB); String usr = getXmlMensaje().getValor(vFieldUSRUpper, MensajeXml.SEC_CAB); GregorianCalendar today = new GregorianCalendar(); Criterio[] crit = { new Criterio(vFieldCompany, cia), new Criterio(vFieldUser, usr) }; Campo[] cmps = { new Campo(vFieldCompany, cia), new Campo(vFieldUser, (pedido.getParameter(vFieldUSRLower) != null ? pedido.getParameter(vFieldUSRLower) : usr)), pedido.getParameter(vFieldFnotif) != null ? new Campo(vFieldFNotificaction, pedido.getParameter("fnotif")) : null, pedido.getParameter(vFieldSub) != null ? new Campo(vFieldSubsistem, pedido.getParameter(vFieldSub)) : null, pedido.getParameter(vFieldTran) != null ? new Campo(vFieldTransaction, pedido.getParameter(vFieldTran)) : null, pedido.getParameter(vFieldVer) != null ? new Campo(vFieldVersion, pedido.getParameter(vFieldVer)) : null, pedido.getParameter(vFieldMen) != null ? new Campo(vFieldTexto, pedido.getParameter(vFieldMen)) : null }; Campo cmpToday = new Campo(pedido.getParameter(vFieldFnotif) != null ? vFieldFProcess : "123005", today .get(Calendar.YEAR) + "-" + (today.get(Calendar.MONTH) < 9 ? "0" : "") + (today.get(Calendar.MONTH) + 1) + "-" + (today.get(Calendar.DAY_OF_MONTH) < 10 ? "0" : "") + today.get(Calendar.DAY_OF_MONTH) + " " + (today.get(Calendar.HOUR_OF_DAY) < 10 ? "0" : "") + today.get(Calendar.HOUR_OF_DAY) + "-" + (today.get(Calendar.MINUTE) < 10 ? "0" : "") + today.get(Calendar.MINUTE) + "-" + (today.get(Calendar.SECOND) < 10 ? "0" : "") + today.get(Calendar.SECOND)); cmpToday.setNuevoValor(cmpToday.getValor()); Bloque mant = new Bloque(); mant.setNroBloque(0); mant.setNroRegistros(1); for (int i = 0; i < crit.length; i++) { mant.add(crit[i]); } for (int i = 0; i < cmps.length; i++) { if (cmps[i] != null) { cmps[i].setNuevoValor(cmps[i].getValor()); cmps[i].setInsert("1"); mant.add(cmps[i]); } } mant.add(cmpToday); getXmlMensaje().setNroDetalles(1); getXmlMensaje().detalle[0].add(mant); } /** * M�todo que analiza si el formulario se encuentra en estado de INSERT y * si la respuesta es diferente de correcta, inserta en el Formulario un * elemento oculto que indica que se deben enviar todas las filas del * formulario. */ public void analizarFormularioMantenimiento() { String codigo = getXmlMensaje().getValor("COD", MensajeXml.SEC_RES); if (!codigo.equals("00005") && !codigo.equals("0") && getXmlFormulario().getFormASEstatus().equals(Formulario.FRM_INS) ) { insertarValueHttp("flagMaintenence", vOne); } else { modificarValueHttp("flagMaintenence", "SHUTDOWN"); } } }