ips1ap101.lib.core.web.app.GestorPaginaBasica.java Source code

Java tutorial

Introduction

Here is the source code for ips1ap101.lib.core.web.app.GestorPaginaBasica.java

Source

/*
 * Este programa es software libre; usted puede redistribuirlo y/o modificarlo bajo los trminos
 * de la licencia "GNU General Public License" publicada por la Fundacin "Free Software Foundation".
 * Este programa se distribuye con la esperanza de que pueda ser til, pero SIN NINGUNA GARANTIA;
 * vea la licencia "GNU General Public License" para obtener mas informacin.
 */
package ips1ap101.lib.core.web.app;

import com.sun.rave.web.ui.appbase.AbstractPageBean;
import com.sun.webui.jsf.component.Breadcrumbs;
import com.sun.webui.jsf.component.DropDown;
import com.sun.webui.jsf.component.Form.VirtualFormDescriptor;
import com.sun.webui.jsf.model.Option;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;
import java.util.Iterator;
import java.util.List;
import javax.faces.application.FacesMessage;
import ips1ap101.lib.base.app.constant.URX;
import ips1ap101.lib.base.bundle.BundleFunciones;
import ips1ap101.lib.base.constant.CPP;
import ips1ap101.lib.base.util.BitUtils;
import ips1ap101.lib.base.util.ThrowableUtils;
import ips1ap101.lib.core.CoreBundle;
import ips1ap101.lib.core.app.Bitacora;
import ips1ap101.lib.core.app.ConsultaBusqueda;
import ips1ap101.lib.core.app.FiltroBusqueda;
import ips1ap101.lib.core.app.ListaParametros;
import ips1ap101.lib.core.app.Mensaje;
import ips1ap101.lib.core.app.TLC;
import ips1ap101.lib.core.constant.Global;
import ips1ap101.lib.core.db.util.DBUtils;
import ips1ap101.lib.core.enumeration.EnumOpcionAbrirVentana;
import ips1ap101.lib.core.enumeration.EnumSeveridadMensaje;
import ips1ap101.lib.core.jsf.JSF;
import ips1ap101.lib.core.util.ClassX;
import ips1ap101.lib.core.util.JS;
import ips1ap101.lib.core.util.TypeValuePair;
import org.apache.commons.lang.ArrayUtils;
import org.apache.commons.lang.StringUtils;

/**
 * @author Jorge Campins
 */
public class GestorPaginaBasica {

    private String SIMPLE = getClass().getSimpleName();

    private static final String EXCEPTION_LOGGING = "exception_logging";

    public static GestorPaginaBasica newInstance() {
        Class<?> clase = GestorPaginaBasica.class;
        String subclase = ClassX.get().subclassName(clase, "page_delegate");
        Object instance = ClassX.get().newInstance(clase, subclase);
        return (GestorPaginaBasica) instance;
    }

    public static GestorPaginaBasica newInstance(PaginaBasica pagina) {
        Class<?> clase = GestorPaginaBasica.class;
        TypeValuePair parametro = new TypeValuePair(PaginaBasica.class, pagina);
        String subclase = ClassX.get().subclassName(clase, "page_delegate");
        Object instance = ClassX.get().newInstance(clase, subclase, parametro);
        return (GestorPaginaBasica) instance;
    }

    public GestorPaginaBasica() {
        designing = true;
        paginaBasica = null;
        i18n = GestorPaginaBasicaI18N.getInstance();
    }

    public GestorPaginaBasica(PaginaBasica pagina) {
        designing = false;
        paginaBasica = pagina;
        i18n = GestorPaginaBasicaI18N.getInstance();
        init();
    }

    private void init() {
        ThreadContext.setPaginaActual(getAbstractPageBean());
        ThreadContext.setGestorActual(this);
        /*
         * inicia contexto peticin
         */
        paginaBasica.getContextoPeticion();
    }

    protected boolean designing;

    public boolean isDesigning() {
        return designing;
    }

    protected String getDesignTimeString(String metodo) {
        return metodo + " @ " + getClass().getSimpleName();
    }

    private GestorPaginaBasicaI18N i18n;

    public GestorPaginaBasicaI18N getI18n() {
        return i18n;
    }

    protected boolean paginaAutorizada;

    public boolean isPaginaAutorizada() {
        return paginaAutorizada;
    }

    // <editor-fold defaultstate="collapsed" desc="propiedades estandar de la pagina basica">
    /**
     * Conserva el valor de la propiedad paginaBasica.
     */
    private PaginaBasica paginaBasica;

    /**
     * Getter para propiedad abstractPageBean.
     *
     * @return Valor de la propiedad abstractPageBean.
     */
    protected AbstractPageBean getAbstractPageBean() {
        return paginaBasica instanceof AbstractPageBean ? (AbstractPageBean) paginaBasica : null;
    }

    /**
     * Getter para propiedad paginaBasica.
     *
     * @return Valor de la propiedad paginaBasica.
     */
    protected PaginaBasica getPaginaBasica() {
        return paginaBasica;
    }

    /**
     * Getter para propiedad paginaBasicaConAccionMultiple.
     *
     * @return Valor de la propiedad paginaBasicaConAccionMultiple.
     */
    protected PaginaBasicaConAccionMultiple getPaginaBasicaConAccionMultiple() {
        return paginaBasica instanceof PaginaBasicaConAccionMultiple ? (PaginaBasicaConAccionMultiple) paginaBasica
                : null;
    }

    protected boolean isPaginaBasicaConAccionMultiple() {
        return paginaBasica instanceof PaginaBasicaConAccionMultiple;
    }

    public boolean isMensajeDisponible() {
        if (designing) {
            return true;
        }
        return StringUtils.isNotBlank(getMensaje());
    }

    public boolean isMensajeNoDisponible() {
        return !isMensajeDisponible();
    }

    /**
     * Getter para propiedad identificacionFuncionAccionPagina.
     *
     * @return Valor de la propiedad identificacionFuncionAccionPagina.
     */
    public Long getValorListaFuncionAccion1() {
        if (designing) {
            return null;
        }
        return getPaginaBasica().getContextoSesion().getIdentificacionFuncionAccionPagina();
    }

    /**
     * Setter para propiedad identificacionFuncionAccionPagina.
     *
     * @param funcion Nuevo valor de la propiedad identificacionFuncionAccionPagina.
     */
    public void setValorListaFuncionAccion1(Long valor) {
        getPaginaBasica().getContextoSesion().setIdentificacionFuncionAccionPagina(valor);
    }

    /**
     * Conserva el valor de la propiedad urlAnclaPie1.
     */
    private String urlAnclaPie1;

    /**
     * Getter para propiedad urlAnclaPie1.
     *
     * @return Valor de la propiedad urlAnclaPie1.
     */
    public String getUrlAnclaPie1() {
        if (designing) {
            return null;
        }
        return JSF.encodeURX(urlAnclaPie1);
    }

    /**
     * Setter para propiedad urlAnclaPie1.
     *
     * @param url Nuevo valor de la propiedad urlAnclaPie1.
     */
    public void setUrlAnclaPie1(String url) {
        urlAnclaPie1 = url;
    }

    /**
     * Conserva el valor de la propiedad mensaje.
     */
    private String mensaje;

    /**
     * Getter para propiedad mensaje.
     *
     * @return Valor de la propiedad mensaje.
     */
    public String getMensaje() {
        if (designing) {
            return getDesignTimeString("getMensaje");
        }
        return mensaje;
    }

    /**
     * Setter para propiedad mensaje.
     *
     * @param string Nuevo valor de la propiedad mensaje.
     */
    public void setMensaje(String string) {
        mensaje = string;
    }

