SiGESA: Crear mantenimiento

01. Definición

  • Para este caso vamos a crear el manteniento de la siguientes tablas
Tabla:ESTADO_ARR
NombreTipo de dato
ID_ESTADO_ARRNUMBER (19) NOT NULL
NOMBREVARCHAR2(255) NOT NULL
ACTIVONUMBER (1) NOT NULL
Tabla:ESTADO_AM
NombreTipo de dato
ID_ESTADO_AMNUMBER (19) NOT NULL
NOMBREVARCHAR2(255) NOT NULL
ACTIVONUMBER (1) NOT NULL
  • NOTAS:
    • En SIGESA todas las tablas deben tener un ID que se llame igual a la tabla
    • Todas la llaves son de tipo NUMBER (19) NOT NULL
    • Para manejar campos «ACTIVOS» se utililza NUMBER (1) NOT NULL
    • Además de los campos que se solicitan en SIGESA SIEMPRE se deben agregar los siguientes campos
NombreTipo de Datos
FECHA_CREACIONDATE NOT NULL ,
USUARIO_CREACIONNUMBER (19) NOT NULL
FECHA_MODIFICACIONDATE NOT NULL
USUARIO_MODIFICACIONNUMBER (19) NOT NULL
CAMPO_CONFIGURABLENUMBER (19) NOT NULL
VERSIONNUMBER (19)

02. Creamos los script’s de BD

  • Aquí hay varias cosas que definir
  • probar la existencia de la tabla
/********************************************************/
/********************************************************/
/* VERIFICACIÓN  EXISTENCIA TABLA                       */
/********************************************************/
/********************************************************/
SELECT * FROM ESTADO_ARR;
  • Crear la tabla
/********************************************************/
/********************************************************/
/* CREACIÓN DE TABLA                                    */
/********************************************************/
/********************************************************/
CREATE TABLE "PPI"."ESTADO_ARR"
(
    /********************************************************/
    /* CAMPOS: TABLA                                        */
    /********************************************************/
    "ID_ESTADO_ARR"         NUMBER (19,0)       NOT NULL,
    "NOMBRE"                VARCHAR2(255)       NOT NULL,
    "ACTIVO"                NUMBER(1,0)         NOT NULL,
    
    /********************************************************/
    /* CAMPOS: FRAMEWORK SDK-UNA                            */
    /********************************************************/
    "FECHA_CREACION"        DATE                NOT NULL,
    "USUARIO_CREACION"      NUMBER(19,0)        NOT NULL,
    "FECHA_MODIFICACION"    DATE                NOT NULL,
    "USUARIO_MODIFICACION"  NUMBER(19,0)        NOT NULL,
    "VERSION"               NUMBER(19,0),
    "CAMPO_CONFIGURABLE"    NUMBER(19,0),
    
    /********************************************************/
    /* LLAVE: PRIMARIA                                      */
    /********************************************************/
    CONSTRAINT "PK_ESTADO_ARR" PRIMARY KEY("ID_ESTADO_ARR"),
    
    /********************************************************/
    /* LLAVE: FORANEAS                                      */
    /********************************************************/
    CONSTRAINT FK_EST_ARR_USU_CRE FOREIGN KEY(USUARIO_CREACION)        REFERENCES SAS.USUARIO(ID_USUARIO),
    CONSTRAINT FK_EST_ARR_USU_MOD FOREIGN KEY(USUARIO_MODIFICACION)    REFERENCES SAS.USUARIO(ID_USUARIO),
    CONSTRAINT FK_EST_ARR_CAM_CON FOREIGN KEY(CAMPO_CONFIGURABLE)      REFERENCES SAS.CAMPO_CONFIGURABLE(ID_CAMPO_CONFIGURABLE)
);
  • Que tiene los campos propios de la tabla
/********************************************************/
    /* CAMPOS: TABLA                                        */
    /********************************************************/
    "ID_ESTADO_ARR"         NUMBER (19,0)       NOT NULL,
    "NOMBRE"                VARCHAR2(255)       NOT NULL,
    "ACTIVO"                NUMBER(1,0)         NOT NULL,
  • Y los de SIGESA
/********************************************************/
    /* CAMPOS: FRAMEWORK SDK-UNA                            */
    /********************************************************/
    "FECHA_CREACION"        DATE                NOT NULL,
    "USUARIO_CREACION"      NUMBER(19,0)        NOT NULL,
    "FECHA_MODIFICACION"    DATE                NOT NULL,
    "USUARIO_MODIFICACION"  NUMBER(19,0)        NOT NULL,
    "VERSION"               NUMBER(19,0),
    "CAMPO_CONFIGURABLE"    NUMBER(19,0),
  • La llave primaria se define así
/********************************************************/
    /* LLAVE: PRIMARIA                                      */
    /********************************************************/
    CONSTRAINT "PK_ESTADO_ARR" PRIMARY KEY("ID_ESTADO_ARR"),
  • Y las foreaneas
/********************************************************/
    /* LLAVE: FORANEAS                                      */
    /********************************************************/
    CONSTRAINT FK_EST_ARR_USU_CRE FOREIGN KEY(USUARIO_CREACION)        REFERENCES SAS.USUARIO(ID_USUARIO),
    CONSTRAINT FK_EST_ARR_USU_MOD FOREIGN KEY(USUARIO_MODIFICACION)    REFERENCES SAS.USUARIO(ID_USUARIO),
    CONSTRAINT FK_EST_ARR_CAM_CON FOREIGN KEY(CAMPO_CONFIGURABLE)      REFERENCES SAS.CAMPO_CONFIGURABLE(ID_CAMPO_CONFIGURABLE)
  • Agregar comentarios a las campos
/********************************************************/
/********************************************************/
/* COMENTARIOS                                          */
/********************************************************/
/********************************************************/
COMMENT ON COLUMN "PPI"."ESTADO_ARR"."NOMBRE"             IS 'Nombre del Estado de Actividad de Respuesta al Riesgo';
COMMENT ON COLUMN "PPI"."ESTADO_ARR"."ACTIVO"             IS '1 = Activo / 0 = Inactivo';
  • Luego se debe crear la secuencia que es la que establece el incremento que se ba dar en el id de la tabla
/********************************************************/
/********************************************************/
/* SECUENCIA                                            */
/********************************************************/
/********************************************************/
CREATE SEQUENCE "PPI".SQ_ESTADO_ARR START WITH 1 INCREMENT BY 1;
  • Se crean los sinonimos, que establecen de forma publica el acceso a la tabla y secuencia
/********************************************************/
/********************************************************/
/* SINONIMOS                                            */
/********************************************************/
/********************************************************/
CREATE PUBLIC SYNONYM ESTADO_ARR FOR "PPI"."ESTADO_ARR";
CREATE PUBLIC SYNONYM SQ_ESTADO_ARR FOR PPI.SQ_ESTADO_ARR;
  • Si requerimos eliminar lo creado hasta este momento
  • //
  • //
  • /* ELIMINAR TABLA / //
  • /*/
  • DROP SEQUENCE «PPI».SQ_ESTADO_ARR;
  • DROP PUBLIC SYNONYM ESTADO_ARR;
  • DROP PUBLIC SYNONYM SQ_ESTADO_ARR;
  • DROP TABLE «PPI».ESTADO_ARR;
