ips1ap101.web.fragments.FragmentoFiltro1.java Source code

Java tutorial

Introduction

Here is the source code for ips1ap101.web.fragments.FragmentoFiltro1.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.web.fragments;

import com.sun.rave.web.ui.appbase.AbstractFragmentBean;
import com.sun.rave.web.ui.appbase.AbstractPageBean;
import com.sun.webui.jsf.component.Button;
import com.sun.webui.jsf.component.DropDown;
import com.sun.webui.jsf.component.HiddenField;
import com.sun.webui.jsf.component.TextField;
import java.util.Iterator;
import javax.annotation.PostConstruct;
import javax.annotation.PreDestroy;
import javax.faces.FacesException;
import javax.faces.component.html.HtmlPanelGrid;
import javax.faces.convert.LongConverter;
import javax.faces.event.ValueChangeEvent;
import ips1ap101.lib.base.BaseBundle;
import ips1ap101.lib.base.app.constant.EAB;
import ips1ap101.lib.base.app.constant.URX;
import ips1ap101.lib.base.constant.CPP;
import ips1ap101.lib.base.util.Bit;
import ips1ap101.lib.base.util.BitUtils;
import ips1ap101.lib.base.util.ThrowableUtils;
import ips1ap101.lib.core.app.Bitacora;
import ips1ap101.lib.core.app.ExcepcionAplicacion;
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.xdp.RecursoCachedRowSetDataProvider;
import ips1ap101.lib.core.enumeration.EnumColumnaEtiqueta;
import ips1ap101.lib.core.jsf.JSF;
import ips1ap101.lib.core.web.app.FragmentoFiltroEstandar;
import ips1ap101.lib.core.web.app.GestorPaginaBasica;
import ips1ap101.lib.core.web.app.PaginaConsultaConFiltro;
import ips1ap101.lib.core.web.app.ThreadContext;
import ips1ap101.lib.data.provider.xdp2.FiltroFuncionCachedRowSetDataProvider2;
import org.apache.commons.lang.StringUtils;

/**
 * @author Jorge Campins
 */
public class FragmentoFiltro1 extends AbstractFragmentBean implements FragmentoFiltroEstandar {

    // <editor-fold defaultstate="collapsed" desc="Managed Component Definition">
    private void _init() throws Exception {
        filtroDataProvider
                .setCachedRowSet((javax.sql.rowset.CachedRowSet) getValue("#{SessionBean1.filtroRowSet}"));
    }

    private FiltroFuncionCachedRowSetDataProvider2 filtroDataProvider = new FiltroFuncionCachedRowSetDataProvider2();

    public FiltroFuncionCachedRowSetDataProvider2 getFiltroDataProvider() {
        return filtroDataProvider;
    }

    public void setFiltroDataProvider(FiltroFuncionCachedRowSetDataProvider2 crsdp) {
        filtroDataProvider = crsdp;
    }

    private HiddenField campoAplicarFiltro1 = new HiddenField();

    public HiddenField getCampoAplicarFiltro1() {
        return campoAplicarFiltro1;
    }

    public void setCampoAplicarFiltro1(HiddenField hf) {
        campoAplicarFiltro1 = hf;
    }

    private HtmlPanelGrid gridPanelCodigo1 = new HtmlPanelGrid();

    public HtmlPanelGrid getGridPanelCodigo1() {
        return gridPanelCodigo1;
    }

    public void setGridPanelCodigo1(HtmlPanelGrid hpg) {
        gridPanelCodigo1 = hpg;
    }

    private HtmlPanelGrid gridPanelCodigo2 = new HtmlPanelGrid();

    public HtmlPanelGrid getGridPanelCodigo2() {
        return gridPanelCodigo2;
    }

    public void setGridPanelCodigo2(HtmlPanelGrid hpg) {
        gridPanelCodigo2 = hpg;
    }

    private TextField textoFiltro1 = new ips1ap101.lib.core.jsf.component.CampoTexto();

    public TextField getTextoFiltro1() {
        return textoFiltro1;
    }

    public void setTextoFiltro1(TextField tf) {
        textoFiltro1 = tf;
    }

    private HtmlPanelGrid gridPanelCodigo3 = new HtmlPanelGrid();

    public HtmlPanelGrid getGridPanelCodigo3() {
        return gridPanelCodigo3;
    }

    public void setGridPanelCodigo3(HtmlPanelGrid hpg) {
        gridPanelCodigo3 = hpg;
    }

    private HtmlPanelGrid gridPanelNombre1 = new HtmlPanelGrid();