    /**
     * Conserva el valor de la propiedad severidad.
     */
    private EnumSeveridadMensaje severidad;

    /**
     * Getter para propiedad severidad.
     *
     * @return Valor de la propiedad severidad.
     */
    public EnumSeveridadMensaje getSeveridad() {
        return severidad;
    }

    /**
     * Setter para propiedad severidad.
     *
     * @param enumSeveridadMensaje Nuevo valor de la propiedad severidad.
     */
    public void setSeveridad(EnumSeveridadMensaje enumSeveridadMensaje) {
        severidad = enumSeveridadMensaje;
    }

    /**
     * Conserva el valor de la propiedad paginaJSP.
     */
    private String paginaJSP;

    /**
     * Getter para propiedad paginaJSP.
     *
     * @return Valor de la propiedad paginaJSP.
     */
    public String getPaginaJSP() {
        return paginaJSP;
    }

    /**
     * Setter para propiedad paginaJSP.
     *
     * @param pagina Nuevo valor de la propiedad paginaJSP.
     */
    public void setPaginaJSP(String pagina) {
        paginaJSP = pagina;
    }

    /**
     * Conserva el valor de la propiedad peticionProcesada.
     */
    private boolean peticionProcesada = false;

    /**
     * Getter para propiedad peticionProcesada.
     *
     * @return Valor de la propiedad peticionProcesada.
     */
    public boolean isPeticionProcesada() {
        return peticionProcesada;
    }

    /**
     * Setter para propiedad peticionProcesada.
     *
     * @param b Nuevo valor de la propiedad peticionProcesada.
     */
    public void setPeticionProcesada(boolean b) {
        peticionProcesada = b;
    }

    /**
     * Conserva el valor de la propiedad recursion.
     */
    private boolean recursion = false;

    /**
     * Getter para propiedad recursion.
     *
     * @return Valor de la propiedad recursion.
     */
    public boolean isRecursion() {
        return recursion;
    }

    /**
     * Setter para propiedad recursion.
     *
     * @param b Nuevo valor de la propiedad recursion.
     */
    public void setRecursion(boolean b) {
        recursion = b;
    }

    /**
     * Conserva el valor de la propiedad reinicio.
     */
    private boolean reinicio = false;

    /**
     * Getter para propiedad reinicio.
     *
     * @return Valor de la propiedad reinicio.
     */
    public boolean isReinicio() {
        return reinicio;
    }

    /**
     * Setter para propiedad reinicio.
     *
     * @param b Nuevo valor de la propiedad reinicio.
     */
    public void setReinicio(boolean b) {
        reinicio = b;
    }

    /**
     * Conserva el valor de la propiedad restauracion.
     */
    private boolean restauracion = false;

    /**
     * Getter para propiedad restauracion.
     *
     * @return Valor de la propiedad restauracion.
     */
    public boolean isRestauracion() {
        return restauracion;
    }

    /**
     * Setter para propiedad restauracion.
     *
     * @param b Nuevo valor de la propiedad restauracion.
     */
    public void setRestauracion(boolean b) {
        restauracion = b;
    }

    /**
     * Conserva el valor de la propiedad retorno.
     */
    private boolean retorno = false;

    /**
     * Getter para propiedad retorno.
     *
     * @return Valor de la propiedad retorno.
     */
    public boolean isRetorno() {
        return retorno;
    }

    /**
     * Setter para propiedad retorno.
     *
     * @param b Nuevo valor de la propiedad retorno.
     */
    public void setRetorno(boolean b) {
        retorno = b;
    }

    /**
     * Conserva el valor de la propiedad retruque.
     */
    private boolean retruque = false;

    /**
     * Getter para propiedad retruque.
     *
     * @return Valor de la propiedad retruque.
     */
    public boolean isRetruque() {
        return retruque;
    }

    /**
     * Setter para propiedad retruque.
     *
     * @param b Nuevo valor de la propiedad retruque.
     */
    public void setRetruque(boolean b) {
        retruque = b;
    }

    /**
     * Conserva el valor de la propiedad focus.
     */
    private String focus;

    /**
     * Getter para propiedad focus.
     *
     * @return Valor de la propiedad focus.
     */
    public String getFocus() {
        return designing ? null : focus;
    }

    /**
     * Setter para propiedad focus.
     *
     * @param string Nuevo valor de la propiedad focus.
     */
    public void setFocus(String string) {
        focus = string;
    }

    /**
     * Conserva el valor de la propiedad preserveFocus.
     */
    private boolean preserveFocus = false;

    /**
     * Getter para propiedad preserveFocus.
     *
     * @return Valor de la propiedad preserveFocus.
     */
    public boolean isPreserveFocus() {
        return preserveFocus;
    }

    /**
     * Setter para propiedad preserveFocus.
     *
     * @param b Nuevo valor de la propiedad preserveFocus.
     */
    public void setPreserveFocus(boolean b) {
        preserveFocus = b;
    }

    /**
     * Conserva el valor de la propiedad preserveScroll.
     */
    private boolean preserveScroll = false;

    /**
     * Getter para propiedad preserveScroll.
     *
     * @return Valor de la propiedad preserveScroll.
     */
    public boolean isPreserveScroll() {
        return preserveScroll;
    }

    /**
     * Setter para propiedad preserveScroll.
     *
     * @param b Nuevo valor de la propiedad preserveScroll.
     */
    public void setPreserveScroll(boolean b) {
        preserveScroll = b;
    }

    private boolean botonesAccionSinImagen = true;

    /**
     * Getter para propiedad botonesAccionSinImagen.
     *
     * @return Valor de la propiedad botonesAccionSinImagen.
     */
    public boolean isBotonesAccionSinImagen() {
        return botonesAccionSinImagen;
    }

    protected String getToolTipHipervinculoMigasPan() {
        return designing ? null : getPaginaBasica().getEtiquetaMigasPan();
    }

    protected String getMensajePeticionPorOmision() {
        return null;
    }
    // </editor-fold>

    public void preiniciar() {
        track("preiniciar");
        getPaginaBasica().getContextoPeticion().setPaginaActual(getAbstractPageBean());
        getPaginaBasica().getContextoPeticion().setGestorActual(this);
        paginaAutorizada = getPaginaBasica().isPostBack();
        if (paginaAutorizada) {
        } else {
            autorizar();
            if (paginaAutorizada) {
            } else {
                redireccionar();
            }
        }
    }

    protected void autorizar() {
        track("autorizar");
        Long funcion = null;
        if (isPaginaBasicaConAccionMultiple()) {
            for (Option option : getPaginaBasicaConAccionMultiple().getOpcionesListaFuncionAccion()) {
                if (option.getValue() instanceof Long) {
                    funcion = (Long) option.getValue();
                    paginaAutorizada = TLC.getControlador().esFuncionAutorizada(funcion);
                    if (paginaAutorizada) {
                        break;
                    }
                }
            }
        }
        if (funcion == null) {
            paginaAutorizada = true;
        }
    }

    private void redireccionar() {
        track("redireccionar");
        String rpl = "";
        try {
            rpl = addParameter(rpl, Global.PARAMETRO_REDIRECT_REQUEST);
            JSF.redirect(URX.REJECT + rpl);
        } catch (IOException ex) {
            TLC.getBitacora().error(ex);
        }
    }

    private String addParameter(String rpl, String key) {
        String value = JSF.getRequestParameter(key);
        return StringUtils.isBlank(value) ? rpl
                : StringUtils.isBlank(rpl) ? "?" + key + "=" + value : rpl + "&" + key + "=" + value;
    }

