Commit a37ec773 authored by Bertrand Gauthier's avatar Bertrand Gauthier
Browse files

Support de la plateforme Oracle + Mécanisme d'observation de la synchro...

Support de la plateforme Oracle + Mécanisme d'observation de la synchro (ImportObserv et ImportObservResult)
parent a7a28236
Loading
Loading
Loading
Loading
+271 −277

File changed.

Preview size limit exceeded, changes collapsed.

+1 −0
Original line number Diff line number Diff line
@@ -10,6 +10,7 @@
    ],
    "require":      {
        "php":               "7.3.*",
        "ext-pdo":           "*",
        "unicaen/app":       "^3.0",
        "doctrine/dbal":     "^2.9",
        "beberlei/assert":   "^2.7",
+39 −0
Original line number Diff line number Diff line
@@ -2,9 +2,20 @@

namespace UnicaenDbImport;

use Doctrine\ORM\Mapping\Driver\XmlDriver;
use Doctrine\Persistence\Mapping\Driver\MappingDriverChain;
use UnicaenDbImport\CodeGenerator\HelperAbstractFactory;
use UnicaenDbImport\Config\Config;
use UnicaenDbImport\Config\ConfigFactory;
use UnicaenDbImport\Controller\ConsoleControllerFactory;
use UnicaenDbImport\Entity\Db\ImportObserv;
use UnicaenDbImport\Entity\Db\ImportObservResult;
use UnicaenDbImport\Entity\Db\Service\ImportLog\ImportLogService;
use UnicaenDbImport\Entity\Db\Service\ImportLog\ImportLogServiceFactory;
use UnicaenDbImport\Entity\Db\Service\ImportObserv\ImportObservService;
use UnicaenDbImport\Entity\Db\Service\ImportObserv\ImportObservServiceFactory;
use UnicaenDbImport\Entity\Db\Service\ImportObservResult\ImportObservResultService;
use UnicaenDbImport\Entity\Db\Service\ImportObservResult\ImportObservResultServiceFactory;
use UnicaenDbImport\Service\ApiService;
use UnicaenDbImport\Service\ApiServiceFactory;
use UnicaenDbImport\Service\CodeGeneratorPluginManager;
@@ -20,6 +31,9 @@ use UnicaenDbImport\Service\SynchroServiceFactory;

return [
    'import' => [
        'import_observ_entity_class' => ImportObserv::class,
        'import_observ_result_entity_class' => ImportObservResult::class,

        'connections' => [],
        'code_generators_mapping' => [],
        'code_generators_factories' => [],
@@ -27,6 +41,24 @@ return [
        'synchros' => [],
    ],

    'doctrine'     => [
        'driver'     => [
            'orm_default'        => [
                'class'   => MappingDriverChain::class,
                'drivers' => [
                    'UnicaenDbImport\Entity\Db' => 'db_import_orm_default_xml_driver',
                ],
            ],
            'db_import_orm_default_xml_driver' => [
                'class' => XmlDriver::class,
                'cache' => 'array',
                'paths' => [
                    __DIR__ . '/../src/UnicaenDbImport/Entity/Db/Mapping',
                ],
            ],
        ],
    ],

    'console' => [
        'router' => [
            'routes' => [
@@ -69,6 +101,13 @@ return [
            DatabaseService::class => DatabaseServiceFactory::class,
            ApiService::class => ApiServiceFactory::class,
            CodeGeneratorPluginManager::class => CodeGeneratorPluginManagerFactory::class,

            ImportLogService::class => ImportLogServiceFactory::class,
            ImportObservService::class => ImportObservServiceFactory::class,
            ImportObservResultService::class => ImportObservResultServiceFactory::class,
        ],
        'abstract_factories' => [
            HelperAbstractFactory::class,
        ],
    ],
];
+24 −0
Original line number Diff line number Diff line
<?php

namespace UnicaenDbImport;

use Doctrine\DBAL\Platforms\OraclePlatform;
use UnicaenDbImport\CodeGenerator\Oracle\CodeGenerator;
use UnicaenDbImport\CodeGenerator\Oracle\CodeGeneratorFactory;

return [
    'import' => [
        /**
         * @see Config::getCodeGeneratorsMappingConfig()
         */
        'code_generators_mapping' => [
            OraclePlatform::class => CodeGenerator::class,
        ],
        /**
         * @see Config::getCodeGeneratorsFactoriesConfig()
         */
        'code_generators_factories' => [
            CodeGenerator::class => CodeGeneratorFactory::class,
        ],
    ],
];
+46 −14
Original line number Diff line number Diff line
@@ -11,6 +11,37 @@ return [
            // Cf. `./unicaen-db-import.local.php.dist`
        ],

        //
        // Alias éventuels des noms de colonnes d'historique.
        //
        'histo_columns_aliases' => [
            'created_on' => 'HISTO_CREATION',     // date/heure de création de l'enregistrement
            'updated_on' => 'HISTO_MODIFICATION', // date/heure de modification
            'deleted_on' => 'HISTO_DESTRUCTION',  // date/heure de suppression
            'created_by' => 'HISTO_CREATEUR_ID',     // auteur de la création de l'enregistrement
            'updated_by' => 'HISTO_MODIFICATEUR_ID', // auteur de la modification
            'deleted_by' => 'HISTO_DESTRUCTEUR_ID',  // auteur de la suppression
        ],

        //
        // Forçage éventuel de valeur pour les colonnes d'historique.
        //
        'histo_columns_values' => [
            'created_by' => 1, // auteur de la création de l'enregistrement
            'updated_by' => 1, // auteur de la modification
            'deleted_by' => 1, // auteur de la suppression
        ],

        //
        // Témoin indiquant si la table IMPORT_OBSERV doit être prise en compte.
        // La table IMPORT_OBSERV permet d'inscrire les changements de valeurs à détecter pendant la synchro.
        // Les changements détectés sont consignés dans la table IMPORT_OBSERV_RESULT.
        //
        'use_import_observ' => false,

        //
        // Imports.
        //
        'imports' => [
            [
                //
@@ -49,6 +80,12 @@ return [
                    'connection'         => 'default',
                    'source_code_column' => 'CODE',
                    //
                    // Forçage éventuel du nom de la séquence permettant de générer les valeurs dans la colonne ID (clé primaire).
                    // En l'absence de forçage, aucune séquence ne sera utilisée et la colonne devra avoir un type auto-incrémenté
                    // pour que l'insertion de données fonctionne.
                    //
                    'id_sequence' => 'region_id_seq',
                    //
                    // Forçage éventuel du nom de la table où seront inscrits les logs (créée automatiquement si nécessaire).
                    // En l'absence de ce forçage, le nom de la table sera 'import_log'.
                    //
@@ -89,28 +126,23 @@ return [
                    'connection'         => 'default',
                    'source_code_column' => 'COD_PAY',
                    //
                    // Forçage éventuel du nom de la séquence permettant de générer les valeurs dans la colonne ID (clé primaire).
                    // En l'absence de forçage, aucune séquence ne sera utilisée et la colonne devra avoir un type auto-incrémenté
                    // pour que l'insertion de données fonctionne.
                    //
                    'id_sequence' => 'MES_PAYS_TEMPORAIRES_ID_SEQ',
                    //
                    // Forçage éventuel du nom de la table où seront inscrits les logs (créée automatiquement si nécessaire).
                    // En l'absence de ce forçage, le nom de la table sera 'import_log'.
                    //
                    'log_table' => 'import_log',
                    //
                    // Forçage éventuel du nom de la table intermédiaire utilisée lorsque source et destination
                    // ne partagent pas la même connexion. NB: cette table intermédiaire est créée/peuplée/supprimée
                    // dans la base de données destination à chaque import.
                    // En l'absence de ce forçage, le nom de la table intermédiaire sera celui de la table destination
                    // préfixé par "tmp_".
                    //
                    'intermediate_table' => 'tmp_pays',
                    //
                    // Suppression automatique des éventuelles tables intermédiaires "tmp_" au début de l'import.
                    // Si la suppression automatique est désactivée, l'existence d'une table intermédiaire au démarrage
                    // d'un import fera échouer l'import.
                    //
                    'intermediate_table_auto_drop' => true,
                ],
            ],
        ],

        //
        // Synchros.
        //
        'synchros' => [
            [
                //
Loading