SIGESA: crear LOV

  • Ahora para que el usuario puede buscar a un cliente no solamente por su nombre sino que podamos abrir una ventana modal que enliste los tiposActividadRiesgo y los permita filtrar por sus campos como en tipoActividadRiesgoListForm.xhtml el Framework posee la posibilidad de crear un bean de tipo LOV
  • Para ello creamos el archivo TipoActividadRiesgoLOVBean.java

TipoActividadRiesgoLOVBean.java

  • y le agregamos
/*
 * Copyright (c) 2022.
 *
 * Centro de Gestion Informatica
 * Direccion de Tecnologias de la Informacion y Comunicacion
 * Universidad Nacional - Costa Rica
 * http://www.una.ac.cr
 *
 */

/**********************************************************************/
/**********************************************************************/
/*********************       PACKAGE     ******************************/
/**********************************************************************/
/**********************************************************************/
package cr.ac.una.cgi.sigesa.ppi.mcg.view.LOV;



/**********************************************************************/
/**********************************************************************/
/*********************       IMPORT'S    ******************************/
/**********************************************************************/
/**********************************************************************/


/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/
/*+++++++++++++             SDK-UNA         ++++++++++++++++++++++++++*/
/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/
import cr.ac.una.cgi.sdkuna.view.commons.LOV;
import cr.ac.una.cgi.sdkuna.view.commons.LOVColumn;
import cr.ac.una.cgi.sdkuna.view.commons.LOVImpl;


/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/
/*+++++++++++++       SPRING-BOOT           ++++++++++++++++++++++++++*/
/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/
import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Component;


/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/
/*+++++++++++++      TIPOS DE DATOS         ++++++++++++++++++++++++++*/
/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/
import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;
import javax.annotation.PostConstruct;


/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/
/*+++++++++++++   Proyecto: PPI/MCG         ++++++++++++++++++++++++++*/
/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/
import cr.ac.una.cgi.sigesa.ppi.mcg.domain.TipoActividadRiesgo;
import cr.ac.una.cgi.sigesa.ppi.mcg.service.TipoActividadRiesgoService;


/**********************************************************************/
/**********************************************************************/
/*********************  DOCUMENTACIÓN    ******************************/
/**********************************************************************/
/**********************************************************************/
/**
 * Spring LOVBean Session para la administración de la entidad {@link ClienteTavo}
 *
 * @author Gustavo Matamoros González
 * @fecha 10/10/2022
 */


/**********************************************************************/
/**********************************************************************/
/*********************  CONFIGURACIÓN    ******************************/
/**********************************************************************/
/**********************************************************************/
@Component
@Scope("session")


/**********************************************************************/
/**********************************************************************/
/****************    DEFINICIÓN DE CLASE  *****************************/
/**********************************************************************/
/**********************************************************************/
public class TipoActividadRiesgoLOVBean extends LOVImpl<TipoActividadRiesgo, TipoActividadRiesgoService> implements LOV, Serializable {



    /*************************************************************************************************/
    /*************************************************************************************************/
    /******************************      CONSTRUCTOR     *********************************************/
    /*************************************************************************************************/
    /*************************************************************************************************/
    public TipoActividadRiesgoLOVBean() {

    }
    /*************************************************************************************************/
    /*************************************************************************************************/
    /*************************************************************************************************/
    /*************************************************************************************************/
    /*************************************************************************************************/



    /*************************************************************************************************/
    /*************************************************************************************************/
    /******************************      FUNCIÓN INIT    *********************************************/
    /*************************************************************************************************/
    /*************************************************************************************************/
    @PostConstruct
    public void init() {

        List<LOVColumn> columns = new ArrayList<>();

        LOVColumn column1 = new LOVColumn("codigo",             getI18n("tipoActividadRiesgo_codigo_label"),            true);
        LOVColumn column2 = new LOVColumn("nombre",             getI18n("tipoActividadRiesgo_nombre_label"),            true);

        columns.add(column1);
        columns.add(column2);

        this.setTableColumns(columns);

    }
    /*************************************************************************************************/
    /*************************************************************************************************/
    /*************************************************************************************************/
    /*************************************************************************************************/
    /*************************************************************************************************/

    
}
/**********************************************************************/
/**********************************************************************/
/***************      FIN DEFINICIÓN DE CLASE   ***********************/
/**********************************************************************/
/**********************************************************************/

actividadRespuestaRiesgoEditForm.xhtml

  • Con esto podemos crear una interfaz con el siguiente componente que listara por defecto todos los registros (findAll)