    public void iniciar() {
        track("iniciar");
        setPeticionProcesada(false);
        setSeveridad(EnumSeveridadMensaje.INFORMATIVO);
        setRecursion(BitUtils.valueOf(JSF.getRequestParameter(Global.PARAMETRO_RECURSION)));
        setReinicio(getPaginaBasica().getContextoPeticion().getCondicionSesion() != null);
        setRestauracion(BitUtils.valueOf(getPaginaBasica().getContextoPeticion().getCondicionSesion()));
        setRetorno(StringUtils.isNotBlank(JSF.getRequestParameter(Global.PARAMETRO_RETRUCAR)));
        setFocus(null);
        String requestSP = getPaginaBasica().getFacesContext().getExternalContext().getRequestServletPath();
        String urlOrigen = requestSP
                + getPaginaBasica().getFacesContext().getExternalContext().getRequestPathInfo();
        String urlActual = requestSP + getPaginaBasica().getRequestPathInfo();
        setRetruque(getPaginaBasica().isPostBack() || (urlActual.equals(urlOrigen) && !isReinicio()));
        setPaginaJSP(urlActual);
        updateMigasSesion();
        trace();
    }

    private void trace() {
        track("trace@GestorPaginaBasica");
        trace("isRecursion=" + isRecursion());
        trace("isReinicio=" + isReinicio());
        trace("isRestauracion=" + isRestauracion());
        trace("isRetorno=" + isRetorno());
        trace("isRetruque=" + isRetruque());
        trace("contextoOrigen=" + getPaginaBasica().getFacesContext().getExternalContext().getRequestContextPath());
        trace("urlOrigen=" + getPaginaBasica().getFacesContext().getExternalContext().getRequestPathInfo());
        trace("urlActual=" + getPaginaBasica().getRequestPathInfo());
    }

    public void preprocesar() { /* no se ejecuta si al apenas abrir la pagina se hace click en un link con url */
        track("preprocesar");
        setPeticionProcesada(true);
    }

    public void prepresentar() {
        track("prepresentar");
        posprepresentar();
    }

    protected void posprepresentar() {
        String clientId = JSF.getFirstClientIdWithMessages();
        if (clientId != null) {
            setFocus(clientId);
            JSF.fixFacesMessages();
        }
        setMensajePeticion();
        setPropiedadesPresentacionPagina();
        tell();
        if (isRetorno() || !isPeticionProcesada()) {
            descartarFormulariosVirtuales();
        }
    }

    protected void setPropiedadesPresentacionPagina() {
        updateMigasPagina();
    }

    protected void removerHipervinculo(boolean remover) {
        if (remover) {
            Breadcrumbs migasSesion = getPaginaBasica().getContextoSesion().getMigas();
            JSF.removeHipervinculo(migasSesion, getPaginaJSP());
        }
    }

    protected void updateMigasSesion() {
        Breadcrumbs migasSesion = getPaginaBasica().getContextoSesion().getMigas();
        String text = getPaginaBasica().getEtiquetaMigasPan();
        String toolTip = getToolTipHipervinculoMigasPan();
        //      String url = getPaginaJSP();
        String url = getBreadcrumbsHyperlinkUrl();
        JSF.updateHipervinculo(migasSesion, text, toolTip, url);
    }

    protected void updateMigasPagina() {
        Breadcrumbs migasSesion = getPaginaBasica().getContextoSesion().getMigas();
        Breadcrumbs migasPagina = getPaginaBasica().getBreadcrumbs1();
        String text = getPaginaBasica().getEtiquetaMigasPan();
        String toolTip = getToolTipHipervinculoMigasPan();
        //      String url = getPaginaJSP();
        String url = getBreadcrumbsHyperlinkUrl();
        JSF.addHipervinculo(migasSesion, text, toolTip, url, isReinicio() && !isRecursion());
        JSF.addHipervinculos(migasSesion, migasPagina);
    }

    private String getBreadcrumbsHyperlinkUrl() {
        String url = null;
        String jsp = getPaginaJSP();
        if (StringUtils.isNotBlank(jsp)) {
            url = jsp;
            String opcion = getPaginaBasica().getContextoSesion().getOpcionCampoRetorno();
            if (StringUtils.isNotBlank(opcion)) {
                String campo = getPaginaBasica().getContextoSesion().getCampoAccionRetorno();
                String boton = getPaginaBasica().getContextoSesion().getBotonAccionRetorno();
                String dominio = getPaginaBasica().getContextoSesion().getDominioRetorno();
                url += "?" + CPP.ID_OPCION_CAMPO_RETORNO + "=" + opcion;
                if (StringUtils.isNotBlank(campo)) {
                    url += "&" + CPP.ID_CAMPO_ACCION_RETORNO + "=" + campo;
                }
                if (StringUtils.isNotBlank(boton)) {
                    url += "&" + CPP.ID_BOTON_ACCION_RETORNO + "=" + boton;
                }
                if (StringUtils.isNotBlank(dominio)) {
                    url += "&" + CPP.ID_DOMINIO_RETORNO + "=" + dominio;
                }
            }
        }
        return url;
    }

    public Object getIdentificacionOpcionSeleccionada(DropDown lista) {
        Option opcion = JSF.getOpcion(lista);
        if (opcion != null) {
            Object objeto = opcion.getValue();
            //          if (objeto != null && objeto instanceof Integer) {
            //              return (Integer) objeto;
            //          }
            //          if (objeto != null && objeto instanceof Long) {
            //              return (Long) objeto;
            //          }
            return objeto;
        }
        return null;
    }

    public String getEtiquetaOpcionSeleccionada(DropDown lista) {
        Option opcion = JSF.getOpcion(lista);
        return opcion == null ? null : opcion.getLabel();
    }

    public String getDescripcionOpcionSeleccionada(DropDown lista) {
        Option opcion = JSF.getOpcion(lista);
        return opcion == null ? null : opcion.getDescription();
    }

    public Option getOpcionListaDesplegable(Object valor, DropDown lista) {
        return JSF.getOpcion(valor, lista.getItems());
    }

    private static Calendar calendar = Calendar.getInstance();

    public Date getDefaultMinDate() {
        calendar.clear();
        //      calendar.setTime(getCurrentDate());
        //      calendar.add(Calendar.YEAR, -1);
        calendar.set(1900, 0, 1, 0, 0, 0);
        return calendar.getTime();
    }

    public Date getDefaultMaxDate() {
        calendar.clear();
        //      calendar.setTime(getCurrentDate());
        //      calendar.add(Calendar.YEAR, 1);
        calendar.set(2100, 11, 31, 23, 59, 59);
        return calendar.getTime();
    }

    public Date getCurrentDate() {
        calendar.clear();
        calendar.setTimeInMillis(System.currentTimeMillis());
        int y = calendar.get(Calendar.YEAR);
        int m = calendar.get(Calendar.MONTH);
        int d = calendar.get(Calendar.DAY_OF_MONTH);
        calendar.clear();
        calendar.set(y, m, d);
        return calendar.getTime();
    }

    public String getWhiteLabel() {
        if (designing) {
            return "abc";
        }
        return " ";
    }

    public Option[] getOpcionesListaFuncionAccionAutorizadas(List<Option> opciones) {
        Option[] array = new Option[opciones.size()];
        opciones.toArray(array);
        return getOpcionesListaFuncionAccionAutorizadas(array);
    }

