SIGESA: Crear Autocomplete

  • Para crear un autocomplete de todos los registros activos por nombre

TipoActividadRiesgoRepository.java

  • Agregamos los import’s necesarios
import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable;
  • Creamos la definición
/**********************************************************************/
    /**
     * Definición que retorna un Page<TipoActividadRiesgo> según su nombre y la condición de activo
     * 
     * @param nombre : nombre por buscar
     * @param activo : 1 = activo / 0 = Inactivo
     * @param pageable : parametro utilizado para paginación
     * @author Gustavo Matamoros González
     * @fechaCreacion: 04/01/2023
     * @fechaModificacion: 04/01/2023
     * @Version: 1.0.0
     * @modulo: PPI-MCG
     * @issue: PPI-279
     */
    /**********************************************************************/
    public Page<TipoActividadRiesgo> findAllByNombreIgnoreCaseLikeAndActivo(String nombre, Boolean activo, Pageable pageable);

TipoActividadRiesgoService.java

  • Agregamos los imports necesarios
import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable;
  • Creamos la definición
/**********************************************************************/
    /**
     * Definición que retorna un Page<TipoActividadRiesgo> según su nombre y la condición de activo
     * 
     * @param nombre : nombre por buscar
     * @param activo : 1 = activo / 0 = Inactivo
     * @param pageable : parametro utilizado para paginación
     * @author Gustavo Matamoros González
     * @fechaCreacion: 04/01/2023
     * @fechaModificacion: 04/01/2023
     * @Version: 1.0.0
     * @modulo: PPI-MCG
     * @issue: PPI-279
     */
    /**********************************************************************/
    public Page<TipoActividadRiesgo> findAllByNombreIgnoreCaseLikeAndActivo(String nombre, Boolean activo, Pageable pageable);

TipoActividadRiesgoServiceImpl.java

  • Agregamos los import’s necesarios
import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable;
  • Creamos el método
 /**********************************************************************/
    /**
     * Ver {@link TipoActividadRiesgoService#findAllByNombreIgnoreCaseLikeAndActivo(java.lang.String, java.lang.Boolean, org.springframework.data.domain.Pageable) }
     * 
     * @param nombre : nombre por buscar
     * @param activo : 1 = activo / 0 = Inactivo
     * @param pageable : parametro utilizado para paginación
     * @author Gustavo Matamoros González
     * @fechaCreacion: 04/01/2023
     * @fechaModificacion: 04/01/2023
     * @Version: 1.0.0
     * @modulo: PPI-MCG
     * @issue: PPI-279
     */
    /**********************************************************************/
    
    // Indicamos que vamos a sobreescribir el método
    @Override

    public Page<TipoActividadRiesgo> findAllByNombreIgnoreCaseLikeAndActivo(String nombre, Boolean activo, Pageable pageable) {

        return repository.findAllByNombreIgnoreCaseLikeAndActivo("%" + nombre + "%", activo, pageable);
    }
  • Ahora en el Bean que va a utiliza la función creamos una función complete

ActividadRespuestaRiesgoBean.java

  • Creamos la función
/*************************************************************************************************/
    /*************************************************************************************************/
    /**********************         FUNCIONES: Tipo Actividad Riesgo   *******************************/
    /*************************************************************************************************/
    /*************************************************************************************************/
    
    public Page<TipoActividadRiesgo> completeTipoActividadRiesgo(String query, Pageable pageable) {
        return service.autoCompleteTipoActividadRiesgo(query, pageable);
    }
    /*************************************************************************************************/
    /*************************************************************************************************/
    /**********************     FIN FUNCIONES: Tipo Actividad Riesgo   *******************************/
    /*************************************************************************************************/
    /*************************************************************************************************/
  • Y en el servicio creamos la definición

ActividadRespuestaRiesgoService.java

  • imports
import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable;
  • Creamos la definición
/**********************************************************************/
   /**
    * Definición autocomplete TipoActividadRiesgo
    * 
    * @param query : consulta del usuario
    * @param pgbl : para paginación
    * @return 
    */
   /**********************************************************************/
public Page<TipoActividadRiesgo> autoCompleteTipoActividadRiesgo(String query, Pageable pgbl);
  • Y creamos la implementación

ActividadRespuestaRiesgoServiceImpl.java

  • imports
import cr.ac.una.cgi.sigesa.ppi.mcg.domain.EstadoARR;
import cr.ac.una.cgi.sigesa.ppi.mcg.service.EstadoARRService;
  • Autowired
@Autowired
    EstadoARRService estadoARRService;
  • Implementación donde le enviamos TRUE para que solo devuelva los activos
import cr.ac.una.cgi.sigesa.ppi.mcg.domain.TipoActividadRiesgo;
import cr.ac.una.cgi.sigesa.ppi.mcg.service.TipoActividadRiesgoService;


@Autowired
    TipoActividadRiesgoService tipoActividadRiesgoService;

/**********************************************************************/
    /***********  FUNCIÓN:   autoCompleteTipoActividadRiesgo  *************/
    /**********************************************************************/
    @Override
    public Page<TipoActividadRiesgo> autoCompleteTipoActividadRiesgo(String query, Pageable pgbl) {
        return tipoActividadRiesgoService.findAllByNombreIgnoreCaseLikeAndActivo(query, Boolean.TRUE, pgbl);
    }

actividadRespuestaRiesgoEditForm.xhmtl

  • Agregamos
<!--####################################################################################-->
            <!--########################## TIPO ACTIVIDAD RIESGO  ##################################-->
            <!--####################################################################################-->

            <!--LABEL-->
            <p:outputLabel  id="actividadRespuestaRiesgo_tipoActividadRiesgo_OutputLabel"
                            for="actividadRespuestaRiesgo_tipoActividadRiesgo_AutoComplete"
                            value="#{i18n.actividadRespuestaRiesgo_tipoActividadRiesgo_label}"/>

            <!--PANEL-->
            <p:outputPanel  id="actividadRespuestaRiesgo_tipoActividadRiesgo_OutputPanel">
                
                <!-- AUTOCOMPLETE -->
                <una:autoCompletePaginator  id="actividadRespuestaRiesgo_tipoActividadRiesgo_AutoComplete"
                                            paginator="true"
                                            paginationRows="10"
                                            dropdown="true"
                                            value="#{actividadRespuestaRiesgoBean.entity.tipoActividadRiesgo}"
                                            var="tipoActividadRiesgo"
                                            itemLabel="#{tipoActividadRiesgo.nombre}"
                                            itemValue="#{tipoActividadRiesgo}"
                                            completeMethod="#{actividadRespuestaRiesgoBean.completeTipoActividadRiesgo}"
                                            converter="#{tipoActividadRiesgoBean.converter}"
                                            forceSelection="true"
                                            noSelectedOption="true"
                                            noSelectedLabel="#{i18n.actividadRespuestaRiesgo_tipoActividadRiesgo_select_label}"
                                            onNoSelectedOption="#{actividadRespuestaRiesgoBean.handleClearTipoActividadRiesgoInicial()}"
                                            size="40"
                                            scrollHeight="200"
                                            required="true">

                </una:autoCompletePaginator>

                <!-- LOV -->
                <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"
                                                />
                

           

            </p:outputPanel>

            <!--MENSAJE-->
            <p:message id="actividadRespuestaRiesgo_tipoActividadRiesgo_Message" 
                        for="actividadRespuestaRiesgo_tipoActividadRiesgo_AutoComplete"/>

            <!--####################################################################################-->
            <!--####################################################################################-->
            <!--####################################################################################-->