/********************************************************/
/********************************************************/
/* ELIMINAR TABLA                                       */
/********************************************************/
/********************************************************/
DROP SEQUENCE "PPI".SQ_ESTADO_ARR;
DROP PUBLIC SYNONYM ESTADO_ARR;
DROP PUBLIC SYNONYM SQ_ESTADO_ARR;
DROP TABLE "PPI".ESTADO_ARR;
  • Y finalmente otorgar permisos a los usuarios necesarios

03. Script Finales

Estado_ARR

/********************************************************/
/********************************************************/
/* VERIFICACIÓN  EXISTENCIA TABLA                       */
/********************************************************/
/********************************************************/
SELECT * FROM ESTADO_ARR;

/********************************************************/
/********************************************************/
/* CREACIÓN DE TABLA                                    */
/********************************************************/
/********************************************************/
CREATE TABLE "PPI"."ESTADO_ARR"
(
    /********************************************************/
    /* CAMPOS: TABLA                                        */
    /********************************************************/
    "ID_ESTADO_ARR"         NUMBER (19,0)       NOT NULL,
    "NOMBRE"                VARCHAR2(255)       NOT NULL,
    "ACTIVO"                NUMBER(1,0)         NOT NULL,
    
    /********************************************************/
    /* CAMPOS: FRAMEWORK SDK-UNA                            */
    /********************************************************/
    "FECHA_CREACION"        DATE                NOT NULL,
    "USUARIO_CREACION"      NUMBER(19,0)        NOT NULL,
    "FECHA_MODIFICACION"    DATE                NOT NULL,
    "USUARIO_MODIFICACION"  NUMBER(19,0)        NOT NULL,
    "VERSION"               NUMBER(19,0),
    "CAMPO_CONFIGURABLE"    NUMBER(19,0),
    
    /********************************************************/
    /* LLAVE: PRIMARIA                                      */
    /********************************************************/
    CONSTRAINT "PK_ESTADO_ARR" PRIMARY KEY("ID_ESTADO_ARR"),
    
    /********************************************************/
    /* LLAVE: FORANEAS                                      */
    /********************************************************/
    CONSTRAINT FK_EST_ARR_USU_CRE FOREIGN KEY(USUARIO_CREACION)        REFERENCES SAS.USUARIO(ID_USUARIO),
    CONSTRAINT FK_EST_ARR_USU_MOD FOREIGN KEY(USUARIO_MODIFICACION)    REFERENCES SAS.USUARIO(ID_USUARIO),
    CONSTRAINT FK_EST_ARR_CAM_CON FOREIGN KEY(CAMPO_CONFIGURABLE)      REFERENCES SAS.CAMPO_CONFIGURABLE(ID_CAMPO_CONFIGURABLE)
);

/********************************************************/
/********************************************************/
/* COMENTARIOS                                          */
/********************************************************/
/********************************************************/
COMMENT ON COLUMN "PPI"."ESTADO_ARR"."NOMBRE"             IS 'Nombre del Estado de Actividad de Respuesta al Riesgo';
COMMENT ON COLUMN "PPI"."ESTADO_ARR"."ACTIVO"             IS '1 = Activo / 0 = Inactivo';


/********************************************************/
/********************************************************/
/* SECUENCIA                                            */
/********************************************************/
/********************************************************/
CREATE SEQUENCE "PPI".SQ_ESTADO_ARR START WITH 1 INCREMENT BY 1;

/********************************************************/
/********************************************************/
/* SINONIMOS                                            */
/********************************************************/
/********************************************************/
CREATE PUBLIC SYNONYM ESTADO_ARR FOR "PPI"."ESTADO_ARR";
CREATE PUBLIC SYNONYM SQ_ESTADO_ARR FOR PPI.SQ_ESTADO_ARR;


/********************************************************/
/********************************************************/
/* VERIFICACIÓN  EXISTENCIA TABLA                       */
/********************************************************/
/********************************************************/
SELECT * FROM ESTADO_ARR;


/********************************************************/
/********************************************************/
/* ELIMINAR TABLA                                       */
/********************************************************/
/********************************************************/
DROP SEQUENCE "PPI".SQ_ESTADO_ARR;
DROP PUBLIC SYNONYM ESTADO_ARR;
DROP PUBLIC SYNONYM SQ_ESTADO_ARR;
DROP TABLE "PPI".ESTADO_ARR;

/********************************************************/
/********************************************************/
/* GRANT PERMISOS SOBRE LA TABLA                        */
/********************************************************/
/********************************************************/
GRANT DELETE, INSERT, UPDATE, SELECT, REFERENCES ON "PPI"."ESTADO_ARR" TO "WWW_SIGESA";
GRANT SELECT, ALTER ON PPI.SQ_ESTADO_ARR TO WWW_SIGESA;
GRANT SELECT ON "PPI"."ESTADO_ARR" TO "ANALISTA", "ANALISTA_SIGESA";

Estado_AM

/********************************************************/
/********************************************************/
/* VERIFICACIÓN  EXISTENCIA TABLA                       */
/********************************************************/
/********************************************************/
SELECT * FROM ESTADO_AM;

/********************************************************/
/********************************************************/
/* CREACIÓN DE TABLA                                    */
/********************************************************/
/********************************************************/
CREATE TABLE "PPI"."ESTADO_AM"
(
    /********************************************************/
    /* CAMPOS: TABLA                                        */
    /********************************************************/
    "ID_ESTADO_AM"         NUMBER (19,0)       NOT NULL,
    "NOMBRE"                VARCHAR2(255)       NOT NULL,
    "ACTIVO"                NUMBER(1,0)         NOT NULL,
    
    /********************************************************/
    /* CAMPOS: FRAMEWORK SDK-UNA                            */
    /********************************************************/
    "FECHA_CREACION"        DATE                NOT NULL,
    "USUARIO_CREACION"      NUMBER(19,0)        NOT NULL,
    "FECHA_MODIFICACION"    DATE                NOT NULL,
    "USUARIO_MODIFICACION"  NUMBER(19,0)        NOT NULL,
    "VERSION"               NUMBER(19,0),
    "CAMPO_CONFIGURABLE"    NUMBER(19,0),
    
    /********************************************************/
    /* LLAVE: PRIMARIA                                      */
    /********************************************************/
    CONSTRAINT "PK_ESTADO_AM" PRIMARY KEY("ID_ESTADO_AM"),
    
    /********************************************************/
    /* LLAVE: FORANEAS                                      */
    /********************************************************/
    CONSTRAINT FK_EST_AM_USU_CRE FOREIGN KEY(USUARIO_CREACION)        REFERENCES SAS.USUARIO(ID_USUARIO),
    CONSTRAINT FK_EST_AM_USU_MOD FOREIGN KEY(USUARIO_MODIFICACION)    REFERENCES SAS.USUARIO(ID_USUARIO),
    CONSTRAINT FK_EST_AM_CAM_CON FOREIGN KEY(CAMPO_CONFIGURABLE)      REFERENCES SAS.CAMPO_CONFIGURABLE(ID_CAMPO_CONFIGURABLE)
);

/********************************************************/
/********************************************************/
/* COMENTARIOS                                          */
/********************************************************/
/********************************************************/
COMMENT ON COLUMN "PPI"."ESTADO_AM"."NOMBRE"             IS 'Nombre del Estado de Actividad de Mejora';
COMMENT ON COLUMN "PPI"."ESTADO_AM"."ACTIVO"             IS '1 = Activo / 0 = Inactivo';