    public Option[] getOpcionesListaFuncionAccionAutorizadas(Option[] opciones) {
        ArrayList<Option> autorizadas = new ArrayList<>();
        for (Option option : opciones) {
            if (option.getValue() instanceof Long) {
                if (TLC.getControlador().esFuncionAutorizada((Long) option.getValue())) {
                    autorizadas.add(option);
                }
            } else {
                autorizadas.add(option);
            }
        }
        return (Option[]) autorizadas.toArray(new Option[0]);
    }

    //  public Option getOpcionSeleccioneUnaOpcionListaComandoAbrir() {
    //      return getOpcionSeleccioneUnaOpcion(i18n.getEtiquetaSeleccioneUnaOpcionListaComandoAbrir());
    //  }
    //
    //  public Option getOpcionSeleccioneUnaOpcionListaComandoGuardar() {
    //      return getOpcionSeleccioneUnaOpcion(i18n.getEtiquetaSeleccioneUnaOpcionListaComandoGuardar());
    //  }
    //
    //  public Option getOpcionSeleccioneUnaOpcionListaComandoVer() {
    //      return getOpcionSeleccioneUnaOpcion(i18n.getEtiquetaSeleccioneUnaOpcionListaComandoVer());
    //  }
    //
    //  public Option getOpcionSeleccioneUnaOpcionListaFuncionEdicion() {
    //      return getOpcionSeleccioneUnaOpcion(i18n.getEtiquetaSeleccioneUnaOpcionListaFuncionEdicion());
    //  }
    //
    //  private Option getOpcionSeleccioneUnaOpcion(String etiqueta) {
    //      return new Option("", etiqueta);
    //  }
    //
    public Option getOpcionSeleccioneUnaOpcionListaFuncionAccion() {
        String label = i18n.getEtiquetaSeleccioneUnaOpcionListaFuncionAccion();
        String description = i18n.getInlineHelpListaFuncionAccion();
        return getOpcionSeleccioneUnaOpcion(label, description);
    }

    private Option getOpcionSeleccioneUnaOpcion(String etiqueta, String descripcion) {
        return new Option("", etiqueta, descripcion);
    }

    public Option getOpcionFuncion(long valor, String etiqueta) {
        String label = BundleFunciones.getString(etiqueta);
        String description = BundleFunciones.getInlineHelp(etiqueta);
        if (StringUtils.isBlank(description)) {
            description = i18n.getInlineHelpListaFuncionAccion();
        }
        return new Option(valor, label, description);
    }

    // <editor-fold defaultstate="collapsed" desc="metodos estandar para abrir archivos y/o paginas con el explorador">
    public void abrirArchivo(String file) {
        if (StringUtils.isBlank(file)) {
            return;
        }
        redirect(JSF.getFileURL(file));
    }

    public void abrirURI(String uri) {
        if (StringUtils.isBlank(uri)) {
            return;
        }
        redirect(JSF.encodeURI(uri));
    }

    public void abrirURL(String url) {
        if (StringUtils.isBlank(url)) {
            return;
        }
        redirect(JSF.encodeURL(url));
    }

    public void abrirURX(String urx) {
        if (StringUtils.isBlank(urx)) {
            return;
        }
        redirect(JSF.encodeURX(urx));
    }

    public void redirect(String url) {
        if (StringUtils.isBlank(url)) {
            return;
        }
        try {
            JSF.redirect(url);
        } catch (Exception ex) {
            handle(ex);
        }
    }
    // </editor-fold>

    // <editor-fold defaultstate="collapsed" desc="metodos estandar para obtener el script de los botones de la pagina basica">
    public String getScriptAbrirVentanaBuscarCodigo(String urx, long dominio, long funcion, String campo,
            String boton) {
        return TLC.getControlador().esFuncionAutorizada(funcion)
                ? getScriptAbrirVentanaBuscarCodigo(urx, dominio, campo, boton)
                : getScriptAbrirVentanaBuscarCodigo(dominio, funcion, campo, boton);
    }

    public String getScriptAbrirVentanaBuscarCodigo(String urx, long dominio, long funcion, String campo,
            String boton, FiltroBusqueda filtro) {
        return TLC.getControlador().esFuncionAutorizada(funcion)
                ? getScriptAbrirVentanaBuscarCodigo(urx, dominio, campo, boton, filtro)
                : getScriptAbrirVentanaBuscarCodigo(dominio, funcion, campo, boton, filtro);
    }

    public String getScriptAbrirVentanaBuscarCodigo(String urx, long dominio, long funcion, String campo,
            String boton, ConsultaBusqueda consulta) {
        return TLC.getControlador().esFuncionAutorizada(funcion)
                ? getScriptAbrirVentanaBuscarCodigo(urx, dominio, campo, boton, consulta)
                : getScriptAbrirVentanaBuscarCodigo(dominio, funcion, campo, boton, consulta);
    }

    public String getScriptAbrirVentanaBuscarIdentificacion(String urx, long dominio, long funcion, String campo,
            String boton) {
        return TLC.getControlador().esFuncionAutorizada(funcion)
                ? getScriptAbrirVentanaBuscarIdentificacion(urx, dominio, campo, boton)
                : getScriptAbrirVentanaBuscarIdentificacion(dominio, funcion, campo, boton);
    }

    public String getScriptAbrirVentanaBuscarIdentificacion(String urx, long dominio, long funcion, String campo,
            String boton, FiltroBusqueda filtro) {
        return TLC.getControlador().esFuncionAutorizada(funcion)
                ? getScriptAbrirVentanaBuscarIdentificacion(urx, dominio, campo, boton, filtro)
                : getScriptAbrirVentanaBuscarIdentificacion(dominio, funcion, campo, boton, filtro);
    }

    public String getScriptAbrirVentanaBuscarIdentificacion(String urx, long dominio, long funcion, String campo,
            String boton, ConsultaBusqueda consulta) {
        return TLC.getControlador().esFuncionAutorizada(funcion)
                ? getScriptAbrirVentanaBuscarIdentificacion(urx, dominio, campo, boton, consulta)
                : getScriptAbrirVentanaBuscarIdentificacion(dominio, funcion, campo, boton, consulta);
    }

    public String getScriptAbrirVentanaBuscar(String urx, long dominio, long funcion, String columna, String campo,
            String boton) {
        return TLC.getControlador().esFuncionAutorizada(funcion)
                ? getScriptAbrirVentanaBuscar(urx, dominio, columna, campo, boton)
                : getScriptAbrirVentanaBuscar(dominio, funcion, columna, campo, boton);
    }

    public String getScriptAbrirVentanaBuscar(String urx, long dominio, long funcion, String columna, String campo,
            String boton, FiltroBusqueda filtro) {
        return TLC.getControlador().esFuncionAutorizada(funcion)
                ? getScriptAbrirVentanaBuscar(urx, dominio, columna, campo, boton, filtro)
                : getScriptAbrirVentanaBuscar(dominio, funcion, columna, campo, boton, filtro);
    }

    public String getScriptAbrirVentanaBuscar(String urx, long dominio, long funcion, String columna, String campo,
            String boton, ConsultaBusqueda consulta) {
        return TLC.getControlador().esFuncionAutorizada(funcion)
                ? getScriptAbrirVentanaBuscar(urx, dominio, columna, campo, boton, consulta)
                : getScriptAbrirVentanaBuscar(dominio, funcion, columna, campo, boton, consulta);
    }

    public String getScriptAbrirVentanaBuscarCodigo(long dominio, long funcion, String campo) {
        return getScriptAbrirVentanaBuscar(dominio, funcion, EnumOpcionAbrirVentana.BUSCAR_CODIGO, campo, null,
                false);
    }

    public String getScriptAbrirVentanaBuscarCodigo(long dominio, long funcion, String campo, String boton) {
        return getScriptAbrirVentanaBuscar(dominio, funcion, EnumOpcionAbrirVentana.BUSCAR_CODIGO, campo, boton,
                false);
    }

