{"id":14004,"date":"2023-01-05T14:56:27","date_gmt":"2023-01-05T20:56:27","guid":{"rendered":"http:\/\/201.237.206.56\/Sitios\/ugit.siua.ac.cr\/?p=14004"},"modified":"2023-01-05T15:09:49","modified_gmt":"2023-01-05T21:09:49","slug":"sigesa-validaciones","status":"publish","type":"post","link":"https:\/\/sada.services\/?p=14004","title":{"rendered":"SIGESA: Validaciones"},"content":{"rendered":"\n<ul class=\"wp-block-list\">\n<li>Las validaciones en SIGESA se crean en un archivo \u00abvalidator\u00bb que se ubica en:<\/li>\n\n\n\n<li>Proyecto->Web->view->validator<\/li>\n<\/ul>\n\n\n\n<figure class=\"wp-block-image size-full\"><img fetchpriority=\"high\" decoding=\"async\" width=\"400\" height=\"242\" src=\"\/wp-content\/uploads\/2023\/01\/Seleccion_033.png\" alt=\"\" class=\"wp-image-14005\" srcset=\"https:\/\/sada.services\/wp-content\/uploads\/2023\/01\/Seleccion_033.png 400w, https:\/\/sada.services\/wp-content\/uploads\/2023\/01\/Seleccion_033-300x182.png 300w\" sizes=\"(max-width: 400px) 100vw, 400px\" \/><\/figure>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Creamos el archivo:<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">ActividadRespuestaRiesgoValidator.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.validator;\n\n\n\/**********************************************************************\/\n\/**********************************************************************\/\n\/*********************       IMPORT'S    ******************************\/\n\/**********************************************************************\/\n\/**********************************************************************\/\n\n\n\/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*\/\n\/*+++++++++++++             SDK-UNA         ++++++++++++++++++++++++++*\/\n\/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*\/\nimport cr.ac.una.cgi.sdkuna.view.controller.MessagesController;\nimport cr.ac.una.cgi.sdkuna.view.util.MessageBundleLoader;\n\n\n\/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*\/\n\/*+++++++++++++            FACES            ++++++++++++++++++++++++++*\/\n\/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*\/\nimport javax.faces.application.FacesMessage;\nimport javax.faces.component.UIComponent;\nimport javax.faces.context.FacesContext;\nimport javax.faces.validator.Validator;\nimport javax.faces.validator.ValidatorException;\n\n\/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*\/\n\/*+++++++++++++       SPRING-BOOT           ++++++++++++++++++++++++++*\/\n\/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*\/\nimport org.springframework.beans.factory.annotation.Autowired;\nimport org.springframework.context.annotation.Scope;\nimport org.springframework.stereotype.Component;\n\n\/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*\/\n\/*+++++++++++++           JAVA              ++++++++++++++++++++++++++*\/\n\/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*\/\nimport java.util.List;\nimport java.util.logging.Level;\nimport java.util.logging.Logger;\n\n\/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*\/\n\/*++++++++++++         DOMAIN Y SERVICE           ++++++++++++++++++++*\/\n\/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*\/\nimport cr.ac.una.cgi.sigesa.ppi.mcg.domain.ActividadRespuestaRiesgo;\nimport cr.ac.una.cgi.sigesa.ppi.mcg.service.ActividadRespuestaRiesgoService;\n\n\n\n\/**********************************************************************\/\n\/**********************************************************************\/\n\/*********************   DOCUMENTACI\u00d3N   ******************************\/\n\/**********************************************************************\/\n\/**********************************************************************\/\n\/**\n *\n * @author Gustavo Matamoros Gonz\u00e1lez\n * @version 1.0.0 05\/01\/2023\n *\n *\/\n\n\/**********************************************************************\/\n\/**********************************************************************\/\n\/*********************    CONFIGURACI\u00d3N  ******************************\/\n\/**********************************************************************\/\n\/**********************************************************************\/\n@Component\n@Scope(\"request\")\n\n\/**********************************************************************\/\n\/**********************************************************************\/\n\/****************    DEFINICI\u00d3N DE CLASE  *****************************\/\n\/**********************************************************************\/\n\/**********************************************************************\/\npublic class ActividadRespuestaRiesgoValidator implements Validator {\n\n\n\n\n    \/**********************************************************************\/\n    \/***********                AUTOWIRED              ********************\/\n    \/**********************************************************************\/\n    @Autowired\n    MessagesController messagesController;\n\n    @Autowired\n    ActividadRespuestaRiesgoService actividadRespuestaRiesgoService;\n\n\n    \/**********************************************************************\/\n    \/***********             FUNCI\u00d3N:   validate              *************\/\n    \/**********************************************************************\/\n    @Override\n    public void validate(FacesContext context, UIComponent component, Object value) throws ValidatorException {\n\n        \/\/Obtenemos la ActividadRespuestaRiesgo\n        ActividadRespuestaRiesgo actividadRespuestaRiesgo = (ActividadRespuestaRiesgo) component.getAttributes().get(\"actividadRespuestaRiesgo\");\n\n        \/\/ Si es null regrese\n        if (actividadRespuestaRiesgo == null) {\n            return;\n        }\n        \n        \/* ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ *\/\n        \/* +++++++++++++++++             VALIDACIONES              ++++++++++++++++++++++++++++ *\/\n        \/* ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ *\/\n        try {\n\n            \/\/ VALIDACI\u00d3N: fechaPeriodoAnualInicial &lt; fechaPeriodoAnualFinal\n            actividadRespuestaRiesgoService.validarFechaFinal(actividadRespuestaRiesgo.getPeriodoAnualInicial().getAno(), actividadRespuestaRiesgo.getPeriodoAnualFinal().getAno());\n\n        } catch (Exception ex) {\n                String summary = ex.getMessage();\n                String detail = ex.getCause().getMessage();\n                messagesController.addError(summary, detail);\n                throw new ValidatorException(new FacesMessage(FacesMessage.SEVERITY_ERROR, summary, detail));\n\n        }\n\n    }\n}\n\/**********************************************************************\/\n\/**********************************************************************\/\n\/***************      FIN DEFINICI\u00d3N DE CLASE   ***********************\/\n\/**********************************************************************\/\n\/**********************************************************************\/<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Como vemos los pasos son:\n<ul class=\"wp-block-list\">\n<li>Obtener: el objeto para este caso \u00abactividadRespuestaRiesgo\u00bb<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>\/\/Obtenemos la ActividadRespuestaRiesgo\nActividadRespuestaRiesgo actividadRespuestaRiesgo = (ActividadRespuestaRiesgo) component.getAttributes().get(\"actividadRespuestaRiesgo\");<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Pregutar si es null (para que no se caiga)<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>\/\/ Si es null regrese\n        if (actividadRespuestaRiesgo == null) {\n            return;\n        }<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Y realizar un try catch para las validaciones<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>\/* ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ *\/\n        \/* +++++++++++++++++             VALIDACIONES              ++++++++++++++++++++++++++++ *\/\n        \/* ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ *\/\n        try {\n\n            \/\/ VALIDACI\u00d3N: fechaPeriodoAnualInicial &lt; fechaPeriodoAnualFinal\n            actividadRespuestaRiesgo.validarFechaFinal(actividadRespuestaRiesgo.getPeriodoAnualInicial().getAno(), actividadRespuestaRiesgo.getPeriodoAnualFinal().getAno());\n\n        } catch (Exception ex) {\n                String summary = ex.getMessage();\n                String detail = ex.getCause().getMessage();\n                messagesController.addError(summary, detail);\n                throw new ValidatorException(new FacesMessage(FacesMessage.SEVERITY_ERROR, summary, detail));\n\n        }<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Donde dentro del try podemos crear todas las validaciones que queramos<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>\/\/ VALIDACI\u00d3N: fechaPeriodoAnualInicial &lt; fechaPeriodoAnualFinal\n            actividadRespuestaRiesgo.validarFechaFinal(actividadRespuestaRiesgo.getPeriodoAnualInicial().getAno(), actividadRespuestaRiesgo.getPeriodoAnualFinal().getAno());<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Como vemos estamos invocando a una funci\u00f3n del servicio \u00abvalidarFechaFinal\u00bb<\/li>\n\n\n\n<li>Por tanto vamos a crear esta funci\u00f3n<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">ActividadRespuestaRiesgoServiceImpl.java<\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Creamos la funci\u00f3n<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>\/**********************************************************************\/\n    \/***********  VALIDACI\u00d3N:  FECHAS PAI &lt; PAF               *************\/\n    \/**********************************************************************\/\n    \/*\n     * Funci\u00f3n: Validaci\u00f3n que verifica si la fecha_periodoAnualInicial no sea menor a fecha_periodoAnualFinal\n     *\/\n\n    @Override\n    public void validarFechaFinal(Integer annofechaInicial, Integer annofechaFinal) throws Exception{\n \n        if (annofechaFinal.compareTo(annofechaInicial) &lt; 0 ) {\n            Throwable cause = new Throwable(getI18n(\"actividadRespuestaRiesgo_message_error_validacion_fechaFinal_detail\"));\n            throw new Exception(getI18n(\"actividadRespuestaRiesgo_message_error_validacion_fechaFinal_summary\"), cause);\n        }\n \n    }<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Y de una vez creamos la definici\u00f3n<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">ActividadRespuestaRiesgoService.java<\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Agregamos<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>\/**********************************************************************\/\n   \/**\n    * Definici\u00f3n valida si el a\u00f1o del Periodo Inicial es menor al a\u00f1o del Periodo Final\n    * \n    * @param annofechaInicial : a\u00f1o periodo inicial\n    * @param annofechaFinal : a\u00f1o periodo final\n    * @return \n    *\/\n   \/**********************************************************************\/\n   public void validarFechaFinal(Integer annofechaInicial, Integer annofechaFinal) throws Exception;\n<\/code><\/pre>\n\n\n\n<p><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Y de una vez agregamos la internacionalizaci\u00f3n<\/li>\n\n\n\n<li>Ingresamos a SIGESA -> \u00abLista de internacionalizaci\u00f3n\u00bb<\/li>\n\n\n\n<li>Donde:\n<ul class=\"wp-block-list\">\n<li>detail = \u00abError\u00bb<\/li>\n\n\n\n<li>Summary: \u00abEl A\u00f1o del Periodo Anual Inicial no puede ser menor al A\u00f1o del Periodo Anual Final\u00bb<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" width=\"857\" height=\"425\" src=\"\/wp-content\/uploads\/2023\/01\/Seleccion_034.png\" alt=\"\" class=\"wp-image-14006\" srcset=\"https:\/\/sada.services\/wp-content\/uploads\/2023\/01\/Seleccion_034.png 857w, https:\/\/sada.services\/wp-content\/uploads\/2023\/01\/Seleccion_034-300x149.png 300w, https:\/\/sada.services\/wp-content\/uploads\/2023\/01\/Seleccion_034-768x381.png 768w\" sizes=\"(max-width: 857px) 100vw, 857px\" \/><\/figure>\n\n\n\n<p><\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" width=\"825\" height=\"396\" src=\"\/wp-content\/uploads\/2023\/01\/Seleccion_036.png\" alt=\"\" class=\"wp-image-14007\" srcset=\"https:\/\/sada.services\/wp-content\/uploads\/2023\/01\/Seleccion_036.png 825w, https:\/\/sada.services\/wp-content\/uploads\/2023\/01\/Seleccion_036-300x144.png 300w, https:\/\/sada.services\/wp-content\/uploads\/2023\/01\/Seleccion_036-768x369.png 768w\" sizes=\"(max-width: 825px) 100vw, 825px\" \/><\/figure>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Y ahora para hacer que la validaciones se apliquen debajo de \u00abIntructions\u00bb agregamos<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>&lt;!--####################################################################################-->\n            &lt;!--######################## CAMPO OCULTO PARA VALIDACI\u00d3N   ############################-->\n            &lt;!--####################################################################################-->\n\n            &lt;!--Entrada oculta para validaciones-->\n            &lt;h:inputHidden id=\"actividadRespuestaRiesgoValidator\" value=\"true\" >\n                &lt;f:attribute name=\"actividadRespuestaRiesgo\" value=\"#{actividadRespuestaRiesgoBean.entity}\"\/>\n                &lt;f:validator binding=\"#{actividadRespuestaRiesgoValidator}\" disabled=\"#{empty param&#91;'formMantenimiento:toolbar:toolbar_saveBtn']}\" \/>\n            &lt;\/h:inputHidden>\n            &lt;!--####################################################################################-->\n            &lt;!--###################  FIN CAMPO OCULTO PARA VALIDACI\u00d3N   ############################-->\n            &lt;!--####################################################################################--><\/code><\/pre>\n","protected":false},"excerpt":{"rendered":"<p>ActividadRespuestaRiesgoValidator.java ActividadRespuestaRiesgoServiceImpl.java ActividadRespuestaRiesgoService.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":[444,464,465,466],"class_list":["post-14004","post","type-post","status-publish","format-standard","hentry","category-sigesa","tag-sigesa","tag-validacion","tag-validacion-2","tag-validator"],"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\/14004","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=14004"}],"version-history":[{"count":6,"href":"https:\/\/sada.services\/index.php?rest_route=\/wp\/v2\/posts\/14004\/revisions"}],"predecessor-version":[{"id":14013,"href":"https:\/\/sada.services\/index.php?rest_route=\/wp\/v2\/posts\/14004\/revisions\/14013"}],"wp:attachment":[{"href":"https:\/\/sada.services\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=14004"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/sada.services\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=14004"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/sada.services\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=14004"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}