From eb8c969db2748531b148e777b8e3c3a78d4a7d0e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Laurent=20L=C3=A9cluse?= <laurent.lecluse@unicaen.fr> Date: Tue, 10 May 2016 13:19:57 +0000 Subject: [PATCH] =?UTF-8?q?Ajout=20du=20script=20d'initialisation=20dans?= =?UTF-8?q?=20le=20r=C3=A9pertoire=20data?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- data/module.sql | 114 ++++++++++++++++++ src/UnicaenImport/Service/AbstractService.php | 2 +- 2 files changed, 115 insertions(+), 1 deletion(-) create mode 100644 data/module.sql diff --git a/data/module.sql b/data/module.sql new file mode 100644 index 0000000..0b41f55 --- /dev/null +++ b/data/module.sql @@ -0,0 +1,114 @@ +CREATE TABLE SYNC_LOG +( + ID NUMBER(*, 0) NOT NULL +, DATE_SYNC TIMESTAMP(6) NOT NULL +, MESSAGE CLOB NOT NULL +, TABLE_NAME VARCHAR2(30 CHAR) +, SOURCE_CODE VARCHAR2(200 CHAR) +, CONSTRAINT SYNC_LOG_PK PRIMARY KEY (ID) + USING INDEX (CREATE UNIQUE INDEX SYNC_LOG_PK ON SYNC_LOG (ID ASC)) ENABLE +); + +/ + +create or replace PACKAGE UNICAEN_IMPORT AS + + PROCEDURE set_current_user(p_current_user IN INTEGER); + FUNCTION get_current_user return INTEGER; + + FUNCTION get_current_annee RETURN INTEGER; + PROCEDURE set_current_annee (p_current_annee INTEGER); + + FUNCTION get_sql_criterion( table_name varchar2, sql_criterion VARCHAR2 ) RETURN CLOB; + PROCEDURE SYNC_LOG( message CLOB, table_name VARCHAR2 DEFAULT NULL, source_code VARCHAR2 DEFAULT NULL ); + + -- AUTOMATIC GENERATION -- + + -- END OF AUTOMATIC GENERATION -- +END UNICAEN_IMPORT; + +/ + +create or replace PACKAGE BODY UNICAEN_IMPORT AS + + v_current_user INTEGER; + v_current_annee INTEGER; + + + + FUNCTION get_current_user RETURN INTEGER IS + BEGIN + IF v_current_user IS NULL THEN + v_current_user := NULL; -- A remplacer par l'utilisateur (ID de la table USER) qui sera le créateur ou le modificateur des données + END IF; + RETURN v_current_user; + END get_current_user; + + PROCEDURE set_current_user (p_current_user INTEGER) is + BEGIN + v_current_user := p_current_user; + END set_current_user; + + + + FUNCTION get_current_annee RETURN INTEGER IS + BEGIN + IF v_current_annee IS NULL THEN + v_current_annee := NULL; -- A remplacer par l'année d'import souhaitée (si vous avez de l'annualisation de prévue dans votre BDD) + END IF; + RETURN v_current_annee; + END get_current_annee; + + PROCEDURE set_current_annee (p_current_annee INTEGER) IS + BEGIN + v_current_annee := p_current_annee; + END set_current_annee; + + + + FUNCTION get_sql_criterion( table_name varchar2, sql_criterion VARCHAR2 ) RETURN CLOB IS + BEGIN + IF sql_criterion <> '' OR sql_criterion IS NOT NULL THEN + RETURN sql_criterion; + END IF; + RETURN ''; + /* Exemple d'usage : + + RETURN CASE table_name + WHEN 'INTERVENANT' THEN -- Met à jour toutes les données sauf le statut, qui sera traité à part + 'WHERE IMPORT_ACTION IN (''delete'',''update'',''undelete'')' + + WHEN 'AFFECTATION_RECHERCHE' THEN + 'WHERE INTERVENANT_ID IS NOT NULL' + + WHEN 'ADRESSE_INTERVENANT' THEN + 'WHERE INTERVENANT_ID IS NOT NULL' + + WHEN 'ELEMENT_TAUX_REGIMES' THEN + 'WHERE IMPORT_ACTION IN (''delete'',''insert'',''undelete'')' + + ELSE + '' + END;*/ + END; + + + + PROCEDURE SYNC_LOG( message CLOB, table_name VARCHAR2 DEFAULT NULL, source_code VARCHAR2 DEFAULT NULL ) IS + BEGIN + INSERT INTO OSE.SYNC_LOG("ID","DATE_SYNC","MESSAGE","TABLE_NAME","SOURCE_CODE") VALUES (SYNC_LOG_ID_SEQ.NEXTVAL, SYSDATE, message,table_name,source_code); + END SYNC_LOG; + + + + FUNCTION IN_COLUMN_LIST( VALEUR VARCHAR2, CHAMPS CLOB ) RETURN NUMERIC IS + BEGIN + IF REGEXP_LIKE(CHAMPS, '(^|,)[ \t\r\n\v\f]*' || VALEUR || '[ \t\r\n\v\f]*(,|$)') THEN RETURN 1; END IF; + RETURN 0; + END; + + + -- AUTOMATIC GENERATION -- + + -- END OF AUTOMATIC GENERATION -- +END UNICAEN_IMPORT; \ No newline at end of file diff --git a/src/UnicaenImport/Service/AbstractService.php b/src/UnicaenImport/Service/AbstractService.php index 50c13ac..d03305a 100644 --- a/src/UnicaenImport/Service/AbstractService.php +++ b/src/UnicaenImport/Service/AbstractService.php @@ -68,7 +68,7 @@ class AbstractService implements ServiceLocatorAwareInterface, EntityManagerAwar case 'double': return (string)$value; case 'array': - return '(' . implode(',', array_map('Import\Service\Service::escape', $value)) . ')'; + return '(' . implode(',', array_map(__class__.'::escape', $value)) . ')'; } throw new Exception('La valeur transmise ne peut pas être convertie en SQL'); } -- GitLab