    public HtmlPanelGrid getGridPanelNombre1() {
        return gridPanelNombre1;
    }

    public void setGridPanelNombre1(HtmlPanelGrid hpg) {
        gridPanelNombre1 = hpg;
    }

    private HtmlPanelGrid gridPanelNombre2 = new HtmlPanelGrid();

    public HtmlPanelGrid getGridPanelNombre2() {
        return gridPanelNombre2;
    }

    public void setGridPanelNombre2(HtmlPanelGrid hpg) {
        gridPanelNombre2 = hpg;
    }

    private TextField textoFiltro2 = new ips1ap101.lib.core.jsf.component.CampoTexto();

    public TextField getTextoFiltro2() {
        return textoFiltro2;
    }

    public void setTextoFiltro2(TextField tf) {
        textoFiltro2 = tf;
    }

    private HtmlPanelGrid gridPanelNombre3 = new HtmlPanelGrid();

    public HtmlPanelGrid getGridPanelNombre3() {
        return gridPanelNombre3;
    }

    public void setGridPanelNombre3(HtmlPanelGrid hpg) {
        gridPanelNombre3 = hpg;
    }

    private DropDown listaFiltro1 = new ips1ap101.lib.core.jsf.component.ListaDesplegable();

    public DropDown getListaFiltro1() {
        return listaFiltro1;
    }

    public void setListaFiltro1(DropDown dd) {
        this.listaFiltro1 = dd;
    }

    private Button botonAplicarFiltro1 = new Button();

    public Button getBotonAplicarFiltro1() {
        return botonAplicarFiltro1;
    }

    public void setBotonAplicarFiltro1(Button b) {
        botonAplicarFiltro1 = b;
    }

    private LongConverter longConverter1 = new LongConverter();

    public LongConverter getLongConverter1() {
        return longConverter1;
    }

    public void setLongConverter1(LongConverter lc) {
        longConverter1 = lc;
    }
    // </editor-fold>

    public FragmentoFiltro1() {
        super();
    }

    @PostConstruct
    public void postConstruct() {
        if (EAB.CUSTOM_LIFECYCLE_CALLBACK_METHODS_ENABLED) {
            init();
        }
    }

    @Override
    public void init() {
        super.init();
        preiniciar();
        try {
            _init();
        } catch (Exception e) {
            log(ips1ap101.lib.base.bundle.BundleWebui.getString("bean.initialization.error"), e);
            throw e instanceof FacesException ? (FacesException) e : new FacesException(e);
        }
        iniciar();
    }

    @PreDestroy
    public void preDestroy() {
        if (EAB.CUSTOM_LIFECYCLE_CALLBACK_METHODS_ENABLED) {
            destroy();
        }
    }

    @Override
    public void destroy() {
        filtroDataProvider.close();
        super.destroy();
    }

    private PaginaConsultaConFiltro getPaginaConsultaConFiltro() {
        AbstractPageBean paginaActual = ThreadContext.getPaginaActual();
        return (PaginaConsultaConFiltro) paginaActual;
    }

    public GestorPaginaBasica getGestor() {
        GestorPaginaBasica gestorActual = ThreadContext.getGestorActual();
        return gestorActual;
    }

    public RecursoCachedRowSetDataProvider getRecursoDataProvider() {
        return getPaginaConsultaConFiltro().getRecursoDataProvider();
    }

    private Bit bitFuncionHideFilterHabilitada = new Bit() {

        @Override
        public boolean isOn() {
            return getRecursoDataProvider().isFuncionHideFilterHabilitada();
        }

    };

    public Bit getBitFuncionHideFilterHabilitada() {
        return bitFuncionHideFilterHabilitada;
    }

    private Bit bitFuncionShowFilterHabilitada = new Bit() {

        @Override
        public boolean isOn() {
            return getRecursoDataProvider().isFuncionShowFilterHabilitada();
        }

    };

    public Bit getBitFuncionShowFilterHabilitada() {
        return bitFuncionShowFilterHabilitada;
    }

    private Bit bitFuncionViewFilterHabilitada = new Bit() {

        @Override
        public boolean isOn() {
            return getRecursoDataProvider().isFuncionViewFilterHabilitada();
        }

    };

    public Bit getBitFuncionViewFilterHabilitada() {
        return bitFuncionViewFilterHabilitada;
    }

    public boolean isFuncionSelectHabilitada() {
        return getRecursoDataProvider().isFuncionSelectHabilitada();
    }

    public boolean isFuncionSelectInhabilitada() {
        return !isFuncionSelectHabilitada();
    }

