Commit 1fb5ba26 authored by Bertrand Gauthier's avatar Bertrand Gauthier
Browse files

Implémentation de la Source et listener Doctrine injectant la Source par défaut si besoin

parent 4f3a1b01
Loading
Loading
Loading
Loading
+23 −0
Original line number Diff line number Diff line
@@ -16,6 +16,11 @@ 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\Entity\Db\Service\Source\SourceService;
use UnicaenDbImport\Entity\Db\Service\Source\SourceServiceFactory;
use UnicaenDbImport\Entity\Db\Source;
use UnicaenDbImport\ORM\Event\Listeners\SourceListener;
use UnicaenDbImport\ORM\Event\Listeners\SourceListenerFactory;
use UnicaenDbImport\Service\ApiService;
use UnicaenDbImport\Service\ApiServiceFactory;
use UnicaenDbImport\Service\CodeGeneratorPluginManager;
@@ -31,6 +36,9 @@ use UnicaenDbImport\Service\SynchroServiceFactory;

return [
    'import' => [
        'source_entity_class' => Source::class,
        'default_source_code' => 'app',

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

@@ -41,6 +49,9 @@ return [
        'synchros' => [],
    ],

    'UnicaenDbImport.Entity.Db.Source.dcm.xml',
    'UnicaenDbImport.Entity.Db.Source.dcm.xml',

    'doctrine'     => [
        'driver'     => [
            'orm_default'        => [
@@ -57,6 +68,13 @@ return [
                ],
            ],
        ],
        'eventmanager' => [
            'orm_default' => [
                'subscribers' => [
                    SourceListener::class,
                ],
            ],
        ],
    ],

    'console' => [
@@ -95,16 +113,21 @@ return [
    'service_manager' => [
        'factories' => [
            Config::class => ConfigFactory::class,

            ImportService::class => ImportServiceFactory::class,
            SynchroService::class => SynchroServiceFactory::class,
            FacadeService::class => FacadeServiceFactory::class,
            DatabaseService::class => DatabaseServiceFactory::class,
            ApiService::class => ApiServiceFactory::class,

            CodeGeneratorPluginManager::class => CodeGeneratorPluginManagerFactory::class,

            SourceService::class => SourceServiceFactory::class,
            ImportLogService::class => ImportLogServiceFactory::class,
            ImportObservService::class => ImportObservServiceFactory::class,
            ImportObservResultService::class => ImportObservResultServiceFactory::class,

            SourceListener::class => SourceListenerFactory::class,
        ],
        'abstract_factories' => [
            HelperAbstractFactory::class,
+12 −0
Original line number Diff line number Diff line
@@ -5,12 +5,24 @@

namespace Application;

use \UnicaenDbImport\Entity\Db\Source;

return [
    'import' => [
        'connections' => [
            // Cf. `./unicaen-db-import.local.php.dist`
        ],

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

        //
        // Alias éventuels des noms de colonnes d'historique.
        //
+49 −0
Original line number Diff line number Diff line
@@ -10,6 +10,9 @@ use UnicaenDbImport\Domain\SynchroInterface;
 */
class Config
{
    const KEY_default_source_code = 'default_source_code';
    const KEY_source_entity_class = 'source_entity_class';

    const COLUMN_CREATED_ON = 'created_on';
    const COLUMN_UPDATED_ON = 'updated_on';
    const COLUMN_DELETED_ON = 'deleted_on';
@@ -17,6 +20,16 @@ class Config
    const COLUMN_UPDATED_BY = 'updated_by';
    const COLUMN_DELETED_BY = 'deleted_by';

    /**
     * @var string
     */
    protected $sourceEntityClass;

    /**
     * @var string
     */
    protected $defaultSourceCode;

    /**
     * @var string
     */
@@ -80,6 +93,42 @@ class Config
     */
    protected $synchros = [];

    /**
     * @param string $sourceEntityClass
     * @return self
     */
    public function setSourceEntityClass(string $sourceEntityClass): self
    {
        $this->sourceEntityClass = $sourceEntityClass;
        return $this;
    }

    /**
     * @return string
     */
    public function getSourceEntityClass(): string
    {
        return $this->sourceEntityClass;
    }

    /**
     * @return string
     */
    public function getDefaultSourceCode(): string
    {
        return $this->defaultSourceCode;
    }

    /**
     * @param string $defaultSourceCode
     * @return Config
     */
    public function setDefaultSourceCode(string $defaultSourceCode): Config
    {
        $this->defaultSourceCode = $defaultSourceCode;
        return $this;
    }

    /**
     * @return string
     */
+16 −0
Original line number Diff line number Diff line
@@ -43,6 +43,7 @@ class ConfigFactory
        $this->container = $container;
        $this->moduleConfig = $this->getModuleConfig();

        $defaultSourceCode = $this->getDefaultSourceCode();
        $importObservEntityClass = $this->getImportObservEntityClass();
        $importObservResultEntityClass = $this->getImportObservResultEntityClass();
        $codeGeneratorsConfig = $this->getCodeGeneratorsConfig();
@@ -54,6 +55,7 @@ class ConfigFactory
        $synchros = $this->createSynchros();

        $config = new Config();
        $config->setDefaultSourceCode($defaultSourceCode);
        $config->setImportObservEntityClass($importObservEntityClass);
        $config->setImportObservResultEntityClass($importObservResultEntityClass);
        $config->setCodeGeneratorsMappingConfig($codeGeneratorsConfig);
@@ -81,6 +83,20 @@ class ConfigFactory
        return $appConfig[$key];
    }

    /**
     * @return string
     */
    private function getDefaultSourceCode()
    {
        try {
            Assertion::keyExists($this->moduleConfig, $key = 'default_source_code');
        } catch (AssertionFailedException $e) {
            throw ConfigException::missingKey($key);
        }

        return $this->moduleConfig[$key];
    }

    /**
     * @return string
     */
+4 −5
Original line number Diff line number Diff line
@@ -12,13 +12,12 @@ use UnicaenDbImport\Entity\Db\Source;
interface SourceAwareInterface
{
    /**
     * @param Source $source
     * @return self
     * @param SourceInterface|null $source
     */
    public function setSource(Source $source = null);
    public function setSource(SourceInterface $source = null);

    /**
     * @return Source
     * @return SourceInterface|null
     */
    public function getSource();
    public function getSource(): ?SourceInterface;
}
 No newline at end of file
Loading