    public String getScriptAbrirVentanaBuscarCodigo(long dominio, long funcion, String campo, boolean arbol) {
        return getScriptAbrirVentanaBuscar(dominio, funcion, EnumOpcionAbrirVentana.BUSCAR_CODIGO, campo, null,
                arbol);
    }

    public String getScriptAbrirVentanaBuscarCodigo(long dominio, long funcion, String campo, String boton,
            boolean arbol) {
        return getScriptAbrirVentanaBuscar(dominio, funcion, EnumOpcionAbrirVentana.BUSCAR_CODIGO, campo, boton,
                arbol);
    }

    public String getScriptAbrirVentanaBuscarCodigo(long dominio, long funcion, String campo, String boton,
            FiltroBusqueda filtro) {
        return getScriptAbrirVentanaBuscar(dominio, funcion, EnumOpcionAbrirVentana.BUSCAR_CODIGO, campo, boton,
                filtro);
    }

    public String getScriptAbrirVentanaBuscarCodigo(long dominio, long funcion, String campo, String boton,
            ConsultaBusqueda consulta) {
        return getScriptAbrirVentanaBuscar(dominio, funcion, EnumOpcionAbrirVentana.BUSCAR_CODIGO, campo, boton,
                consulta);
    }

    public String getScriptAbrirVentanaBuscarIdentificacion(long dominio, long funcion, String campo) {
        return getScriptAbrirVentanaBuscar(dominio, funcion, EnumOpcionAbrirVentana.BUSCAR_ID, campo, null, false);
    }

    public String getScriptAbrirVentanaBuscarIdentificacion(long dominio, long funcion, String campo,
            String boton) {
        return getScriptAbrirVentanaBuscar(dominio, funcion, EnumOpcionAbrirVentana.BUSCAR_ID, campo, boton, false);
    }

    public String getScriptAbrirVentanaBuscarIdentificacion(long dominio, long funcion, String campo,
            boolean arbol) {
        return getScriptAbrirVentanaBuscar(dominio, funcion, EnumOpcionAbrirVentana.BUSCAR_ID, campo, null, arbol);
    }

    public String getScriptAbrirVentanaBuscarIdentificacion(long dominio, long funcion, String campo, String boton,
            boolean arbol) {
        return getScriptAbrirVentanaBuscar(dominio, funcion, EnumOpcionAbrirVentana.BUSCAR_ID, campo, boton, arbol);
    }

    public String getScriptAbrirVentanaBuscarIdentificacion(long dominio, long funcion, String campo, String boton,
            FiltroBusqueda filtro) {
        return getScriptAbrirVentanaBuscar(dominio, funcion, EnumOpcionAbrirVentana.BUSCAR_ID, campo, boton,
                filtro);
    }

    public String getScriptAbrirVentanaBuscarIdentificacion(long dominio, long funcion, String campo, String boton,
            ConsultaBusqueda consulta) {
        return getScriptAbrirVentanaBuscar(dominio, funcion, EnumOpcionAbrirVentana.BUSCAR_ID, campo, boton,
                consulta);
    }

    public String getScriptAbrirVentanaBuscar(long dominio, long funcion, EnumOpcionAbrirVentana opcion,
            String campo, String boton) {
        return getScriptAbrirVentanaBuscar(dominio, funcion, opcion, campo, boton, false);
    }

    public String getScriptAbrirVentanaBuscar(long dominio, long funcion, EnumOpcionAbrirVentana opcion,
            String campo, String boton, boolean arbol) {
        String urx = arbol ? URX.ARBOL_RECURSOS : URX.LISTA_RECURSOS;
        return JSF.getOpenSearchWindowJavaScript(urx, dominio, opcion, campo, boton,
                getListaParametrosFuncion(funcion));
    }

    public String getScriptAbrirVentanaBuscar(long dominio, long funcion, EnumOpcionAbrirVentana opcion,
            String campo, String boton, FiltroBusqueda filtro) {
        String urx = URX.LISTA_RECURSOS;
        return JSF.getOpenSearchWindowJavaScript(urx, dominio, opcion, campo, boton,
                getListaParametrosFuncion(funcion, filtro));
    }

    public String getScriptAbrirVentanaBuscar(long dominio, long funcion, EnumOpcionAbrirVentana opcion,
            String campo, String boton, ConsultaBusqueda consulta) {
        String urx = URX.LISTA_RECURSOS;
        return JSF.getOpenSearchWindowJavaScript(urx, dominio, opcion, campo, boton,
                getListaParametrosFuncion(funcion, consulta));
    }

    public String getScriptAbrirVentanaBuscar(long dominio, long funcion, String columna, String campo,
            String boton) {
        return getScriptAbrirVentanaBuscar(dominio, funcion, columna, campo, boton, false);
    }

    public String getScriptAbrirVentanaBuscar(long dominio, long funcion, String columna, String campo,
            String boton, boolean arbol) {
        String urx = arbol ? URX.ARBOL_RECURSOS : URX.LISTA_RECURSOS;
        return JSF.getOpenSearchWindowJavaScript(urx, dominio, columna, campo, boton,
                getListaParametrosFuncion(funcion));
    }

    public String getScriptAbrirVentanaBuscar(long dominio, long funcion, String columna, String campo,
            String boton, FiltroBusqueda filtro) {
        String urx = URX.LISTA_RECURSOS;
        return JSF.getOpenSearchWindowJavaScript(urx, dominio, columna, campo, boton,
                getListaParametrosFuncion(funcion, filtro));
    }

    public String getScriptAbrirVentanaBuscar(long dominio, long funcion, String columna, String campo,
            String boton, ConsultaBusqueda consulta) {
        String urx = URX.LISTA_RECURSOS;
        return JSF.getOpenSearchWindowJavaScript(urx, dominio, columna, campo, boton,
                getListaParametrosFuncion(funcion, consulta));
    }

    public String getScriptAbrirVentanaBuscarCodigo(String urx, long dominio, String campo) {
        return getScriptAbrirVentanaBuscar(urx, dominio, EnumOpcionAbrirVentana.BUSCAR_CODIGO, campo, null, null,
                (FiltroBusqueda) null);
    }

    public String getScriptAbrirVentanaBuscarCodigo(String urx, long dominio, String campo, String boton) {
        return getScriptAbrirVentanaBuscar(urx, dominio, EnumOpcionAbrirVentana.BUSCAR_CODIGO, campo, boton, null,
                (FiltroBusqueda) null);
    }

    public String getScriptAbrirVentanaBuscarCodigo(String urx, long dominio, String campo, String boton,
            Long maestro) {
        return getScriptAbrirVentanaBuscar(urx, dominio, EnumOpcionAbrirVentana.BUSCAR_CODIGO, campo, boton,
                maestro, (FiltroBusqueda) null);
    }

    public String getScriptAbrirVentanaBuscarCodigo(String urx, long dominio, String campo, String boton,
            FiltroBusqueda filtro) {
        return getScriptAbrirVentanaBuscar(urx, dominio, EnumOpcionAbrirVentana.BUSCAR_CODIGO, campo, boton, null,
                filtro);
    }

    public String getScriptAbrirVentanaBuscarCodigo(String urx, long dominio, String campo, String boton,
            ConsultaBusqueda consulta) {
        return getScriptAbrirVentanaBuscar(urx, dominio, EnumOpcionAbrirVentana.BUSCAR_CODIGO, campo, boton, null,
                consulta);
    }

