Files
oper/DB/PACKAGE_BODIES/PKG_SICD_JIRA.sql

173 lines
6.3 KiB
MySQL
Raw Normal View History

2023-06-08 11:55:59 -03:00
--------------------------------------------------------
-- DDL for Package Body PKG_SICD_JIRA
--------------------------------------------------------
CREATE OR REPLACE EDITIONABLE PACKAGE BODY "ENVX_OPER"."PKG_SICD_JIRA" AS
/*--------------- PRC1-------------------*/
PROCEDURE jira_search (
username IN VARCHAR,
pass IN VARCHAR,
jql IN VARCHAR,
resp OUT CLOB
) AS
--l_clob CLOB;
--request_clob CLOB;
BEGIN
---
log_program_name := 'pkg_sicd_jira.jira_search(PRC1)';
---
-- TODO: Implementation required for PROCEDURE PKG_SICD_JIRA.JIRA_SEARCH
--request_clob := '{ "expand": ["names"],"jql": "project=ITDES AND assignee=vatrox04","startAt": 0,"maxResults": 20,"fields": ["id","key","summary","assignee","status"]}';
-- Es necesario fijar esto para que funcione
apex_web_service.g_request_headers(1).name := 'Content-Type';
apex_web_service.g_request_headers(1).value := 'application/json;charset=UTF-8';
-- Invocar al API de JIRA con los parametros suministrados.
resp := apex_web_service.make_rest_request(
p_url => 'http://jira.caja.com:20000/rest/api/2/search',
p_http_method => 'POST',
p_body => to_clob(jql),
p_username => username,
p_password => pass
);
-- Capturar excepciones
/*
l_clob := apex_web_service.make_rest_request(
p_url => 'http://jira.caja.com:20000/rest/api/2/search',
p_http_method => 'POST',
p_body => request_clob,
p_username => 'ldapsed',
p_password => 'LDAPSEDsistemas20caracteres');*/
EXCEPTION
WHEN OTHERS THEN
------------------------------------------------------------------
log_collector(
pi_program_name => log_program_name,
pi_log_level => 2, --- WARNING
pi_log_message => 'ERROR: ' || sqlerrm
);
------------------------------------------------------------------
END jira_search;
/*--------------- PRC2-------------------*/
PROCEDURE jira_search (
username IN VARCHAR DEFAULT NULL,
pass IN VARCHAR DEFAULT NULL,
project_type IN VARCHAR,
assignee IN VARCHAR,
summary IN VARCHAR,
ticket_key IN VARCHAR,
ticket_status IN VARCHAR,
files_returned IN NUMBER DEFAULT 20,
p_mensaje OUT VARCHAR,
p_error OUT VARCHAR
) AS
criteriobusqueda VARCHAR2(4000);
responseclob CLOB;
p_username VARCHAR2(50);
p_password VARCHAR2(200);
BEGIN
---
log_program_name := 'pkg_sicd_jira.jira_search(PRC2)';
---
-- Control de parametros de autenticacion.
IF username IS NULL OR pass IS NULL THEN
p_username := pkg_sicd_commons.get_parameter_value('JIRA_USERNAME'); --
p_password := pkg_sicd_commons.get_parameter_value('JIRA_PASSWORD');
--jira.user ldapsed
--jira.password LDAPSEDsistemas20caracteres
END IF;
-- Controlar el Tipo de Proyecto no sea Nulo
IF project_type IS NULL THEN
raise_application_error(-20000, 'Tipo de Proyecto deben ser indicado');
END IF;
-- Armar el criterio de busqueda
criteriobusqueda := '{ "expand": ["names"],"jql": "project='
|| project_type
||
CASE
WHEN
length(assignee) > 0 THEN
' AND assignee=' || assignee
END
||
CASE
WHEN
length(ticket_key) > 0 THEN
' AND key='
|| project_type
|| '-'
|| ticket_key
END
||
CASE
WHEN
length(ticket_status) > 0 THEN
' AND status =' || ticket_status
END
||
CASE
WHEN
length(summary) > 0 THEN
' AND summary~'''
|| summary
|| ''''
END
|| '","startAt": 0,"maxResults":'
|| files_returned
|| ',"fields": ["id","key","summary","assignee","status"]}';
--dbms_output.put_line(criteriobusqueda);
jira_search(p_username, p_password, criteriobusqueda, responseclob);
DELETE FROM tmp_reference_list;
INSERT INTO tmp_reference_list (
id_reference,
reference_description,
reference_user,
reference_status
)
SELECT e.*
FROM
JSON_TABLE ( responseclob, '$.issues[*]'
COLUMNS (
key VARCHAR2 ( 200 ) PATH '$.key',
summary VARCHAR2 ( 200 ) PATH '$.fields.summary',
displayname VARCHAR2 ( 200 ) PATH '$.fields.assignee.displayName',
status VARCHAR2 ( 200 ) PATH '$.fields.status.name'
)
)
e;
EXCEPTION
WHEN OTHERS THEN
------------------------------------------------------------------
log_collector(
pi_program_name => log_program_name,
pi_log_level => 2, --- WARNING
pi_log_message => 'ERROR: ' || sqlerrm
);
------------------------------------------------------------------
END jira_search;
END pkg_sicd_jira;
/
GRANT EXECUTE ON "ENVX_OPER"."PKG_SICD_JIRA" TO "APEX_REST_PUBLIC_USER";
GRANT DEBUG ON "ENVX_OPER"."PKG_SICD_JIRA" TO "APEX_REST_PUBLIC_USER";