    public boolean isFuncionApplyFilterHabilitada() {
        return getRecursoDataProvider().isFuncionApplyFilterHabilitada();
    }

    public boolean isFuncionApplyFilterInhabilitada() {
        return !isFuncionApplyFilterHabilitada();
    }

    public boolean isFuncionRemoveFilterHabilitada() {
        return getRecursoDataProvider().isFuncionRemoveFilterHabilitada();
    }

    public boolean isFuncionRemoveFilterInhabilitada() {
        return !isFuncionRemoveFilterHabilitada();
    }

    public boolean isFuncionRestoreFilterHabilitada() {
        return getRecursoDataProvider().isFuncionRestoreFilterHabilitada();
    }

    public boolean isFuncionRestoreFilterInhabilitada() {
        return !isFuncionRestoreFilterHabilitada();
    }

    public boolean isFiltroPorCodigoHabilitado() {
        return getRecursoDataProvider().isRecursoCodificable() && isFuncionSelectHabilitada();
    }

    public boolean isFiltroPorCodigoInhabilitado() {
        return !isFiltroPorCodigoHabilitado();
    }

    public boolean isFiltroPorNombreHabilitado() {
        return getRecursoDataProvider().isRecursoNombrable() && isFuncionSelectHabilitada();
    }

    public boolean isFiltroPorNombreInhabilitado() {
        return !isFiltroPorNombreHabilitado();
    }

    public boolean isListaFiltroHabilitada() {
        String enabled = BaseBundle.getCurrentPageString("fragmento_filtro_lista_filtro_enabled");
        return BitUtils.valueOf(enabled) && isFuncionSelectHabilitada();
    }

    public boolean isListaFiltroInhabilitada() {
        return !isListaFiltroHabilitada();
    }

    public boolean isBotonFiltroHabilitado() {
        String enabled = BaseBundle.getCurrentPageString("fragmento_filtro_boton_filtro_enabled");
        return BitUtils.valueOf(enabled) && isFuncionSelectHabilitada();
    }

    public boolean isBotonFiltroInhabilitado() {
        return !isBotonFiltroHabilitado();
    }

    public String getEtiquetaCodigo() {
        return getRecursoDataProvider().isRecursoCodificable()
                ? getRecursoDataProvider().getRecursoCodificableDataProvider().getEtiquetaCodigoRecurso()
                : null;
    }

    public String getEtiquetaNombre() {
        return getRecursoDataProvider().isRecursoNombrable()
                ? getRecursoDataProvider().getRecursoNombrableDataProvider().getEtiquetaNombreRecurso()
                : null;
    }

    private static final String URL_IMAGEN_OK = "/resources/ok_small.gif";

    private static final String URL_IMAGEN_OK_DIMMED = "/resources/ok_dimmed.gif";

    private static final String URL_IMAGEN_WARNING = "/resources/warning_small.gif";

    public String getValorTextoFiltro1() {
        return StringUtils.trimToNull(getRecursoDataProvider().getCodigoFuncionSelect());
    }

    public void setValorTextoFiltro1(String valor) {
        getRecursoDataProvider().setCodigoFuncionSelect(StringUtils.trimToNull(valor));
    }

    public String getUrlImagenTextoFiltro1() {
        String cx = getRecursoDataProvider().getCodigoFuncionSelect();
        cx = StringUtils.trimToNull(cx);
        return getRecursoDataProvider().isCodigoFuncionSelectModificado() ? URL_IMAGEN_WARNING
                : cx == null ? URL_IMAGEN_OK_DIMMED : URL_IMAGEN_OK;
    }

    public String getValorTextoFiltro2() {
        return StringUtils.trimToNull(getRecursoDataProvider().getNombreFuncionSelect());
    }

    public void setValorTextoFiltro2(String valor) {
        getRecursoDataProvider().setNombreFuncionSelect(StringUtils.trimToNull(valor));
    }

    public String getUrlImagenTextoFiltro2() {
        String nx = getRecursoDataProvider().getNombreFuncionSelect();
        nx = StringUtils.trimToNull(nx);
        return getRecursoDataProvider().isNombreFuncionSelectModificado() ? URL_IMAGEN_WARNING
                : nx == null ? URL_IMAGEN_OK_DIMMED : URL_IMAGEN_OK;
    }

    public Long getValorListaFiltro1() {
        return getRecursoDataProvider().getFiltroFuncionSelect();
    }

    public void setValorListaFiltro1(Long valor) {
        getRecursoDataProvider().setFiltroFuncionSelect(valor);
    }