    public String getScriptAbrirVentanaBuscarCodigo(String urx, long dominio, String campo, String boton,
            Long maestro, FiltroBusqueda filtro) {
        return getScriptAbrirVentanaBuscar(urx, dominio, EnumOpcionAbrirVentana.BUSCAR_CODIGO, campo, boton,
                maestro, filtro);
    }

    public String getScriptAbrirVentanaBuscarCodigo(String urx, long dominio, String campo, String boton,
            Long maestro, ConsultaBusqueda consulta) {
        return getScriptAbrirVentanaBuscar(urx, dominio, EnumOpcionAbrirVentana.BUSCAR_CODIGO, campo, boton,
                maestro, consulta);
    }

    public String getScriptAbrirVentanaBuscarCodigo(String urx, long dominio, String campo, String boton,
            ListaParametros rpl) {
        return getScriptAbrirVentanaBuscar(urx, dominio, EnumOpcionAbrirVentana.BUSCAR_CODIGO, campo, boton, rpl);
    }

    public String getScriptAbrirVentanaBuscarIdentificacion(String urx, long dominio, String campo) {
        return getScriptAbrirVentanaBuscar(urx, dominio, EnumOpcionAbrirVentana.BUSCAR_ID, campo, null, null,
                (FiltroBusqueda) null);
    }

    public String getScriptAbrirVentanaBuscarIdentificacion(String urx, long dominio, String campo, String boton) {
        return getScriptAbrirVentanaBuscar(urx, dominio, EnumOpcionAbrirVentana.BUSCAR_ID, campo, boton, null,
                (FiltroBusqueda) null);
    }

    public String getScriptAbrirVentanaBuscarIdentificacion(String urx, long dominio, String campo, String boton,
            Long maestro) {
        return getScriptAbrirVentanaBuscar(urx, dominio, EnumOpcionAbrirVentana.BUSCAR_ID, campo, boton, maestro,
                (FiltroBusqueda) null);
    }

    public String getScriptAbrirVentanaBuscarIdentificacion(String urx, long dominio, String campo, String boton,
            FiltroBusqueda filtro) {
        return getScriptAbrirVentanaBuscar(urx, dominio, EnumOpcionAbrirVentana.BUSCAR_ID, campo, boton, null,
                filtro);
    }

    public String getScriptAbrirVentanaBuscarIdentificacion(String urx, long dominio, String campo, String boton,
            ConsultaBusqueda consulta) {
        return getScriptAbrirVentanaBuscar(urx, dominio, EnumOpcionAbrirVentana.BUSCAR_ID, campo, boton, null,
                consulta);
    }

    public String getScriptAbrirVentanaBuscarIdentificacion(String urx, long dominio, String campo, String boton,
            Long maestro, FiltroBusqueda filtro) {
        return getScriptAbrirVentanaBuscar(urx, dominio, EnumOpcionAbrirVentana.BUSCAR_ID, campo, boton, maestro,
                filtro);
    }

    public String getScriptAbrirVentanaBuscarIdentificacion(String urx, long dominio, String campo, String boton,
            Long maestro, ConsultaBusqueda consulta) {
        return getScriptAbrirVentanaBuscar(urx, dominio, EnumOpcionAbrirVentana.BUSCAR_ID, campo, boton, maestro,
                consulta);
    }

    public String getScriptAbrirVentanaBuscarIdentificacion(String urx, long dominio, String campo, String boton,
            ListaParametros rpl) {
        return getScriptAbrirVentanaBuscar(urx, dominio, EnumOpcionAbrirVentana.BUSCAR_ID, campo, boton, rpl);
    }

    public String getScriptAbrirVentanaBuscar(String urx, long dominio, EnumOpcionAbrirVentana opcion, String campo,
            String boton) {
        return getScriptAbrirVentanaBuscar(urx, dominio, opcion, campo, boton, null, (FiltroBusqueda) null);
    }

    public String getScriptAbrirVentanaBuscar(String urx, long dominio, EnumOpcionAbrirVentana opcion, String campo,
            String boton, Long maestro) {
        return getScriptAbrirVentanaBuscar(urx, dominio, opcion, campo, boton, maestro, (FiltroBusqueda) null);
    }

    public String getScriptAbrirVentanaBuscar(String urx, long dominio, EnumOpcionAbrirVentana opcion, String campo,
            String boton, FiltroBusqueda filtro) {
        return getScriptAbrirVentanaBuscar(urx, dominio, opcion, campo, boton, null, filtro);
    }

    public String getScriptAbrirVentanaBuscar(String urx, long dominio, EnumOpcionAbrirVentana opcion, String campo,
            String boton, ConsultaBusqueda consulta) {
        return getScriptAbrirVentanaBuscar(urx, dominio, opcion, campo, boton, null, consulta);
    }

    public String getScriptAbrirVentanaBuscar(String urx, long dominio, EnumOpcionAbrirVentana opcion, String campo,
            String boton, Long maestro, FiltroBusqueda filtro) {
        return getScriptAbrirVentanaBuscar(urx, dominio, opcion, campo, boton,
                getListaParametrosMaestro(maestro, filtro));
    }

    public String getScriptAbrirVentanaBuscar(String urx, long dominio, EnumOpcionAbrirVentana opcion, String campo,
            String boton, Long maestro, ConsultaBusqueda consulta) {
        return getScriptAbrirVentanaBuscar(urx, dominio, opcion, campo, boton,
                getListaParametrosMaestro(maestro, consulta));
    }

    public String getScriptAbrirVentanaBuscar(String urx, long dominio, EnumOpcionAbrirVentana opcion, String campo,
            String boton, ListaParametros rpl) {
        return JSF.getOpenSearchWindowJavaScript(urx, dominio, opcion, campo, boton, rpl);
    }

    public String getScriptAbrirVentanaBuscar(String urx, long dominio, String columna, String campo,
            String boton) {
        return getScriptAbrirVentanaBuscar(urx, dominio, columna, campo, boton, null, (FiltroBusqueda) null);
    }

    public String getScriptAbrirVentanaBuscar(String urx, long dominio, String columna, String campo, String boton,
            Long maestro) {
        return getScriptAbrirVentanaBuscar(urx, dominio, columna, campo, boton, maestro, (FiltroBusqueda) null);
    }

    public String getScriptAbrirVentanaBuscar(String urx, long dominio, String columna, String campo, String boton,
            FiltroBusqueda filtro) {
        return getScriptAbrirVentanaBuscar(urx, dominio, columna, campo, boton, null, filtro);
    }

    public String getScriptAbrirVentanaBuscar(String urx, long dominio, String columna, String campo, String boton,
            ConsultaBusqueda consulta) {
        return getScriptAbrirVentanaBuscar(urx, dominio, columna, campo, boton, null, consulta);
    }

    public String getScriptAbrirVentanaBuscar(String urx, long dominio, String columna, String campo, String boton,
            Long maestro, FiltroBusqueda filtro) {
        return getScriptAbrirVentanaBuscar(urx, dominio, columna, campo, boton,
                getListaParametrosMaestro(maestro, filtro));
    }

    public String getScriptAbrirVentanaBuscar(String urx, long dominio, String columna, String campo, String boton,
            Long maestro, ConsultaBusqueda consulta) {
        return getScriptAbrirVentanaBuscar(urx, dominio, columna, campo, boton,
                getListaParametrosMaestro(maestro, consulta));
    }

    public String getScriptAbrirVentanaBuscar(String urx, long dominio, String columna, String campo, String boton,
            ListaParametros rpl) {
        return JSF.getOpenSearchWindowJavaScript(urx, dominio, columna, campo, boton, rpl);
    }