<!-- LOV -->
                <components:dialogFrameworkData id="actividadRespuestaRiesgo_tipoActividadRiesgo_ListDialog"
                                                title="#{i18n.actividadRespuestaRiesgo_periodoAnualInicial_lov_label}"
                                                contentWidth="800"

                                                lOVBean="#{tipoActividadRiesgoLOVBean}"
                                                target="#{actividadRespuestaRiesgoBean.entity.tipoActividadRiesgo}"
                                                disabled="false"
                                                update="actividadRespuestaRiesgo_tipoActividadRiesgo_AutoComplete"
                                                />
  • Sin embargo si deseamos que se filtren los registros por una condición por ejemplo que solo se listen los que se encuentren activos, debemos hacer:
  • Primero debemos crear en el repository una funcion que nos filter por lo que ocupemos

TipoActividadRiesgoRepository.java

  • Creamos una función que filter por activo
/**********************************************************************/
    /**
     * Definición que retorna un Page<TipoActividadRiesgo> según la condición de activo
     * 
     * @param activo : 1 = activo / 0 = Inactivo
     * @param pageable : parametro utilizado para paginación
     * @author Gustavo Matamoros González
     * @fechaCreacion: 05/01/2023
     * @fechaModificacion: 05/01/2023
     * @Version: 1.0.0
     * @modulo: PPI-MCG
     * @issue: PPI-279
     */
    /**********************************************************************/
    public Page<TipoActividadRiesgo> findAllByActivo(Boolean activo, Pageable pageable);
  • Con esto tenemos una función en el repository que nos permite obtener los registros por activo
  • Ahora pasamos a crear un servicio que utilice esta función y pueda ser utilizada por el bean
  • Importante como el Edit que los va a utilizar es de actividadRespuestaRiesgoEditForm.xhtml pero hace referencia a tipoActividadRiesgoLOVBean no es necesario crear nada en en el bean de actividadRespuestaRiesgo gracias a
lOVBean="#{tipoActividadRiesgoLOVBean}"
  • Quedando así
<components:dialogFrameworkData id="actividadRespuestaRiesgo_tipoActividadRiesgo_ListDialog"
                                                title="#{i18n.actividadRespuestaRiesgo_periodoAnualInicial_lov_label}"
                                                contentWidth="800"
                                                methodName="findAllByActivoLOV"
                                                lOVBean="#{tipoActividadRiesgoLOVBean}"
                                                target="#{actividadRespuestaRiesgoBean.entity.tipoActividadRiesgo}"
                                                disabled="false"
                                                update="actividadRespuestaRiesgo_tipoActividadRiesgo_AutoComplete"
                                                />
  • Como vemos vamos a crear una función
methodName="findAllByActivoLOV"
  • Por tanto en:

TipoActividadRiesgoService.java

  • Agregamos imports
import java.util.ArrayList;
import cr.ac.una.cgi.sdkuna.api.filter.FilterSpecification;
import java.util.Map;
  • Declaramos la función
/**********************************************************************/
    /**
     * Definición que retorna un Page<TipoActividadRiesgo> según la condición de activo para LOV
     * 
     * @param filterSpecifications : filterSpecifications
     * @param pageable : parametro utilizado para paginación
     * @param params: para envió de parametros del LOV
     * @author Gustavo Matamoros González
     * @fechaCreacion: 05/01/2023
     * @fechaModificacion: 05/01/2023
     * @Version: 1.0.0
     * @modulo: PPI-MCG
     * @issue: PPI-279
     */
    /**********************************************************************/
    public Page<TipoActividadRiesgo> findAllByActivoLOV(ArrayList<FilterSpecification> filterSpecifications, Pageable pageable, Map<String, Object> params);
  • Y luego la implementación

TipoActividadRiesgoServiceImpl.java

  • imports
import java.util.ArrayList;
import cr.ac.una.cgi.sdkuna.api.filter.FilterSpecification;
import java.util.Map;
  • Creamos el método
/**********************************************************************/
    /**
     * Método que retorna un Page<TipoActividadRiesgo> según la condición de activo para LOV
     * 
     * @param filterSpecifications : filterSpecifications
     * @param pageable : parametro utilizado para paginación
     * @param params: para envió de parametros del LOV
     * @author Gustavo Matamoros González
     * @fechaCreacion: 05/01/2023
     * @fechaModificacion: 05/01/2023
     * @Version: 1.0.0
     * @modulo: PPI-MCG
     * @issue: PPI-279
     */
    /**********************************************************************/
    @Override
    public Page<TipoActividadRiesgo> findAllByActivoLOV(ArrayList<FilterSpecification> filterSpecifications, Pageable pageable, Map<String, Object> params){
        this.setFilterSpecifications(filterSpecifications);
        return repository.findAllByActivo(Boolean.TRUE,pageable);
    }
  • Y listo