/********************************************************/
/********************************************************/
/* SECUENCIA                                            */
/********************************************************/
/********************************************************/
CREATE SEQUENCE "PPI".SQ_ESTADO_AM START WITH 1 INCREMENT BY 1;

/********************************************************/
/********************************************************/
/* SINONIMOS                                            */
/********************************************************/
/********************************************************/
CREATE PUBLIC SYNONYM ESTADO_AM FOR "PPI"."ESTADO_AM";
CREATE PUBLIC SYNONYM SQ_ESTADO_AM FOR PPI.SQ_ESTADO_AM;


/********************************************************/
/********************************************************/
/* VERIFICACIÓN  EXISTENCIA TABLA                       */
/********************************************************/
/********************************************************/
SELECT * FROM ESTADO_AM;


/********************************************************/
/********************************************************/
/* ELIMINAR TABLA                                       */
/********************************************************/
/********************************************************/
DROP SEQUENCE "PPI".SQ_ESTADO_AMM;
DROP PUBLIC SYNONYM ESTADO_AM;
DROP PUBLIC SYNONYM SQ_ESTADO_AM;
DROP TABLE "PPI".ESTADO_AM;

/********************************************************/
/********************************************************/
/* GRANT PERMISOS SOBRE LA TABLA                        */
/********************************************************/
/********************************************************/
GRANT DELETE, INSERT, UPDATE, SELECT, REFERENCES ON "PPI"."ESTADO_AM" TO "WWW_SIGESA";
GRANT SELECT, ALTER ON PPI.SQ_ESTADO_AM TO WWW_SIGESA;
GRANT SELECT ON "PPI"."ESTADO_AM" TO "ANALISTA", "ANALISTA_SIGESA";

05. Script’s al Código

  • Todo script’s de base de datos debe ser incorporado al código fuente de SIGESA, para poder obtenerlo cuando se necesite
  • El formato del nombre del archivo debe ser el siguiente
// Base
NombreTablaCreate.sql

// Ejemplos
Estado_ARRCreate.sql
Estado_AMCreate.sql

EstadoARRCreate.sql

  • Archivo final
/* 
 * Copyright (C) 2022.
 *
 * Centro de Gestion Informatica
 * Direccion de Tecnologias de la Informacion y Comunicacion
 * Universidad Nacional - Costa Rica
 * http://www.una.ac.cr
 * 
 */
--------------------------------------------------------
--  DDL for Table:      EstadoARR     
--------------------------------------------------------
--------------------------------------------------------
--  Creador:            Gustavo Matamoros González
--------------------------------------------------------
--------------------------------------------------------
--  Fecha Creación:     28/03/2023
--------------------------------------------------------


/********************************************************/
/* CREACIÓN DE TABLA                                    */
/********************************************************/

CREATE TABLE "PPI"."ESTADO_ARR"
(

    "ID_ESTADO_ARR"         NUMBER (19,0)       NOT NULL,
    "NOMBRE"                VARCHAR2(255)       NOT NULL,
    "ACTIVO"                NUMBER(1,0)         NOT NULL,
    
    "FECHA_CREACION"        DATE                NOT NULL,
    "USUARIO_CREACION"      NUMBER(19,0)        NOT NULL,
    "FECHA_MODIFICACION"    DATE                NOT NULL,
    "USUARIO_MODIFICACION"  NUMBER(19,0)        NOT NULL,
    "VERSION"               NUMBER(19,0),
    "CAMPO_CONFIGURABLE"    NUMBER(19,0),
    
    CONSTRAINT "PK_ESTADO_ARR" PRIMARY KEY("ID_ESTADO_ARR"),

    CONSTRAINT FK_EST_ARR_USU_CRE FOREIGN KEY(USUARIO_CREACION)        REFERENCES SAS.USUARIO(ID_USUARIO),
    CONSTRAINT FK_EST_ARR_USU_MOD FOREIGN KEY(USUARIO_MODIFICACION)    REFERENCES SAS.USUARIO(ID_USUARIO),
    CONSTRAINT FK_EST_ARR_CAM_CON FOREIGN KEY(CAMPO_CONFIGURABLE)      REFERENCES SAS.CAMPO_CONFIGURABLE(ID_CAMPO_CONFIGURABLE)
);


/********************************************************/
/* COMENTARIOS                                          */
/********************************************************/
COMMENT ON COLUMN "PPI"."ESTADO_ARR"."NOMBRE"             IS 'Nombre del Estado de Actividad de Respuesta al Riesgo';
COMMENT ON COLUMN "PPI"."ESTADO_ARR"."ACTIVO"             IS '1 = Activo / 0 = Inactivo';



/********************************************************/
/* SECUENCIA                                            */
/********************************************************/
CREATE SEQUENCE "PPI".SQ_ESTADO_ARR START WITH 1 INCREMENT BY 1;


/********************************************************/
/* SINONIMOS                                            */
/********************************************************/
CREATE PUBLIC SYNONYM ESTADO_ARR FOR "PPI"."ESTADO_ARR";
CREATE PUBLIC SYNONYM SQ_ESTADO_ARR FOR PPI.SQ_ESTADO_ARR;


/********************************************************/
/* GRANT                                                */
/********************************************************/
GRANT DELETE, INSERT, UPDATE, SELECT, REFERENCES ON "PPI"."ESTADO_ARR" TO "WWW_SIGESA";
GRANT SELECT, ALTER ON PPI.SQ_ESTADO_ARR TO WWW_SIGESA;
GRANT SELECT ON "PPI"."ESTADO_ARR" TO "ANALISTA", "ANALISTA_SIGESA";



/********************************************************/
/* ALTER                                                */
/********************************************************/




/********************************************************/
/* REVERSIÓN                                            */
/********************************************************/
DROP SEQUENCE "PPI".SQ_ESTADO_ARR;
DROP PUBLIC SYNONYM ESTADO_ARR;
DROP PUBLIC SYNONYM SQ_ESTADO_ARR;
DROP TABLE "PPI".ESTADO_ARR;

EstadoAMCreate.sql

/* 
 * Copyright (C) 2022.
 *
 * Centro de Gestion Informatica
 * Direccion de Tecnologias de la Informacion y Comunicacion
 * Universidad Nacional - Costa Rica
 * http://www.una.ac.cr
 * 
 */
--------------------------------------------------------
--  DDL for Table:      EstadoAM     
--------------------------------------------------------
--------------------------------------------------------
--  Creador:            Gustavo Matamoros González
--------------------------------------------------------
--------------------------------------------------------
--  Fecha Creación:     28/03/2023
--------------------------------------------------------



