Commit 270d02c8 authored by Bertrand Gauthier's avatar Bertrand Gauthier
Browse files

Déplacement, corrections de la config de l'import/synchro HAL

parent 03360a2d
Loading
Loading
Loading
Loading
+0 −199
Original line number Diff line number Diff line
@@ -2,16 +2,8 @@

namespace Application;

use Application\Entity\Db\Source;
use Application\Navigation\NavigationFactoryFactory;
use Import\Model\ImportObserv;
use Import\Model\ImportObservResult;
use Portfolio\Import\Extractor\HalResponseDataExtractor;
use Portfolio\Service\PublicationSelectProvider;
use Retraitement\Filter\Command\RetraitementShellCommandMines;
use UnicaenDbImport\Filter\ColumnValue\ArrayToStringColumnValueFilter;
use UnicaenDbImport\Filter\ColumnValue\ConcatColumnValueFilter;
use UnicaenDbImport\Filter\ColumnValue\SameColumnValueFilter;

$config = [
    'api-tools-content-negotiation' => [
@@ -96,197 +88,6 @@ $config = [
            ],
        ],
    ],
    'import' => [

        'import_observ_entity_class' => ImportObserv::class,
        'import_observ_result_entity_class' => ImportObservResult::class,

        'connections' => [
            // Cf. config locale
        ],

        //
        // Classe de l'entité Doctrine représentant une "Source".
        //
        'source_entity_class' => Source::class,

        //
        // Code de la Source par défaut (injectée dans les entités implémentant SoucreAwareInterface).
        //
        'default_source_code' => 'SYGAL::sygal',

        //
        // 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' => true,

        //
        // Imports.
        //
        'imports' => [
            [
                'name' => 'domaine-hal',
                'order' => 160,
                'source' => [
                    'name' => 'HAL',
                    'connection' => 'api-archives-ouvertes',
                    'select' => '/ref/domain/?q=*:*&wt=json&fl=*&rows=500',
                    'code' => 'HAL',
                    'columns' => [
                        'docid',
                        'code_s',
                        'haveNext_bool',
                        'en_domain_s',
                        'fr_domain_s',
                        'level_i',
                        'parent_i',
                    ],
                    'column_name_filter' => [
                        'docid' => 'docid',
                        'haveNext_bool' => 'havenext_bool',
                        'code_s' => 'source_code',
                        'en_domain_s' => 'en_domain_s',
                        'fr_domain_s' => 'fr_domain_s',
                        'level_i' => 'level_i',
                        'parent_i' => 'parent_id'
                    ],
                    'source_code_column' => 'source_code',
                    'request_options' => [
                        'debug' => true,
                    ],
                ],
                'destination' => [
                    'name' => 'application',
                    'table' => 'tmp_domaine_hal',
                    'connection' => 'default',
                    'source_code_column' => 'source_code',
                    'id_strategy' => null,
                    'id_sequence' => null,
                ],
            ],
            [
                'name' => 'publications-hal',
                'order' => 170,
                'source' => [
                    'name' => 'PUBLICATIONS_HAL',
                    'connection' => 'api-archives-ouvertes',
                    'select' => PublicationSelectProvider::class,
                    'code' => 'PUBLICATIONS_HAL',
                    'data_extractor' => HalResponseDataExtractor::class,
                    'columns' => [
                        'title_s',
                        'authFullName_s',
                        'authIdHal_i',
                        'publicationDate_s',
                        'docType_s',
                        'publisher_s',
                        'halId_s',
                        'uri_s',
                        'individu_hal_id', // ajouté dynamiquement, cf. PublicationSelectProvider
                    ],
                    'column_name_filter' => [
                        'title_s' => 'title_s',
                        'authFullName_s' => 'auth_full_name_s',
                        'authIdHal_i' => 'auth_id_hal_i',
                        'publicationDate_s' => 'publication_date_s',
                        'docType_s' => 'doc_type_s',
                        'publisher_s' => 'publisher_s',
                        'halId_s' => 'source_code',
                    ],
                    'column_value_filter' => [
                        ['name' => ArrayToStringColumnValueFilter::class, 'params' => ['column' => 'authFullName_s']],
                        ['name' => ArrayToStringColumnValueFilter::class, 'params' => ['column' => 'authIdHal_i']],
                        ['name' => ArrayToStringColumnValueFilter::class, 'params' => ['column' => 'title_s']],
                        ['name' => ArrayToStringColumnValueFilter::class, 'params' => ['column' => 'publisher_s']],
                    ],
                    'source_code_column' => 'source_code',
                    'request_options' => [
                        'debug' => true,
                    ],
                ],
                'destination' => [
                    'name' => 'application',
                    'table' => 'tmp_publication_hal',
                    'connection' => 'default',
                    'source_code_column' => 'source_code',
                    'id_strategy' => null,
                    'id_sequence' => null,
                ],
            ]
        ],

        //
        // Synchros.
        //
        'synchros' => [
            // <==== la config des synchros sera injectée ici
            ////////////////////////////////////////////// DOMAINES HAL //////////////////////////////////////////////
            [
                'name' => 'domaine-hal',
                'order' => 160,
                'source' => [
                    'name' => 'sygal',
                    'code' => 'app',
                    'table' => 'src_domaine_hal',
                    'connection' => 'default',
                    'source_code_column' => 'source_code',
                ],
                'destination' => [
                    'name' => 'application',
                    'table' => 'domaine_hal',
                    'connection' => 'default',
                    'source_code_column' => 'source_code',
                    'id_strategy' => 'SEQUENCE',
                    'id_sequence' => null,
                    'where' => NULL,
                ],
            ],
            [
                'name' => 'publications-hal',
                'order' => 170,
                'source' => [
                    'name' => 'sygal',
                    'code' => 'app',
                    'table' => 'src_publication_hal',
                    'connection' => 'default',
                    'source_code_column' => 'source_code',
                ],
                'destination' => [
                    'name' => 'application',
                    'table' => 'publication_hal',
                    'connection' => 'default',
                    'source_code_column' => 'source_code',
                    'id_strategy' => 'SEQUENCE',
                    'id_sequence' => null,
                    'where' => NULL,
                ],
            ],
        ],
    ],
    // Options pour le service de notification par mail
    'notification' => [
        // préfixe à ajouter systématiquement devant le sujet des mails
+1 −1
Original line number Diff line number Diff line
@@ -33,7 +33,7 @@ return [

            // Connexion à l'API Archives ouvertes (https://api.archives-ouvertes.fr/docs) pour l'import des domaines HAL.
            'api-archives-ouvertes' => [
                'url' => 'https://api.archives-ouvertes.fr/ref',
                'url' => 'https://api.archives-ouvertes.fr',
                'connect_timeout' => 10,
            ],
        ],
+93 −0
Original line number Diff line number Diff line
@@ -15,8 +15,11 @@ use Import\Model\Service\ImportObservResultServiceFactory;
use Import\Service\Factory\ImportServiceFactory;
use Import\Service\ImportService;
use Laminas\Router\Http\Segment;
use Portfolio\Import\Extractor\HalResponseDataExtractor;
use Portfolio\Service\PublicationSelectProvider;
use Unicaen\Console\Router\Simple;
use UnicaenDbImport\Domain\PluginManager\ImportPluginManager;
use UnicaenDbImport\Filter\ColumnValue\ArrayToStringColumnValueFilter;
use UnicaenPrivilege\Guard\PrivilegeController;

return [
@@ -750,6 +753,96 @@ return [
                    'table' => 'tmp_variable',
                ],
            ],

            [
                'name' => 'domaine-hal',
                'order' => 160,
                'source' => [
                    'name' => 'HAL',
                    'connection' => 'api-archives-ouvertes',
                    'select' => '/ref/domain/?q=*:*&wt=json&fl=*&rows=500',
                    'code' => 'HAL',
                    'columns' => [
                        'docid',
                        'code_s',
                        'haveNext_bool',
                        'en_domain_s',
                        'fr_domain_s',
                        'level_i',
                        'parent_i',
                    ],
                    'column_name_filter' => [
                        'docid' => 'docid',
                        'haveNext_bool' => 'havenext_bool',
                        'code_s' => 'source_code',
                        'en_domain_s' => 'en_domain_s',
                        'fr_domain_s' => 'fr_domain_s',
                        'level_i' => 'level_i',
                        'parent_i' => 'parent_id'
                    ],
                    'source_code_column' => 'source_code',
                    'request_options' => [
                        'debug' => true,
                    ],
                ],
                'destination' => [
                    'name' => 'application',
                    'table' => 'tmp_domaine_hal',
                    'connection' => 'default',
                    'source_code_column' => 'source_code',
                    'id_strategy' => null,
                    'id_sequence' => null,
                ],
            ],
            [
                'name' => 'publications-hal',
                'order' => 170,
                'source' => [
                    'name' => 'PUBLICATIONS_HAL',
                    'connection' => 'api-archives-ouvertes',
                    'select' => PublicationSelectProvider::class,
                    'code' => 'PUBLICATIONS_HAL',
                    'data_extractor' => HalResponseDataExtractor::class,
                    'columns' => [
                        'title_s',
                        'authFullName_s',
                        'authIdHal_i',
                        'publicationDate_s',
                        'docType_s',
                        'publisher_s',
                        'halId_s',
                        'uri_s',
                        'individu_hal_id', // ajouté dynamiquement, cf. PublicationSelectProvider
                    ],
                    'column_name_filter' => [
                        'title_s' => 'title_s',
                        'authFullName_s' => 'auth_full_name_s',
                        'authIdHal_i' => 'auth_id_hal_i',
                        'publicationDate_s' => 'publication_date_s',
                        'docType_s' => 'doc_type_s',
                        'publisher_s' => 'publisher_s',
                        'halId_s' => 'source_code',
                    ],
                    'column_value_filter' => [
                        ['name' => ArrayToStringColumnValueFilter::class, 'params' => ['column' => 'authFullName_s']],
                        ['name' => ArrayToStringColumnValueFilter::class, 'params' => ['column' => 'authIdHal_i']],
                        ['name' => ArrayToStringColumnValueFilter::class, 'params' => ['column' => 'title_s']],
                        ['name' => ArrayToStringColumnValueFilter::class, 'params' => ['column' => 'publisher_s']],
                    ],
                    'source_code_column' => 'source_code',
                    'request_options' => [
                        'debug' => true,
                    ],
                ],
                'destination' => [
                    'name' => 'application',
                    'table' => 'tmp_publication_hal',
                    'connection' => 'default',
                    'source_code_column' => 'source_code',
                    'id_strategy' => null,
                    'id_sequence' => null,
                ],
            ]
        ],
    ],

