{"id":13984,"date":"2023-01-05T11:51:18","date_gmt":"2023-01-05T17:51:18","guid":{"rendered":"http:\/\/201.237.206.56\/Sitios\/ugit.siua.ac.cr\/?p=13984"},"modified":"2023-04-14T15:12:20","modified_gmt":"2023-04-14T21:12:20","slug":"sigesa-crear-lov","status":"publish","type":"post","link":"https:\/\/sada.services\/?p=13984","title":{"rendered":"SIGESA: crear LOV"},"content":{"rendered":"\n<ul class=\"wp-block-list\">\n<li>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<\/li>\n\n\n\n<li>Para ello creamos el archivo TipoActividadRiesgoLOVBean.java<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">TipoActividadRiesgoLOVBean.java<\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li>y le agregamos<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>\/*\n * Copyright (c) 2022.\n *\n * Centro de Gestion Informatica\n * Direccion de Tecnologias de la Informacion y Comunicacion\n * Universidad Nacional - Costa Rica\n * http:\/\/www.una.ac.cr\n *\n *\/\n\n\/**********************************************************************\/\n\/**********************************************************************\/\n\/*********************       PACKAGE     ******************************\/\n\/**********************************************************************\/\n\/**********************************************************************\/\npackage cr.ac.una.cgi.sigesa.ppi.mcg.view.LOV;\n\n\n\n\/**********************************************************************\/\n\/**********************************************************************\/\n\/*********************       IMPORT'S    ******************************\/\n\/**********************************************************************\/\n\/**********************************************************************\/\n\n\n\/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*\/\n\/*+++++++++++++             SDK-UNA         ++++++++++++++++++++++++++*\/\n\/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*\/\nimport cr.ac.una.cgi.sdkuna.view.commons.LOV;\nimport cr.ac.una.cgi.sdkuna.view.commons.LOVColumn;\nimport cr.ac.una.cgi.sdkuna.view.commons.LOVImpl;\n\n\n\/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*\/\n\/*+++++++++++++       SPRING-BOOT           ++++++++++++++++++++++++++*\/\n\/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*\/\nimport org.springframework.context.annotation.Scope;\nimport org.springframework.stereotype.Component;\n\n\n\/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*\/\n\/*+++++++++++++      TIPOS DE DATOS         ++++++++++++++++++++++++++*\/\n\/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*\/\nimport java.io.Serializable;\nimport java.util.ArrayList;\nimport java.util.List;\nimport javax.annotation.PostConstruct;\n\n\n\/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*\/\n\/*+++++++++++++   Proyecto: PPI\/MCG         ++++++++++++++++++++++++++*\/\n\/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*\/\nimport cr.ac.una.cgi.sigesa.ppi.mcg.domain.TipoActividadRiesgo;\nimport cr.ac.una.cgi.sigesa.ppi.mcg.service.TipoActividadRiesgoService;\n\n\n\/**********************************************************************\/\n\/**********************************************************************\/\n\/*********************  DOCUMENTACI\u00d3N    ******************************\/\n\/**********************************************************************\/\n\/**********************************************************************\/\n\/**\n * Spring LOVBean Session para la administraci\u00f3n de la entidad {@link ClienteTavo}\n *\n * @author Gustavo Matamoros Gonz\u00e1lez\n * @fecha 10\/10\/2022\n *\/\n\n\n\/**********************************************************************\/\n\/**********************************************************************\/\n\/*********************  CONFIGURACI\u00d3N    ******************************\/\n\/**********************************************************************\/\n\/**********************************************************************\/\n@Component\n@Scope(\"session\")\n\n\n\/**********************************************************************\/\n\/**********************************************************************\/\n\/****************    DEFINICI\u00d3N DE CLASE  *****************************\/\n\/**********************************************************************\/\n\/**********************************************************************\/\npublic class TipoActividadRiesgoLOVBean extends LOVImpl&lt;TipoActividadRiesgo, TipoActividadRiesgoService&gt; implements LOV, Serializable {\n\n\n\n    \/*************************************************************************************************\/\n    \/*************************************************************************************************\/\n    \/******************************      CONSTRUCTOR     *********************************************\/\n    \/*************************************************************************************************\/\n    \/*************************************************************************************************\/\n    public TipoActividadRiesgoLOVBean() {\n\n    }\n    \/*************************************************************************************************\/\n    \/*************************************************************************************************\/\n    \/*************************************************************************************************\/\n    \/*************************************************************************************************\/\n    \/*************************************************************************************************\/\n\n\n\n    \/*************************************************************************************************\/\n    \/*************************************************************************************************\/\n    \/******************************      FUNCI\u00d3N INIT    *********************************************\/\n    \/*************************************************************************************************\/\n    \/*************************************************************************************************\/\n    @PostConstruct\n    public void init() {\n\n        List&lt;LOVColumn&gt; columns = new ArrayList&lt;&gt;();\n\n        LOVColumn column1 = new LOVColumn(\"codigo\",             getI18n(\"tipoActividadRiesgo_codigo_label\"),            true);\n        LOVColumn column2 = new LOVColumn(\"nombre\",             getI18n(\"tipoActividadRiesgo_nombre_label\"),            true);\n\n        columns.add(column1);\n        columns.add(column2);\n\n        this.setTableColumns(columns);\n\n    }\n    \/*************************************************************************************************\/\n    \/*************************************************************************************************\/\n    \/*************************************************************************************************\/\n    \/*************************************************************************************************\/\n    \/*************************************************************************************************\/\n\n    \n}\n\/**********************************************************************\/\n\/**********************************************************************\/\n\/***************      FIN DEFINICI\u00d3N DE CLASE   ***********************\/\n\/**********************************************************************\/\n\/**********************************************************************\/<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">actividadRespuestaRiesgoEditForm.xhtml<\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Con esto podemos crear una interfaz con el siguiente componente que listara por defecto todos los registros (findAll)<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>&lt;!-- LOV --&gt;\n                &lt;components:dialogFrameworkData id=\"actividadRespuestaRiesgo_tipoActividadRiesgo_ListDialog\"\n                                                title=\"#{i18n.actividadRespuestaRiesgo_periodoAnualInicial_lov_label}\"\n                                                contentWidth=\"800\"\n\n                                                lOVBean=\"#{tipoActividadRiesgoLOVBean}\"\n                                                target=\"#{actividadRespuestaRiesgoBean.entity.tipoActividadRiesgo}\"\n                                                disabled=\"false\"\n                                                update=\"actividadRespuestaRiesgo_tipoActividadRiesgo_AutoComplete\"\n                                                \/&gt;<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Sin embargo si deseamos que se filtren los registros por una condici\u00f3n por ejemplo que solo se listen los que se encuentren activos, debemos hacer:<\/li>\n\n\n\n<li>Primero debemos crear en el repository una funcion que nos filter por lo que ocupemos <\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">TipoActividadRiesgoRepository.java<\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Creamos una funci\u00f3n que filter por activo<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>\/**********************************************************************\/\n    \/**\n     * Definici\u00f3n que retorna un Page&lt;TipoActividadRiesgo&gt; seg\u00fan la condici\u00f3n de activo\n     * \n     * @param activo : 1 = activo \/ 0 = Inactivo\n     * @param pageable : parametro utilizado para paginaci\u00f3n\n     * @author Gustavo Matamoros Gonz\u00e1lez\n     * @fechaCreacion: 05\/01\/2023\n     * @fechaModificacion: 05\/01\/2023\n     * @Version: 1.0.0\n     * @modulo: PPI-MCG\n     * @issue: PPI-279\n     *\/\n    \/**********************************************************************\/\n    public Page&lt;TipoActividadRiesgo&gt; findAllByActivo(Boolean activo, Pageable pageable);<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Con esto tenemos una funci\u00f3n en el repository que nos permite obtener los registros por activo<\/li>\n\n\n\n<li>Ahora pasamos a crear un servicio que utilice esta funci\u00f3n y pueda ser utilizada por el bean<\/li>\n\n\n\n<li>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 <\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>lOVBean=\"#{tipoActividadRiesgoLOVBean}\"<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Quedando as\u00ed<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>&lt;components:dialogFrameworkData id=\"actividadRespuestaRiesgo_tipoActividadRiesgo_ListDialog\"\n                                                title=\"#{i18n.actividadRespuestaRiesgo_periodoAnualInicial_lov_label}\"\n                                                contentWidth=\"800\"\n                                                methodName=\"findAllByActivoLOV\"\n                                                lOVBean=\"#{tipoActividadRiesgoLOVBean}\"\n                                                target=\"#{actividadRespuestaRiesgoBean.entity.tipoActividadRiesgo}\"\n                                                disabled=\"false\"\n                                                update=\"actividadRespuestaRiesgo_tipoActividadRiesgo_AutoComplete\"\n                                                \/&gt;<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Como vemos vamos a crear una funci\u00f3n \n<ul class=\"wp-block-list\">\n<li><\/li>\n<\/ul>\n<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>methodName=\"findAllByActivoLOV\"<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Por tanto en:<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">TipoActividadRiesgoService.java<\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Agregamos imports<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>import java.util.ArrayList;\nimport cr.ac.una.cgi.sdkuna.api.filter.FilterSpecification;\nimport java.util.Map;<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Declaramos la funci\u00f3n<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>\/**********************************************************************\/\n    \/**\n     * Definici\u00f3n que retorna un Page&lt;TipoActividadRiesgo&gt; seg\u00fan la condici\u00f3n de activo para LOV\n     * \n     * @param filterSpecifications : filterSpecifications\n     * @param pageable : parametro utilizado para paginaci\u00f3n\n     * @param params: para envi\u00f3 de parametros del LOV\n     * @author Gustavo Matamoros Gonz\u00e1lez\n     * @fechaCreacion: 05\/01\/2023\n     * @fechaModificacion: 05\/01\/2023\n     * @Version: 1.0.0\n     * @modulo: PPI-MCG\n     * @issue: PPI-279\n     *\/\n    \/**********************************************************************\/\n    public Page&lt;TipoActividadRiesgo&gt; findAllByActivoLOV(ArrayList&lt;FilterSpecification&gt; filterSpecifications, Pageable pageable, Map&lt;String, Object&gt; params);<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Y luego la implementaci\u00f3n<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">TipoActividadRiesgoServiceImpl.java<\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li>imports<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>import java.util.ArrayList;\nimport cr.ac.una.cgi.sdkuna.api.filter.FilterSpecification;\nimport java.util.Map;<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Creamos el m\u00e9todo<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>\/**********************************************************************\/\n    \/**\n     * M\u00e9todo que retorna un Page&lt;TipoActividadRiesgo&gt; seg\u00fan la condici\u00f3n de activo para LOV\n     * \n     * @param filterSpecifications : filterSpecifications\n     * @param pageable : parametro utilizado para paginaci\u00f3n\n     * @param params: para envi\u00f3 de parametros del LOV\n     * @author Gustavo Matamoros Gonz\u00e1lez\n     * @fechaCreacion: 05\/01\/2023\n     * @fechaModificacion: 05\/01\/2023\n     * @Version: 1.0.0\n     * @modulo: PPI-MCG\n     * @issue: PPI-279\n     *\/\n    \/**********************************************************************\/\n    @Override\n    public Page&lt;TipoActividadRiesgo&gt; findAllByActivoLOV(ArrayList&lt;FilterSpecification&gt; filterSpecifications, Pageable pageable, Map&lt;String, Object&gt; params){\n        this.setFilterSpecifications(filterSpecifications);\n        return repository.findAllByActivo(Boolean.TRUE,pageable);\n    }<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Y listo<\/li>\n<\/ul>\n","protected":false},"excerpt":{"rendered":"<p>TipoActividadRiesgoLOVBean.java actividadRespuestaRiesgoEditForm.xhtml TipoActividadRiesgoRepository.java TipoActividadRiesgoService.java TipoActividadRiesgoServiceImpl.java<\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[443],"tags":[462,444],"class_list":["post-13984","post","type-post","status-publish","format-standard","hentry","category-sigesa","tag-lov","tag-sigesa"],"blocksy_meta":{"styles_descriptor":{"styles":{"desktop":"","tablet":"","mobile":""},"google_fonts":[],"version":6}},"_links":{"self":[{"href":"https:\/\/sada.services\/index.php?rest_route=\/wp\/v2\/posts\/13984","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/sada.services\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/sada.services\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/sada.services\/index.php?rest_route=\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/sada.services\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=13984"}],"version-history":[{"count":5,"href":"https:\/\/sada.services\/index.php?rest_route=\/wp\/v2\/posts\/13984\/revisions"}],"predecessor-version":[{"id":14642,"href":"https:\/\/sada.services\/index.php?rest_route=\/wp\/v2\/posts\/13984\/revisions\/14642"}],"wp:attachment":[{"href":"https:\/\/sada.services\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=13984"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/sada.services\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=13984"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/sada.services\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=13984"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}