    public String getScriptAbrirVentanaVerRastroInformes() {
        String urx = URX.RASTRO_INFORME;
        return JSF.getOpenWindowJavaScript(urx, null);
    }

    public String getScriptAbrirVentanaVerRastroProcesos() {
        String urx = URX.RASTRO_PROCESO;
        return JSF.getOpenWindowJavaScript(urx, null);
    }

    public String getScriptAbrirVentana(String urx, Long recurso) { // a.k.a. getScriptAbrirVentanaVerConsola
        ListaParametros listaParametrosRecurso = getListaParametrosRecurso(recurso);
        String rpl = listaParametrosRecurso.toString();
        return recurso == null ? null : JSF.getOpenWindowJavaScript(urx, rpl);
    }

    public String getScriptAbrirVentanaVerDetalle(String urx, Long recurso) {
        ListaParametros listaParametrosRecurso = getListaParametrosRecurso(recurso);
        //      ListaParametros listaParametrosRetorno = getListaParametrosRetorno();
        //      listaParametrosRetorno.addAll(listaParametrosRecurso);
        //      String rpl = listaParametrosRetorno.toString();
        String rpl = listaParametrosRecurso.toString();
        return recurso == null ? null : JSF.getOpenDetailWindowJavaScript(urx, rpl);
    }

    public String getScriptAbrirVinculo() {
        return null;
    }

    public String getScriptAbrirVentanaBuscarNoDisponible() {
        return JS.getAlertScript("funcion_buscar_recurso_no_disponible");
    }

    public String getScriptAbrirVentanaVerDetalleNoDisponible() {
        return JS.getAlertScript("funcion_ver_detalle_recurso_no_disponible");
    }

    public ListaParametros getListaParametrosFuncion(long funcion) {
        return getListaParametrosFuncion(funcion, (FiltroBusqueda) null);
    }

    public ListaParametros getListaParametrosFuncion(long funcion, FiltroBusqueda filtro) {
        ListaParametros rpl = new ListaParametros();
        rpl.addParametro(CPP.ID_FUNCION_REFERENCIA, Long.valueOf(funcion));
        if (filtro != null) {
            String criterios = StringUtils.trimToNull(filtro.toString());
            if (criterios != null) {
                rpl.addParametro(FiltroBusqueda.class.getSimpleName(), criterios);
            }
        }
        return rpl;
    }

    public ListaParametros getListaParametrosFuncion(long funcion, ConsultaBusqueda consulta) {
        ListaParametros rpl = new ListaParametros();
        rpl.addParametro(CPP.ID_FUNCION_REFERENCIA, Long.valueOf(funcion));
        if (consulta != null) {
            rpl.addParametro(ConsultaBusqueda.class.getSimpleName(), consulta.getId());
            String criterios = StringUtils.trimToNull(consulta.getCriteriosConjugados());
            if (criterios != null) {
                rpl.addParametro(FiltroBusqueda.class.getSimpleName(), criterios);
            }
        }
        return rpl;
    }

    public ListaParametros getListaParametrosRecurso(Long recurso) {
        ListaParametros rpl = new ListaParametros();
        if (BitUtils.valueOf(recurso)) {
            rpl.addParametro(CPP.ID_RECURSO, recurso);
        }
        return rpl;
    }

    public ListaParametros getListaParametrosMaestro(Long maestro, FiltroBusqueda filtro) {
        boolean masterly = BitUtils.valueOf(maestro);
        if (masterly || filtro != null) {
            ListaParametros rpl = new ListaParametros();
            if (masterly) {
                rpl.addParametro(CPP.ID_RECURSO_MAESTRO, maestro);
            }
            if (filtro != null) {
                String criterios = StringUtils.trimToNull(filtro.toString());
                if (criterios != null) {
                    rpl.addParametro(FiltroBusqueda.class.getSimpleName(), criterios);
                }
            }
            return rpl;
        }
        return null;
    }

    public ListaParametros getListaParametrosMaestro(Long maestro, ConsultaBusqueda consulta) {
        boolean masterly = BitUtils.valueOf(maestro);
        if (masterly || consulta != null) {
            ListaParametros rpl = new ListaParametros();
            if (masterly) {
                rpl.addParametro(CPP.ID_RECURSO_MAESTRO, maestro);
            }
            if (consulta != null) {
                rpl.addParametro(ConsultaBusqueda.class.getSimpleName(), consulta.getId());
                String criterios = StringUtils.trimToNull(consulta.getCriteriosConjugados());
                if (criterios != null) {
                    rpl.addParametro(FiltroBusqueda.class.getSimpleName(), criterios);
                }
            }
            return rpl;
        }
        return null;
    }

    protected ListaParametros getListaParametrosRetorno() {
        ListaParametros rpl = new ListaParametros();
        String opcionCampoRetorno = getPaginaBasica().getContextoSesion().getOpcionCampoRetorno();
        if (StringUtils.isNotBlank(opcionCampoRetorno)) {
            rpl.addParametro(CPP.ID_OPCION_CAMPO_RETORNO, opcionCampoRetorno);
            String campoAccionRetorno = getPaginaBasica().getContextoSesion().getCampoAccionRetorno();
            if (StringUtils.isNotBlank(campoAccionRetorno)) {
                rpl.addParametro(CPP.ID_CAMPO_ACCION_RETORNO, campoAccionRetorno);
            }
            String botonAccionRetorno = getPaginaBasica().getContextoSesion().getBotonAccionRetorno();
            if (StringUtils.isNotBlank(botonAccionRetorno)) {
                rpl.addParametro(CPP.ID_BOTON_ACCION_RETORNO, botonAccionRetorno);
            }
            String dominioRetorno = getPaginaBasica().getContextoSesion().getDominioRetorno();
            if (StringUtils.isNotBlank(dominioRetorno)) {
                rpl.addParametro(CPP.ID_DOMINIO_RETORNO, dominioRetorno);
            }
        }
        return rpl;
    }
    // </editor-fold>

    // <editor-fold defaultstate="collapsed" desc="metodos estandar para obtener el estilo de botones e hipervinculos">
    public String getEstiloBotonesAccion() {
        return isBotonesAccionSinImagen() ? "width: 64px" : null;
    }

    public String getEstiloHipervinculos() {
        return "margin-right: 8px";
    }
    // </editor-fold>

    // <editor-fold defaultstate="collapsed" desc="metodos estandar para obtener el url de la imagen botones e hipervinculos">
    public String getUrlImagenAbrirVinculo() {
        return "/resources/open_link_enabled.gif";
    }

    public String getUrlImagenAbrirVinculoInhabilitado() {
        return "/resources/open_link_disabled.gif";
    }

    public String getUrlImagenAbrirVinculoHabilitado() {
        return "/resources/open_link_enabled.gif";
    }

    public String getUrlImagenAbrirVentanaBuscar() {
        return "/resources/search.gif";
    }

    public String getUrlImagenEjecutarInforme() {
        return "/resources/run_report.gif";
    }

    public String getUrlImagenEjecutarInformeInhabilitado() {
        return "/resources/run_report_dimmed.gif";
    }

    public String getUrlImagenEjecutarProceso() {
        return "/resources/run.gif";
    }

    public String getUrlImagenEjecutarProcesoInhabilitado() {
        return "/resources/run_dimmed.gif";
    }

    public String getUrlImagenExportarArchivo() {
        return "/resources/run_export.gif";
    }

    public String getUrlImagenExportarArchivoInhabilitado() {
        return "/resources/run_export_dimmed.gif";
    }

    public String getUrlImagenEjecutarVinculo() {
        return "/resources/run_link_enabled.gif";
    }