+0 −74
Original line number Diff line number Diff line
@@ -55,80 +55,6 @@ return [
        // Les changements détectés sont consignés dans la table IMPORT_OBSERV_RESULT.
        //
        'use_import_observ' => true,

        //
        // Imports.
        //
        'imports' => [
            [
                'name' => 'domaine-hal',
                'order' => 160,
                'source' => [
                    'name' => 'HAL',
                    'connection' => 'api-archives-ouvertes',
                    'select' => '/domain/?q=*:*&wt=json&fl=*&rows=500',
                    'code' => 'HAL',
                    'columns' => [
                        'docid',
                        'code_s',
                        'haveNext_bool',
                        'en_domain_s',
                        'fr_domain_s',
                        'level_i',
                        'parent_i',
                    ],
                    'column_name_filter' => [
                        'docid' => 'docid',
                        'haveNext_bool' => 'havenext_bool',
                        'code_s' => 'source_code',
                        'en_domain_s' => 'en_domain_s',
                        'fr_domain_s' => 'fr_domain_s',
                        'level_i' => 'level_i',
                        'parent_i' => 'parent_id'
                    ],
                    'source_code_column' => 'source_code',
                    'request_options' => [
                        'debug' => true,
                    ],
                ],
                'destination' => [
                    'name' => 'application',
                    'table' => 'tmp_domaine_hal',
                    'connection' => 'default',
                    'source_code_column' => 'source_code',
                    'id_strategy' => null,
                    'id_sequence' => null,
                ],
            ]
        ],

        //
        // Synchros.
        //
        'synchros' => [
            // <==== la config des synchros sera injectée ici
            ////////////////////////////////////////////// DOMAINES HAL //////////////////////////////////////////////
            [
                'name' => 'domaine-hal',
                'order' => 160,
                'source' => [
                    'name' => 'sygal',
                    'code' => 'app',
                    'table' => 'src_domaine_hal',
                    'connection' => 'default',
                    'source_code_column' => 'source_code',
                ],
                'destination' => [
                    'name' => 'application',
                    'table' => 'domaine_hal',
                    'connection' => 'default',
                    'source_code_column' => 'source_code',
                    'id_strategy' => 'SEQUENCE',
                    'id_sequence' => null,
                    'where' => NULL,
                ],
            ],
        ],
    ],

    'navigation' => [
+41 −0
Original line number Diff line number Diff line
@@ -244,6 +244,47 @@ return [
                    'table' => 'variable',
                ],
            ],

            [
                'name' => 'domaine-hal',
                'order' => 160,
                'source' => [
                    'name' => 'sygal',
                    'code' => 'app',
                    'table' => 'src_domaine_hal',
                    'connection' => 'default',
                    'source_code_column' => 'source_code',
                ],
                'destination' => [
                    'name' => 'application',
                    'table' => 'domaine_hal',
                    'connection' => 'default',
                    'source_code_column' => 'source_code',
                    'id_strategy' => 'SEQUENCE',
                    'id_sequence' => null,
                    'where' => NULL,
                ],
            ],
            [
                'name' => 'publications-hal',
                'order' => 170,
                'source' => [
                    'name' => 'sygal',
                    'code' => 'app',
                    'table' => 'src_publication_hal',
                    'connection' => 'default',
                    'source_code_column' => 'source_code',
                ],
                'destination' => [
                    'name' => 'application',
                    'table' => 'publication_hal',
                    'connection' => 'default',
                    'source_code_column' => 'source_code',
                    'id_strategy' => 'SEQUENCE',
                    'id_sequence' => null,
                    'where' => NULL,
                ],
            ],
        ],
    ],