diff --git a/data/module.sql b/data/module.sql new file mode 100644 index 0000000000000000000000000000000000000000..0b41f552233b46f9d1891ae25d13837c4bfd9bf3 --- /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 50c13ac6e94ea6cf2e7bedc1a0ac44c3daa805c3..d03305a414a5715c04c31917baef5ce2ec5fb540 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'); }