- 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
/*
* 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}"
<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"
TipoActividadRiesgoService.java
import java.util.ArrayList;
import cr.ac.una.cgi.sdkuna.api.filter.FilterSpecification;
import java.util.Map;
/**********************************************************************/
/**
* 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
import java.util.ArrayList;
import cr.ac.una.cgi.sdkuna.api.filter.FilterSpecification;
import java.util.Map;
/**********************************************************************/
/**
* 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);
}