Para este caso vamos a crear el manteniento de la siguientes tablas
Tabla:
ESTADO_ARR
Nombre
Tipo de dato
ID_ESTADO_ARR
NUMBER (19) NOT NULL
NOMBRE
VARCHAR2(255) NOT NULL
ACTIVO
NUMBER (1) NOT NULL
Tabla:
ESTADO_AM
Nombre
Tipo de dato
ID_ESTADO_AM
NUMBER (19) NOT NULL
NOMBRE
VARCHAR2(255) NOT NULL
ACTIVO
NUMBER (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
Nombre
Tipo de Datos
FECHA_CREACION
DATE NOT NULL ,
USUARIO_CREACION
NUMBER (19) NOT NULL
FECHA_MODIFICACION
DATE NOT NULL
USUARIO_MODIFICACION
NUMBER (19) NOT NULL
CAMPO_CONFIGURABLE
NUMBER (19) NOT NULL
VERSION
NUMBER (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),
/********************************************************/
/********************************************************/
/* 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);
}
}
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
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