/********************************************************/
/* CREACIÓN DE TABLA                                    */
/********************************************************/
CREATE TABLE "PPI"."ESTADO_AM"
(

    "ID_ESTADO_AM"         NUMBER (19,0)       NOT NULL,
    "NOMBRE"                VARCHAR2(255)       NOT NULL,
    "ACTIVO"                NUMBER(1,0)         NOT NULL,
    
    "FECHA_CREACION"        DATE                NOT NULL,
    "USUARIO_CREACION"      NUMBER(19,0)        NOT NULL,
    "FECHA_MODIFICACION"    DATE                NOT NULL,
    "USUARIO_MODIFICACION"  NUMBER(19,0)        NOT NULL,
    "VERSION"               NUMBER(19,0),
    "CAMPO_CONFIGURABLE"    NUMBER(19,0),
    
    CONSTRAINT "PK_ESTADO_AM" PRIMARY KEY("ID_ESTADO_AM"),
    
    CONSTRAINT FK_EST_AM_USU_CRE FOREIGN KEY(USUARIO_CREACION)        REFERENCES SAS.USUARIO(ID_USUARIO),
    CONSTRAINT FK_EST_AM_USU_MOD FOREIGN KEY(USUARIO_MODIFICACION)    REFERENCES SAS.USUARIO(ID_USUARIO),
    CONSTRAINT FK_EST_AM_CAM_CON FOREIGN KEY(CAMPO_CONFIGURABLE)      REFERENCES SAS.CAMPO_CONFIGURABLE(ID_CAMPO_CONFIGURABLE)
);


/********************************************************/
/* COMENTARIOS                                          */
/********************************************************/
COMMENT ON COLUMN "PPI"."ESTADO_AM"."NOMBRE"             IS 'Nombre del Estado de Actividad de Mejora';
COMMENT ON COLUMN "PPI"."ESTADO_AM"."ACTIVO"             IS '1 = Activo / 0 = Inactivo';


/********************************************************/
/* SECUENCIA                                            */
/********************************************************/
CREATE SEQUENCE "PPI".SQ_ESTADO_AM START WITH 1 INCREMENT BY 1;

/********************************************************/
/* SINONIMOS                                            */
/********************************************************/
CREATE PUBLIC SYNONYM ESTADO_AM FOR "PPI"."ESTADO_AM";
CREATE PUBLIC SYNONYM SQ_ESTADO_AM FOR PPI.SQ_ESTADO_AM;


/********************************************************/
/* GRANT                                                */
/********************************************************/
GRANT DELETE, INSERT, UPDATE, SELECT, REFERENCES ON "PPI"."ESTADO_AM" TO "WWW_SIGESA";
GRANT SELECT, ALTER ON PPI.SQ_ESTADO_AM TO WWW_SIGESA;
GRANT SELECT ON "PPI"."ESTADO_AM" TO "ANALISTA", "ANALISTA_SIGESA";

/********************************************************/
/* ALTER                                                */
/********************************************************/


/********************************************************/
/* REVERSIÓN                                            */
/********************************************************/
DROP SEQUENCE "PPI".SQ_ESTADO_AMM;
DROP PUBLIC SYNONYM ESTADO_AM;
DROP PUBLIC SYNONYM SQ_ESTADO_AM;
DROP TABLE "PPI".ESTADO_AM;

06. JPA: Aggregator

  • Dentro de los proyecto de SIGESA existe el proyecto «sigesa-aggregator» que es donde estan definidos dos partes
    • Domain: que es donde se crea la clase que va a gestionar la entidad
    • Repository: que es donde se crea el servicio que permite acceder al la clase de la entidad
  • Para saber donde nos debemos ubicar denemos ingresar a
// Ubicación
"sigesa-aggregator"->"sigesa-jpa"->"src/main/java"->"codigoProyecto"->"codigoSubProyecto"->domain y repository

// Ejemplo
sigesa-aggregator/sigesa-jpa/src/main/java/PPI/MCG/domain
sigesa-aggregator/sigesa-jpa/src/main/java/PPI/MCG/repository

Domain

  • Es donde se define la clase que va a gestionar la entidad
  • Creamos el archivo

EstadoARR.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.domain;

/**********************************************************************/
/*********************       IMPORT'S    ******************************/
/**********************************************************************/
import javax.persistence.AttributeOverride;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.SequenceGenerator;
import javax.persistence.Table;
import cr.ac.una.cgi.sdkuna.domain.CampoConfigurable;
import cr.ac.una.cgi.sdkuna.domain.Usuario;
import cr.ac.una.cgi.sdkuna.generic.BaseEntity;


/**********************************************************************/
/*********************    DOCUMENTACIÓN  ******************************/
/**********************************************************************/
/**
 * 
 * @author Gustavo Matamoros González
 * @version 0.0.1 28/03/2023
 */
@Entity
@Table(name = "ESTADO_ARR")
@AttributeOverride(name = "id", column
        = @Column(name = "ID_ESTADO_ARR"))
@SequenceGenerator(name = "sequence", sequenceName = "SQ_ESTADO_ARR", allocationSize = 1)
public class EstadoARR extends BaseEntity<Usuario, CampoConfigurable> {

    // ***************************************
    // DEFINICION DE CAMPOS
    // ***************************************
    @Column(name = "NOMBRE")
    private String nombre; 

    @Column(name = "ACTIVO")
    private boolean activo;

    // ***************************************
    // NOMBRE
    // ***************************************
    public String getNombre() {
        return nombre;
    }

    public void setNombre(String nombre) {
        this.nombre = nombre;
    }    

    // ***************************************
    // ACTIVO
    // ***************************************
    public boolean isActivo() {
        return activo;
    }

    public void setActivo(boolean activo) {
        this.activo = activo;
    }
}

EstadoAM.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.domain;

/**********************************************************************/
/*********************       IMPORT'S    ******************************/
/**********************************************************************/
import javax.persistence.AttributeOverride;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.SequenceGenerator;
import javax.persistence.Table;
import cr.ac.una.cgi.sdkuna.domain.CampoConfigurable;
import cr.ac.una.cgi.sdkuna.domain.Usuario;
import cr.ac.una.cgi.sdkuna.generic.BaseEntity;

/**********************************************************************/
/*********************    DOCUMENTACIÓN  ******************************/
/**********************************************************************/
/**
 * 
 * @author Gustavo Matamoros González
 * @version 0.0.1 28/03/2023
 */
@Entity
@Table(name = "ESTADO_AM")
@AttributeOverride(name = "id", column
        = @Column(name = "ID_ESTADO_AM"))
@SequenceGenerator(name = "sequence", sequenceName = "SQ_ESTADO_AM", allocationSize = 1)
public class EstadoAM extends BaseEntity<Usuario, CampoConfigurable> {

    // ***************************************
    // DEFINICION DE CAMPOS
    // ***************************************
    @Column(name = "NOMBRE")
    private String nombre; 

    @Column(name = "ACTIVO")
    private boolean activo;


    // ***************************************
    // NOMBRE
    // **************************************
    public String getNombre() {
        return nombre;
    }

    public void setNombre(String nombre) {
        this.nombre = nombre;
    }    

    // ***************************************
    // ACTIVO
    // ***************************************
    public boolean isActivo() {
        return activo;
    }

    public void setActivo(boolean activo) {
        this.activo = activo;
    }
}

Repository

  • Ahora vamos a crear el servicio para poder acceder a la clase

EstadoARRRepository.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.repository;

/**********************************************************************/
/*********************       IMPORT'S    ******************************/
/**********************************************************************/
import org.springframework.stereotype.Repository;
import cr.ac.una.cgi.sdkuna.generic.GenericRepository;
import cr.ac.una.cgi.sigesa.ppi.mcg.domain.EstadoARR;