    public String getUrlImagenListaFiltro1() {
        Long fx = getRecursoDataProvider().getFiltroFuncionSelect();
        return getRecursoDataProvider().isFiltroFuncionSelectModificado() ? URL_IMAGEN_WARNING
                : fx == null ? URL_IMAGEN_OK_DIMMED : URL_IMAGEN_OK;
    }

    protected void preiniciar() {
        track("preiniciar");
        PaginaConsultaConFiltro pagina = getPaginaConsultaConFiltro();
        pagina.getContextoPeticion().setFragmentoFiltroActual(this);
    }

    protected void iniciar() {
        track("iniciar");
        try {
            inicializarControles();
        } catch (Exception ex) {
            handle(ex);
        }
    }

    @Override
    public void reiniciar() {
        track("reiniciar");
        try {
            setValorListaFiltro1(null);
            setValorTextoFiltro1(null);
            setValorTextoFiltro2(null);
            consultar();
        } catch (Exception ex) {
            handle(ex);
        }
    }

    protected void inicializarControles() {
        gridPanelCodigo1.setRendered(getRecursoDataProvider().isRecursoCodificable());
        gridPanelCodigo2.setRendered(getRecursoDataProvider().isRecursoCodificable());
        gridPanelCodigo3.setRendered(getRecursoDataProvider().isRecursoCodificable());
        gridPanelNombre1.setRendered(getRecursoDataProvider().isRecursoNombrable());
        gridPanelNombre2.setRendered(getRecursoDataProvider().isRecursoNombrable());
        gridPanelNombre3.setRendered(getRecursoDataProvider().isRecursoNombrable());
    }

    public Object getItemsListaFiltro1() {
        track("getItemsListaFiltro1");
        Object items = null;
        Long valor = getRecursoDataProvider().getFuncionSelect();
        if (valor != null && valor > 0) {
            FiltroBusqueda filtro = new FiltroBusqueda();
            String clave = FiltroFuncionCachedRowSetDataProvider2.COLUMNA_ID_FUNCION;
            try {
                filtro.addCriterio(clave, valor);
                filtroDataProvider.consultarFiltroFuncion(filtro);
                items = filtroDataProvider.getListaOpciones(true, EnumColumnaEtiqueta.COLUMNA_NOMBRE);
            } catch (ExcepcionAplicacion ex) {
                items = null;
            }
        }
        return items;
    }

    protected void consultar() {
        /*
         * es necesario dejar que sea la pagina la que ejecute la consulta, dado que en preprsentar
         * la pagina tiene logica de validacion que debe ejecutarse antes de consultar.
         */
        setConsultaPendiente();
    }

    protected void consultar(Long filtro, String codigo, String nombre) {
        /*
         * es necesario dejar que sea la pagina la que ejecute la consulta, dado que en preprsentar
         * la pagina tiene logica de validacion que debe ejecutarse antes de consultar.
         */
        setConsultaPendiente(filtro, codigo, nombre);
    }

    protected void setConsultaPendiente() {
        setConsultaPendiente(getValorListaFiltro1(), getValorTextoFiltro1(), getValorTextoFiltro2());
    }

    protected void setConsultaPendiente(Long filtro, String codigo, String nombre) {
        PaginaConsultaConFiltro pagina = getPaginaConsultaConFiltro();
        pagina.getContextoPeticion().setFiltroFuncionSelect(filtro);
        pagina.getContextoPeticion().setCodigoFuncionSelect(StringUtils.trimToNull(codigo));
        pagina.getContextoPeticion().setNombreFuncionSelect(StringUtils.trimToNull(nombre));
        pagina.setConsultaPendiente(true);
    }

    public String botonBorrar1_action() {
        setValorTextoFiltro1(null);
        return null;
    }

    public String botonBorrar2_action() {
        setValorTextoFiltro2(null);
        return null;
    }

    public String botonBorrarFiltro1_action() {
        setValorListaFiltro1(null);
        return null;
    }

    public String botonBuscarFiltro1_action() {
        track("botonBuscarFiltro1_action");
        return null;
    }

    public String getScriptBotonBuscarFiltro1() {
        track("getScriptBotonBuscarFiltro1");
        String car = campoAplicarFiltro1.getClientId(getFacesContext());
        String bar = botonAplicarFiltro1.getClientId(getFacesContext());
        long funcion = getRecursoDataProvider().getFuncionSelect();
        return getScriptAbrirVentanaFiltros(URX.FILTRO_FUNCION, car, bar, funcion);
    }