    public String getUrlImagenEjecutarVinculoInhabilitado() {
        return "/resources/run_link_disabled.gif";
    }

    public String getUrlImagenEjecutarVinculoHabilitado() {
        return "/resources/run_link_enabled.gif";
    }

    public String getUrlImagenSeveridadMensaje() {
        if (designing) {
            return "/resources/info_medium.gif";
        }
        String imagen = "/resources/go_dimmed.gif";
        if (getMensaje() != null) {
            switch (getSeveridad()) {
            case INFORMATIVO:
                imagen = "/resources/info_medium.gif";
                break;
            case ADVERTENCIA:
                imagen = "/resources/warning_medium.gif";
                break;
            case ERROR:
                imagen = "/resources/error_medium.gif";
                break;
            case FATAL:
                imagen = "/resources/failed_medium.gif";
                break;
            default:
                imagen = "/resources/unknown_medium.gif";
                break;
            }
        }
        return imagen;
    }

    public boolean isUrlImagenSeveridadMensajeDisponible() {
        if (designing) {
            return true;
        }
        return isMensajeDisponible() && StringUtils.isNotBlank(getUrlImagenSeveridadMensaje());
    }

    public boolean isUrlImagenSeveridadMensajeNoDisponible() {
        return !isUrlImagenSeveridadMensajeDisponible();
    }
    // </editor-fold>

    // <editor-fold defaultstate="collapsed" desc="metodos estandar para descartar los formularios virtuales">
    private static final String[] discardableVirtualForms = { "virtualForm1" };

    public void descartarFormulariosVirtuales() {
        track("descartarFormulariosVirtuales");
        String virtualFormName;
        VirtualFormDescriptor descriptor;
        VirtualFormDescriptor[] descriptors;
        if (isRetruque()) {
            try {
                descriptors = getPaginaBasica().getForm1().getVirtualForms();
                if (descriptors != null) {
                    for (int i = 0; i < descriptors.length; i++) {
                        descriptor = descriptors[i];
                        if (descriptor != null) {
                            virtualFormName = descriptor.getName();
                            if (virtualFormName != null) {
                                boolean contains = ArrayUtils.contains(discardableVirtualForms, virtualFormName);
                                if (contains) {
                                    getPaginaBasica().getForm1().discardSubmittedValues(virtualFormName);
                                }
                            }
                        }
                    }
                }
            } catch (Exception ex) {
                handle(ex);
            }
        }
    }
    // </editor-fold>

    // <editor-fold defaultstate="collapsed" desc="metodos estandar para establecer el mensaje por omision de la peticion">
    protected void setMensajePeticion() {
        track("setMensajePeticion");
        if (getPaginaBasica().getFacesContext().getMaximumSeverity() == null) {
            setMensaje(getMensajePeticionPorOmision());
            setSeveridad(EnumSeveridadMensaje.INFORMATIVO);
        } else {
            int mayor = getPaginaBasica().getFacesContext().getMaximumSeverity().getOrdinal();
            setSeveridad(EnumSeveridadMensaje.valueOf(mayor));
            boolean continuar = true;
            Iterator iterator = getPaginaBasica().getFacesContext().getMessages();
            while (continuar && iterator.hasNext()) {
                FacesMessage fm = (FacesMessage) iterator.next();
                if (fm != null && fm.getSeverity().getOrdinal() == mayor) {
                    setMensaje(fm.getSummary());
                    //  continuar = false;
                }
            }
        }
    }
    // </editor-fold>

    // <editor-fold defaultstate="collapsed" desc="metodos estandar para el manejo de errores (track, trace, handle, show, ...)">
    public void track(String metodo) {
        if (!designing) {
            Bitacora.trace(getPaginaBasica().getClass(), getClass().getSimpleName() + "_" + metodo);
        }
    }

    public void track(String metodo, Object arg0) {
        if (!designing) {
            Bitacora.trace(getPaginaBasica().getClass(), getClass().getSimpleName() + "_" + metodo, arg0);
        }
    }

    public void track(String metodo, Object arg0, Object arg1) {
        if (!designing) {
            Bitacora.trace(getPaginaBasica().getClass(), getClass().getSimpleName() + "_" + metodo, arg0, arg1);
        }
    }

    public void track(String metodo, Object arg0, Object arg1, Object arg2) {
        if (!designing) {
            Bitacora.trace(getPaginaBasica().getClass(), getClass().getSimpleName() + "_" + metodo, arg0, arg1,
                    arg2);
        }
    }

    public void track(String metodo, Object arg0, Object arg1, Object arg2, Object arg3) {
        if (!designing) {
            Bitacora.trace(getPaginaBasica().getClass(), getClass().getSimpleName() + "_" + metodo, arg0, arg1,
                    arg2, arg3);
        }
    }

    public void trace(String mensaje) {
        if (!designing) {
            trace(mensaje, null, null, null, null);
        }
    }

    public void trace(String mensaje, Object arg0) {
        if (!designing) {
            trace(mensaje, arg0, null, null, null);
        }
    }

    public void trace(String mensaje, Object arg0, Object arg1) {
        if (!designing) {
            trace(mensaje, arg0, arg1, null, null);
        }
    }

    public void trace(String mensaje, Object arg0, Object arg1, Object arg2) {
        if (!designing) {
            trace(mensaje, arg0, arg1, arg2, null);
        }
    }

    public void trace(String mensaje, Object arg0, Object arg1, Object arg2, Object arg3) {
        if (!designing) {
            Bitacora.trace(mensaje, arg0, arg1, arg2, arg3);
        }
    }

    public void tell() {
        Mensaje m;
        int s;
        int menor = TLC.getBitacora().getSeveridadMinima().intValue();
        int mayor = getMensaje() == null ? menor - 1 : getSeveridad().intValue();
        boolean b = true;
        Iterator iterator = TLC.getBitacora().iterator();
        while (iterator.hasNext()) {
            m = (Mensaje) iterator.next();
            if (m != null) {
                s = m.getSeveridad().intValue();
                if (s >= menor) {
                    if (mayor < s || (mayor == s && b)) {
                        mayor = s;
                        b = false;
                        setMensaje(m.toString());
                        setSeveridad(m.getSeveridad());
                    }
                    switch (m.getSeveridad()) {
                    case INFORMATIVO:
                        getPaginaBasica().info(m.toString());
                        break;
                    case ADVERTENCIA:
                        getPaginaBasica().warn(m.toString());
                        break;
                    case ERROR:
                        getPaginaBasica().error(m.toString());
                        break;
                    case FATAL:
                        getPaginaBasica().fatal(m.toString());
                        break;
                    default:
                        getPaginaBasica().info(m.toString());
                        break;
                    }
                }
            }
        }
        TLC.getBitacora().clear();
    }

    public void handle(Exception ex) {
        String string = DBUtils.getProperErrorMessage(ThrowableUtils.getString(ex));
        Throwable cause = ThrowableUtils.getCause(ex);
        if (cause != null) {
            String simple = cause.getClass().getSimpleName();
            String prefix = string.contains(simple) ? ""
                    : StringUtils.join(StringUtils.splitByCharacterTypeCamelCase(simple), " ") + ": ";
            string = prefix + string;
        }
        if (TLC.getBitacora().contiene(string)) {
            tell();
        } else {
            tell();
            getPaginaBasica().fatal(string);
            if (exceptionLoggingEnabled()) {
                getPaginaBasica().log(string, ex);
            }
        }
    }

    private boolean exceptionLoggingEnabled() {
        return BitUtils.valueOf(CoreBundle.getStringToNull(SIMPLE, EXCEPTION_LOGGING));
    }
    // </editor-fold>
}