/**********************************************************************/
/*********************    DOCUMENTACIÓN  ******************************/
/**********************************************************************/
/**
 * 
 * @author Gustavo Matamoros González
 * @version 0.0.1 28/03/2023
 */
@Repository
public interface EstadoARRRepository extends GenericRepository<EstadoARR> {

}

    EstadoAMRepository.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.repository;
    
    /**********************************************************************/
    /*********************       IMPORT'S    ******************************/
    /**********************************************************************/
    import org.springframework.stereotype.Repository;
    import cr.ac.una.cgi.sdkuna.generic.GenericRepository;
    import cr.ac.una.cgi.sigesa.ppi.mcg.domain.EstadoAM;
    
    /**********************************************************************/
    /*********************    DOCUMENTACIÓN  ******************************/
    /**********************************************************************/
    /**
     * 
     * @author Gustavo Matamoros González
     * @version 0.0.1 28/03/2023
     */
    @Repository
    public interface EstadoAMRepository extends GenericRepository<EstadoAM> {
    
    }
    

    06. creación de Service

    • Ahora vamos a crear la definición del servicio que permite comunicar las capas superiores con la clase que gestiona la entidad
    • Por tanto vamos así
    bd->domain->repository->service
    • Dentro decada de cada proyecto sigesa existe la siguiente estructura
      • interace-service: se crean las definiciones de los servicios y crea la comunicación con el repository
      • service: se crean los métodos o servicios que pueden ser consumidos por él u otros servcios
      • web: contiene los beans y recursos propios de las paginas web

    EstadoARRService.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.service;
    
    /**********************************************************************/
    /*********************       IMPORT'S    ******************************/
    /**********************************************************************/
    import cr.ac.una.cgi.sdkuna.api.service.EntityService;
    import cr.ac.una.cgi.sigesa.ppi.mcg.domain.EstadoARR;
    
    /**********************************************************************/
    /*********************  DOCUMENTACIÓN    ******************************/
    /**********************************************************************/
    /**
     * Interface para la administración de la entidad {@link EstadoARR}
     *
     * @author Gustavo Matamoros González
     * @fecha 28/03/2023
     */
    public interface EstadoARRService extends EntityService<EstadoARR> {
    
    }
    

    EstadoAMService.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.service;
    
    /**********************************************************************/
    /*********************       IMPORT'S    ******************************/
    /**********************************************************************/
    import cr.ac.una.cgi.sdkuna.api.service.EntityService;
    import cr.ac.una.cgi.sigesa.ppi.mcg.domain.EstadoAM;
    
    /**********************************************************************/
    /*********************  DOCUMENTACIÓN    ******************************/
    /**********************************************************************/
    /**
     * Interface para la administración de la entidad {@link EstadoAM}
     *
     * @author Gustavo Matamoros González
     * @fecha 28/03/2023
     */
    public interface EstadoAMService extends EntityService<EstadoAM> {
    
    }
    

    07 Service Implementación

    EstadoARRServiceImpl.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.service;
    
    /**********************************************************************/
    /*********************       IMPORT'S    ******************************/
    /**********************************************************************/
    import org.springframework.stereotype.Service;
    import org.springframework.transaction.annotation.Transactional;
    import cr.ac.una.cgi.sdkuna.api.service.EntityServiceImpl;
    import cr.ac.una.cgi.sigesa.ppi.mcg.domain.EstadoARR;
    import cr.ac.una.cgi.sigesa.ppi.mcg.repository.EstadoARRRepository;
    
    /**********************************************************************/
    /*********************  DOCUMENTACIÓN    ******************************/
    /**********************************************************************/
    /**
     * Clase que implementa el servicio {@link EstadoARRService} para la entidad
     * {@link EstadoARR}
     *
     * @author Gustavo Matamoros González
     * @fecha 28/03/2023
     */
    @Service
    @Transactional
    public class EstadoARRServiceImpl extends EntityServiceImpl<EstadoARR, EstadoARRRepository> implements EstadoARRService {
    
    }
    

    EstadoAMServiceImpl.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.service;
    
    
    /**********************************************************************/
    /*********************       IMPORT'S    ******************************/
    /**********************************************************************/
    import org.springframework.stereotype.Service;
    import org.springframework.transaction.annotation.Transactional;
    import cr.ac.una.cgi.sdkuna.api.service.EntityServiceImpl;
    import cr.ac.una.cgi.sigesa.ppi.mcg.domain.EstadoAM;
    import cr.ac.una.cgi.sigesa.ppi.mcg.repository.EstadoAMRepository;
    
    /**********************************************************************/
    /*********************  DOCUMENTACIÓN    ******************************/
    /**********************************************************************/
    /**
     * Clase que implementa el servicio {@link EstadoAMService} para la entidad
     * {@link EstadoAM}
     *
     * @author Gustavo Matamoros González
     * @fecha 28/03/2023
     */
    @Service
    @Transactional
    public class EstadoAMServiceImpl extends EntityServiceImpl<EstadoAM, EstadoAMRepository> implements EstadoAMService {
    
    }
    

    08 Beans

    • Nos ubicamos en la ruta
    "Proyecto"->"Web"->"Model"

    EsatdoARRBean.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.model;
    
    /**********************************************************************/
    /*********************       IMPORT'S    ******************************/
    /**********************************************************************/
    import java.util.ArrayList;
    import java.util.List;
    import javax.annotation.PostConstruct;
    import org.springframework.context.annotation.Scope;
    import org.springframework.stereotype.Component;
    import cr.ac.una.cgi.sdkuna.view.commons.CRUD;
    import cr.ac.una.cgi.sdkuna.view.commons.CRUDColumn;
    import cr.ac.una.cgi.sdkuna.view.commons.CRUDImpl;
    import cr.ac.una.cgi.sigesa.ppi.mcg.domain.EstadoARR;
    import cr.ac.una.cgi.sigesa.ppi.mcg.service.EstadoARRService;
    
    /**********************************************************************/
    /*********************  DOCUMENTACIÓN    ******************************/
    /**********************************************************************/
    /**
     * Spring Bean Session para la administración de la entidad {@link EstadoARR}
     *
     * @author Gustavo Matamoros González
     * @fecha 28/03/2023
     */
    @Component
    @Scope("session")
    public class EstadoARRBean extends CRUDImpl<EstadoARR, EstadoARRService> implements CRUD {
    
        @PostConstruct
        public void init() {
            List<CRUDColumn> columns = new ArrayList<>();
    
            CRUDColumn column1 = new CRUDColumn("nombre",           getI18n("estadoARR_nombre_label"),                true);
            CRUDColumn column2 = new CRUDColumn("activo",           getI18n("estadoARR_activo_label"),                true);
    
            columns.add(column1);
            columns.add(column2);
    
            this.setTableColumns(columns);
        }
    }
    

    EstadoAMBean.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.model;
    
    /**********************************************************************/
    /*********************       IMPORT'S    ******************************/
    /**********************************************************************/
    import java.util.ArrayList;
    import java.util.List;
    import javax.annotation.PostConstruct;
    import org.springframework.context.annotation.Scope;
    import org.springframework.stereotype.Component;
    import cr.ac.una.cgi.sdkuna.view.commons.CRUD;
    import cr.ac.una.cgi.sdkuna.view.commons.CRUDColumn;
    import cr.ac.una.cgi.sdkuna.view.commons.CRUDImpl;
    import cr.ac.una.cgi.sigesa.ppi.mcg.domain.EstadoAM;
    import cr.ac.una.cgi.sigesa.ppi.mcg.service.EstadoAMService;
    
    /**********************************************************************/
    /*********************  DOCUMENTACIÓN    ******************************/
    /**********************************************************************/
    /**
     * Spring Bean Session para la administración de la entidad {@link EstadoAM}
     *
     * @author Gustavo Matamoros González
     * @fecha 28/03/2023
     */
    @Component
    @Scope("session")
    public class EstadoAMBean extends CRUDImpl<EstadoAM, EstadoAMService> implements CRUD {
    
        @PostConstruct
        public void init() {
            List<CRUDColumn> columns = new ArrayList<>();
    
            CRUDColumn column1 = new CRUDColumn("nombre",           getI18n("estadoAM_nombre_label"),                true);
            CRUDColumn column2 = new CRUDColumn("activo",           getI18n("estadoAM_activo_label"),                true);
    
            columns.add(column1);
            columns.add(column2);
    
            this.setTableColumns(columns);
        }
    }
    

    Paso #08: ListForm

    • Ubicación
    Proyecto->web->resources->META-INF/resources/pages

    estadoARRListForm.xhtml

    <!--
    Copyright (c) 2022.
    Centro de Gestion Informatica
    Direccion de Tecnologias de la Informacion y Comunicacion
    Universidad Nacional - Costa Rica
    http://www.una.ac.cr
    -->
    <!-- ******************************************************************************************** -->
    <!-- ******************************************************************************************** -->
    <!-- *****************************   COMPOSICIÓN   ********************************************** -->
    <!-- ******************************************************************************************** -->
    <!-- ******************************************************************************************** -->
    <ui:composition
        template="/templates/crud.xhtml"
        xmlns="http://www.w3.org/1999/xhtml"
        xmlns:f="http://java.sun.com/jsf/core"
        xmlns:h="http://java.sun.com/jsf/html"
        xmlns:ui="http://java.sun.com/jsf/facelets"
        xmlns:components="http://java.sun.com/jsf/composite/components">
    
        <!-- ******************************************************************************************** -->
        <!-- *****************************      PRERENDER     ******************************************* -->
        <!-- ******************************************************************************************** -->
        <ui:define name="preRender">
            <f:event type="preRenderView" listener="#{estadoARRBean.list()}" />
        </ui:define>
    
        <!-- ******************************************************************************************** -->
        <!-- *****************************       TITLE        ******************************************* -->
        <!-- ******************************************************************************************** -->
        <ui:define name="title">#{i18n.estadoARR_list_form_title}</ui:define>
    
        <!-- ******************************************************************************************** -->
        <!-- *****************************       DEFINE       ******************************************* -->
        <!-- ******************************************************************************************** -->
        <ui:define name="contentCRUD">
    
            <!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
            <!-- ++++++++++++++++++++++++++++++++++   TOOLBAR  ++++++++++++++++++++++++++++++++++++++++++++++ -->
            <!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
            <components:toolbar id="toolbar" 
                                editMode="false"
                                bean="#{estadoARRBean}"
                                listForm="estadoARRListForm"
                                editForm="estadoARREditForm"
                                backForm="estadoARRListForm"
                                container="noEditTable:dataTable"
                                header="#{i18n.estadoARR_list_form_table_title}"/>
                                
            <!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
            <!-- ++++++++++++++++++++++++++++++++++   TOOLBAR  ++++++++++++++++++++++++++++++++++++++++++++++ -->
            <!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
            <components:noEditTable id="noEditTable"
                                    i18nKey="estadoARR_list_form_table_title"
                                    header="#{i18n.estadoARR_list_form_table_title}"
                                    bean="#{estadoARRBean}"
                                    editForm="estadoARREditForm"/>
        </ui:define>
    </ui:composition>
    

    estadoAMListForm.xhtml

    <!--
    Copyright (c) 2022.
    Centro de Gestion Informatica
    Direccion de Tecnologias de la Informacion y Comunicacion
    Universidad Nacional - Costa Rica
    http://www.una.ac.cr
    -->
    <!-- ******************************************************************************************** -->
    <!-- ******************************************************************************************** -->
    <!-- *****************************   COMPOSICIÓN   ********************************************** -->
    <!-- ******************************************************************************************** -->
    <!-- ******************************************************************************************** -->
    <ui:composition
        template="/templates/crud.xhtml"
        xmlns="http://www.w3.org/1999/xhtml"
        xmlns:f="http://java.sun.com/jsf/core"
        xmlns:h="http://java.sun.com/jsf/html"
        xmlns:ui="http://java.sun.com/jsf/facelets"
        xmlns:components="http://java.sun.com/jsf/composite/components">
    
        <!-- ******************************************************************************************** -->
        <!-- *****************************      PRERENDER     ******************************************* -->
        <!-- ******************************************************************************************** -->
        <ui:define name="preRender">
            <f:event type="preRenderView" listener="#{estadoAMBean.list()}" />
        </ui:define>
    
        <!-- ******************************************************************************************** -->
        <!-- *****************************       TITLE        ******************************************* -->
        <!-- ******************************************************************************************** -->
        <ui:define name="title">#{i18n.estadoAM_list_form_title}</ui:define>
    
        <!-- ******************************************************************************************** -->
        <!-- *****************************       DEFINE       ******************************************* -->
        <!-- ******************************************************************************************** -->
        <ui:define name="contentCRUD">
    
            <!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
            <!-- ++++++++++++++++++++++++++++++++++   TOOLBAR  ++++++++++++++++++++++++++++++++++++++++++++++ -->
            <!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
            <components:toolbar id="toolbar" 
                                editMode="false"
                                bean="#{estadoAMBean}"
                                listForm="estadoAMListForm"
                                editForm="estadoAMEditForm"
                                backForm="estadoAMListForm"
                                container="noEditTable:dataTable"
                                header="#{i18n.estadoAM_list_form_table_title}"/>
    
            <!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
            <!-- ++++++++++++++++++++++++++++++++++   TOOLBAR  ++++++++++++++++++++++++++++++++++++++++++++++ -->
            <!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
            <components:noEditTable id="noEditTable"
                                    i18nKey="estadoAM_list_form_table_title"
                                    header="#{i18n.estadoAM_list_form_table_title}"
                                    bean="#{estadoAMBean}"
                                    editForm="estadoAMEditForm"/>
        </ui:define>
    </ui:composition>
    

    Paso #09: EditForm (Una sola columna)

    estadoARREditForm.xhtml

    <!--
    Copyright (c) 2022.
    Centro de Gestion Informatica
    Direccion de Tecnologias de la Informacion y Comunicacion
    Universidad Nacional - Costa Rica
    http://www.una.ac.cr
    -->
    <!-- ******************************************************************************************** -->
    <!-- ******************************************************************************************** -->
    <!-- *****************************   COMPOSICIÓN   ********************************************** -->
    <!-- ******************************************************************************************** -->
    <!-- ******************************************************************************************** -->
    <ui:composition template="/templates/crud.xhtml"
                    xmlns="http://www.w3.org/1999/xhtml"
                    xmlns:f="http://java.sun.com/jsf/core"
                    xmlns:h="http://java.sun.com/jsf/html"
                    xmlns:p="http://primefaces.org/ui"
                    xmlns:ui="http://java.sun.com/jsf/facelets"
                    xmlns:components="http://java.sun.com/jsf/composite/components"
                    xmlns:sdkuna="http://cgi.una.ac.cr/sdkuna"
                    xmlns:una="http://una.ac.cr/ui/components">
    
        <!-- ******************************************************************************************** -->
        <!-- *****************************      PRERENDER     ******************************************* -->
        <!-- ******************************************************************************************** -->
        <ui:define name="preRender">
            <f:event type="preRenderView" listener="#{estadoARRBean.find()}" />
        </ui:define>
    
    
        <!-- ******************************************************************************************** -->
        <!-- *****************************       TITLE        ******************************************* -->
        <!-- ******************************************************************************************** -->
        <ui:define name="title">#{i18n.estadoARR_edit_form_title}</ui:define>
    
        <!-- ******************************************************************************************** -->
        <!-- *****************************       DEFINE       ******************************************* -->
        <!-- ******************************************************************************************** -->
        <ui:define name="contentCRUD">
    
            <!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
            <!-- ++++++++++++++++++++++++++++++++++   TOOLBAR  ++++++++++++++++++++++++++++++++++++++++++++++ -->
            <!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
            <components:toolbar id="toolbar"
                                editMode="true"
                                bean="#{estadoARRBean}"
                                listForm="estadoARRListForm"
                                editForm="estadoARREditForm"
                                container="panelForm"
                                header="#{i18n.estadoARR_edit_form_header}"/>
    
            <!--++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-->
            <!--++++++++++++++++++++++++++++++++++   PANELFORM  ++++++++++++++++++++++++++++++++++++++++++++-->
            <!--++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-->
            <una:panelForm id="panelForm"
                           i18nKey="estadoARR_edit_form_header"
                           binding="#{panelForm}"
                           header="#{i18n.estadoARR_edit_form_header}">
    
                <!-- //////////////////////////////////////////////////////////////////////////////////////// -->
                <!-- /////////////////////////////////    INSTRUCTIONS        /////////////////////////////// -->
                <!-- //////////////////////////////////////////////////////////////////////////////////////// -->
                <components:requiredInstructions focus="panelForm" />
    
                <!-- //////////////////////////////////////////////////////////////////////////////////////// -->
                <!-- /////////////////////////////////    PANELGRID PRINCIPAL   ///////////////////////////// -->
                <!-- //////////////////////////////////////////////////////////////////////////////////////// -->
                <p:panelGrid columns="1"
                             layout="grid"
                             styleClass="una-panelgrid-responsive">
    
                    
                    <!-- **************************************************************************************** -->
                    <!-- ***************************    PANELGRID SECUNDARIO   ********************************** -->
                    <!-- **************************************************************************************** -->
                    <p:panelGrid columns="2"
                                 layout="grid"
                                 styleClass="una-panelgrid-cl1-responsive">
    
                        <!--####################################################################################-->
                        <!--######################            NOMBRE         ###################################-->
                        <!--####################################################################################-->
    
                        <p:outputLabel      id="nombreOutputLabel"
                                            for="nombreInputText"
                                            value="#{i18n.estadoARR_nombre_label}"/>
    
                        <p:outputPanel      id="nombreOutputPanel">
    
                            <p:inputText    id="nombreInputText" 
                                            value="#{estadoARRBean.entity.nombre}"
                                            size="60"
                                            maxlength="60"
                                            required="true"
                                            placeholder="#{i18n.estadoARR_nombre_placeholder}"/>
    
                            <p:message      id="nombreMessage" 
                                            for="nombreInputText" />
                        </p:outputPanel>
    
    
                        <!--####################################################################################-->
                        <!--####################           ACTIVO           ####################################-->
                        <!--####################################################################################-->
    
                        <p:outputLabel      id="activoOutputLabel"
                                            for="activoSelectBooleanCheckbox"
                                            value="#{i18n.estadoARR_activo_label}"/>  
    
                        <p:outputPanel      id="activoOutputPanel">
    
                            <p:selectBooleanCheckbox    id="activoSelectBooleanCheckbox"
                                                        value="#{estadoARRBean.entity.activo}"
                                                        itemLabel="#{i18n.estadoARR_activo_label}"
                                                        required="#{true}">
                            </p:selectBooleanCheckbox>
    
                            <p:message id="activoMessage"
                                        for="activoSelectBooleanCheckbox"/>
                            
                        </p:outputPanel>
    
    
    
                    </p:panelGrid>
                    <!-- **************************************************************************************** -->
                    <!-- ************************   FIN  PANELGRID SECUNDARIO   ********************************* -->
                    <!-- **************************************************************************************** -->
    
                </p:panelGrid>
                <!-- //////////////////////////////////////////////////////////////////////////////////////// -->
                <!-- //////////////////////////////  FIN  PANELGRID PRINCIPAL   ///////////////////////////// -->
                <!-- //////////////////////////////////////////////////////////////////////////////////////// -->
    
            </una:panelForm>
        </ui:define>
    </ui:composition>
    

    estadoAMEditForm.xhtml

    <!--
    Copyright (c) 2022.
    Centro de Gestion Informatica
    Direccion de Tecnologias de la Informacion y Comunicacion
    Universidad Nacional - Costa Rica
    http://www.una.ac.cr
    -->
    <!-- ******************************************************************************************** -->
    <!-- ******************************************************************************************** -->
    <!-- *****************************   COMPOSICIÓN   ********************************************** -->
    <!-- ******************************************************************************************** -->
    <!-- ******************************************************************************************** -->
    <ui:composition template="/templates/crud.xhtml"
                    xmlns="http://www.w3.org/1999/xhtml"
                    xmlns:f="http://java.sun.com/jsf/core"
                    xmlns:h="http://java.sun.com/jsf/html"
                    xmlns:p="http://primefaces.org/ui"
                    xmlns:ui="http://java.sun.com/jsf/facelets"
                    xmlns:components="http://java.sun.com/jsf/composite/components"
                    xmlns:sdkuna="http://cgi.una.ac.cr/sdkuna"
                    xmlns:una="http://una.ac.cr/ui/components">
    
        <!-- ******************************************************************************************** -->
        <!-- *****************************      PRERENDER     ******************************************* -->
        <!-- ******************************************************************************************** -->
        <ui:define name="preRender">
            <f:event type="preRenderView" listener="#{estadoAMBean.find()}" />
        </ui:define>
    
    
        <!-- ******************************************************************************************** -->
        <!-- *****************************       TITLE        ******************************************* -->
        <!-- ******************************************************************************************** -->
        <ui:define name="title">#{i18n.estadoAM_edit_form_title}</ui:define>
    
        <!-- ******************************************************************************************** -->
        <!-- *****************************       DEFINE       ******************************************* -->
        <!-- ******************************************************************************************** -->
        <ui:define name="contentCRUD">
    
            <!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
            <!-- ++++++++++++++++++++++++++++++++++   TOOLBAR  ++++++++++++++++++++++++++++++++++++++++++++++ -->
            <!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
            <components:toolbar id="toolbar"
                                editMode="true"
                                bean="#{estadoAMBean}"
                                listForm="estadoAMListForm"
                                editForm="estadoAMEditForm"
                                container="panelForm"
                                header="#{i18n.estadoAM_edit_form_header}"/>
    
            <!--++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-->
            <!--++++++++++++++++++++++++++++++++++   PANELFORM  ++++++++++++++++++++++++++++++++++++++++++++-->
            <!--++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-->
            <una:panelForm id="panelForm"
                           i18nKey="estadoAM_edit_form_header"
                           binding="#{panelForm}"
                           header="#{i18n.estadoAM_edit_form_header}">
    
                <!-- //////////////////////////////////////////////////////////////////////////////////////// -->
                <!-- /////////////////////////////////    INSTRUCTIONS        /////////////////////////////// -->
                <!-- //////////////////////////////////////////////////////////////////////////////////////// -->
                <components:requiredInstructions focus="panelForm" />
    
                <!-- //////////////////////////////////////////////////////////////////////////////////////// -->
                <!-- /////////////////////////////////    PANELGRID PRINCIPAL   ///////////////////////////// -->
                <!-- //////////////////////////////////////////////////////////////////////////////////////// -->
                <p:panelGrid columns="1"
                             layout="grid"
                             styleClass="una-panelgrid-responsive">
    
                    
                    <!-- **************************************************************************************** -->
                    <!-- ***************************    PANELGRID SECUNDARIO   ********************************** -->
                    <!-- **************************************************************************************** -->
                    <p:panelGrid columns="2"
                                 layout="grid"
                                 styleClass="una-panelgrid-cl1-responsive">
    
                        <!--####################################################################################-->
                        <!--######################            NOMBRE         ###################################-->
                        <!--####################################################################################-->
    
                        <p:outputLabel      id="nombreOutputLabel"
                                            for="nombreInputText"
                                            value="#{i18n.estadoAM_nombre_label}"/>
    
                        <p:outputPanel      id="nombreOutputPanel">
    
                            <p:inputText    id="nombreInputText" 
                                            value="#{estadoAMBean.entity.nombre}"
                                            size="60"
                                            maxlength="60"
                                            required="true"
                                            placeholder="#{i18n.estadoAM_nombre_placeholder}"/>
    
                            <p:message      id="nombreMessage" 
                                            for="nombreInputText" />
                        </p:outputPanel>
    
    
                        <!--####################################################################################-->
                        <!--####################           ACTIVO           ####################################-->
                        <!--####################################################################################-->
    
                        <p:outputLabel      id="activoOutputLabel"
                                            for="activoSelectBooleanCheckbox"
                                            value="#{i18n.estadoAM_activo_label}"/>  
    
                        <p:outputPanel      id="activoOutputPanel">
    
                            <p:selectBooleanCheckbox    id="activoSelectBooleanCheckbox"
                                                        value="#{estadoAMBean.entity.activo}"
                                                        itemLabel="#{i18n.estadoAM_activo_label}"
                                                        required="#{true}">
                            </p:selectBooleanCheckbox>
    
                            <p:message id="activoMessage"
                                        for="activoSelectBooleanCheckbox"/>
                            
                        </p:outputPanel>
    
                        
    
                    </p:panelGrid>
                    <!-- **************************************************************************************** -->
                    <!-- ************************   FIN  PANELGRID SECUNDARIO   ********************************* -->
                    <!-- **************************************************************************************** -->
    
                </p:panelGrid>
                <!-- //////////////////////////////////////////////////////////////////////////////////////// -->
                <!-- //////////////////////////////  FIN  PANELGRID PRINCIPAL   ///////////////////////////// -->
                <!-- //////////////////////////////////////////////////////////////////////////////////////// -->
    
            </una:panelForm>
        </ui:define>
    </ui:composition>
    

    aso #10: Registrar la página en SIGESA

    • Ingresamos a SAS Seguridad y Administración ->SAS Seguridad y Administración ->Lista de recursos
    • Luego ingresamos a Lista de Recursos
    • Nos lista los recursos existentes y le damos nuevo
    • Registramos la paginas con los siguientes datos

    Datos:

    EstadoARR
    Nombre: /pages/estadoARRListForm.xhtml
    Tipo de recurso: Página
    Visible: true
    Secuencia: 1
    Notas: PPI-MCG: Lista de Estados de Actividades de Respuesta al Riesgo
    Estado: Activo
    • Le agregamos los roles de ADMIN y CONSULTA para MCG
    • Agregamos el rol
      • UNA_PPI_MCG_ADMIN
    • Le damos agregar
    • Regresamos
    • Agregamos el rol de consulta
      • UNA_PPI_MCG_CONSULTA
    • Podemos verificar que se agregarón los roles
    • Ahora para que apliquen los cambios le damos guardar
    • Nos muestra el mensaje
    • Ahora para hacer el editar copiamos el registro
    • Nos indica que que el registro se copio
    • Ahora podemos crear el registro del EditForm
    • Verificamos que tenga el rol
    • Si si guardamos
    • Regresamos
    • Y podemos ver todos los nuevos registros
    • Ahora verificamos que tenemos el rol de ADMI
    • Ahora podemos ingresar a la pagina ListForm ya que no se puede ingresar directamente a edit
    http://10.0.100.30:8080/sigesa-webapp/pages/estadoARRListForm.xhtml
    http://10.0.100.30:8080/sigesa-webapp/pages/estadoAMListForm.xhtml
    • Probamos el editar dandole clic al icono de nuevo
    • Nos aparece la ventana y completamos
    • Le damos guardar y nos muestra el mensaje

    Internacionalización

    • Ahora debemos agregar la internacionalización
    • Esto se debe aplicar tanto en desa07 como producción
    • Buscamos en el menú
    lista de internacionalización
    • Le damos nuevo
    • Agregamos los siguientes datos
      • Llave: valor dentro del código fuente
      • Idioma: español
      • Valor: Valor que va a desplegar
    • Y con este proceso agregamos todos los necesarios

    Creación de Menú

    • Para lo que estamos trabajando el menú se ubica en:
    PPI->MCG-> Administración -> Estado
    • Por tanto debemos crearlo tanto en desarrollo como producción
    • Buscamos «Lista de Menú»
    • Y le damos agregar

    • Con los siguientes datos
    Tipo de Menú: Crear menú de un menú padre
    Menú: MCG - Administración
    Nombre: MCG - Estados
    Notas: PPI-MCG: Menú de estados para Mejora Continua de la Gestión
    Estado: Activo
    Secuencia: 1
    • Con esto creamos la opción de menú padre
    • ahora vamos a crear los hijos
    • Le damos Nuevo

    • Creamos un menú para estados AM con los siguientes datos
    Tipo de Menú: Crear menú de un menú padre
    Menú: MCG - Estados
    Recurso: /pages/estadoAMListForm.xhtml
    Nombre: Lista de Estados de Actividades de Mejora
    Notas: PPI-MCG: Lista de Estados de Actividades de Mejora
    Estado: Activo
    Secuencia:1
    • Creamos otro menú para estados ARR con los siguientes datos
    Tipo de Menú: Crear menú de un menú padre
    Menú: MCG - Estados
    Recurso: /pages/estadoARRListForm.xhtml
    Nombre: Lista de Estados de Actividades de Respuesta al Riesgo
    Notas: PPI-MCG: Lista de Estados de Actividades de Respuesta al Riesgo
    Estado: Activo
    Secuencia:2