    public String getScriptBotonBuscarFiltro2() {
        track("getScriptBotonBuscarFiltro2");
        String car = campoAplicarFiltro1.getClientId(getFacesContext());
        String bar = botonAplicarFiltro1.getClientId(getFacesContext());
        long funcion = getRecursoDataProvider().getFuncionSelect();
        Long filtro = getValorListaFiltro1();
        if (filtro == null) {
            return getScriptAbrirVentanaFiltros(URX.FILTRO_FUNCION, car, bar, funcion);
        } else {
            return getScriptAbrirVentanaFiltros(URX.FILTRO_FUNCION_PAR, car, bar, filtro);
        }
    }

    private String getScriptAbrirVentanaFiltros(String url, String car, String bar, long rm) {
        ListaParametros rpl = new ListaParametros();
        rpl.addParametro(CPP.ID_OPCION_CAMPO_RETORNO,
                FiltroFuncionCachedRowSetDataProvider2.COLUMNA_ID_FILTRO_FUNCION);
        rpl.addParametro(CPP.ID_CAMPO_ACCION_RETORNO, car);
        rpl.addParametro(CPP.ID_BOTON_ACCION_RETORNO, bar);
        rpl.addParametro(CPP.ID_RECURSO_MAESTRO, String.valueOf(rm));
        return JSF.getOpenWindowJavaScript(url, rpl.toString());
    }

    public String botonAplicarFiltro1_action() {
        try {
            if (campoAplicarFiltro1.getText() != null) {
                String filtro = (String) campoAplicarFiltro1.getText();
                campoAplicarFiltro1.setText(null);
                if (StringUtils.isNotBlank(filtro) && filtro.startsWith(Global.PREFIJO_STRING_ID_RECURSO)) {
                    Long valor = Long.valueOf(filtro.substring(1));
                    setValorListaFiltro1(valor);
                }
            }
            consultar();
        } catch (Exception ex) {
            handle(ex);
        } finally {
            return null;
        }
    }

    public String botonQuitarFiltro1_action() {
        consultar(null, null, null);
        return null;
    }

    public String botonRestaurarFiltro1_action() {
        setValorTextoFiltro1(getRecursoDataProvider().getCodigoFuncionSelectAnterior());
        setValorTextoFiltro2(getRecursoDataProvider().getNombreFuncionSelectAnterior());
        setValorListaFiltro1(getRecursoDataProvider().getFiltroFuncionSelectAnterior());
        consultar();
        return null;
    }

    public String botonOcultarFiltro1_action() {
        getRecursoDataProvider().setFiltroEscondido(true);
        return null;
    }

    public String botonMostrarFiltro1_action() {
        getRecursoDataProvider().setFiltroEscondido(false);
        return null;
    }

    public void listaFiltro1_processValueChange(ValueChangeEvent event) {
        /*
         * Dado que este drop-down tiene la opcion de enviar automaticamente al modificar
         * y la pagina puede tener una tabla actualizable, entonces no se debe consultar aqui;
         * hay que hacerlo en el prerender. Esto se logra con la propiedad consultaPendiente.
         *
         * OJO: con la funcion "erase" se podria haber solucionado este problema, pero ahora
         * es necesario dejar que sea la pagina la que ejecute la consulta, dado que en preprsentar
         * la pagina tiene logica de validacion que debe ejecutarse antes de consultar.
         */
        /*
         * Como ahora se aplican los 3 criterios (filtro, codigo y nombre) con un solo boton,
         * ya no se hace nada aqui; per aun se mantiene la opcion de enviar automaticamente
         * para actualizar el script cuando cambia de filtro.
         */
    }

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

    public void trace(String mensaje) {
        Bitacora.trace(mensaje);
    }

    public void tell() {
        Iterator iterator = TLC.getBitacora().iterator();
        while (iterator.hasNext()) {
            Mensaje mensaje = (Mensaje) iterator.next();
            if (mensaje != null) {
                switch (mensaje.getSeveridad()) {
                case INFORMATIVO:
                    info(mensaje.toString());
                    break;
                case ADVERTENCIA:
                    warn(mensaje.toString());
                    break;
                case ERROR:
                    error(mensaje.toString());
                    break;
                case FATAL:
                    fatal(mensaje.toString());
                    break;
                default:
                    info(mensaje.toString());
                    break;
                }
            }
        }
        TLC.getBitacora().clear();
    }

    public void handle(Exception ex) {
        String string = ThrowableUtils.getString(ex);
        if (TLC.getBitacora().contiene(string)) {
            tell();
        } else {
            tell();
            fatal(string);
            log(string, ex);
        }
    }
    // </editor-fold>
}