Commit 9f846d9f authored by Bertrand Gauthier's avatar Bertrand Gauthier
Browse files

AbstractPluginManager : possibilité de fournir une instance de connexion à la...

AbstractPluginManager : possibilité de fournir une instance de connexion à la création de la Source/Destination (instanciation d'une NoConnection si vide).
parent fa8c6943
Loading
Loading
Loading
Loading
+2 −0
Original line number Diff line number Diff line
@@ -6,6 +6,8 @@ Changelog
- Synchro : déclenchement d'un événement Laminas permettant de réagir aux changements de valeurs déclarés dans IMPORT_OBSERV.
- Modifications/améliorations pour pouvoir instancier des ImportObservResult manuellement.
- Cosmétique : affichage plus aéré des caractéristiques d'un import ou d'une synchro.
- Mention explicite des types de connexions possibles pour une Source (setter).
- AbstractPluginManager : possibilité de fournir une instance de connexion à la création de la Source/Destination (instanciation d'une NoConnection si vide).
- ValueFilter : ajout de setters.

8.0.1
+21 −4
Original line number Diff line number Diff line
@@ -4,11 +4,13 @@ namespace UnicaenDbImport\Domain\PluginManager;

use Assert\Assertion;
use Assert\AssertionFailedException;
use Doctrine\DBAL\Connection;
use Doctrine\DBAL\Connection as DbConnection;
use Psr\Container\ContainerInterface;
use UnicaenDbImport\Config\ColumnValueFilterConfigFactoryTrait;
use UnicaenDbImport\Config\ConfigException;
use UnicaenDbImport\Connection\ApiConnection;
use UnicaenDbImport\Connection\NoConnection;
use UnicaenDbImport\Domain\Destination;
use UnicaenDbImport\Domain\ImportInterface;
use UnicaenDbImport\Domain\SelectProviderInterface;
@@ -18,6 +20,7 @@ use UnicaenDbImport\Filter\ColumnName\ArrayMapColumnNameFilter;
use UnicaenDbImport\Filter\ColumnName\ColumnNameFilterInterface;
use UnicaenDbImport\Service\Api\Response\DataExtractor\ResponseDataExtractorInterface;
use UnicaenDbImport\Service\Api\Response\DataExtractor\ResponseDataExtractorPluginManager;
use Webmozart\Assert\Assert;

abstract class AbstractPluginManager extends \Laminas\ServiceManager\AbstractPluginManager
{
@@ -99,8 +102,15 @@ abstract class AbstractPluginManager extends \Laminas\ServiceManager\AbstractPlu
     */
    private function createSource(array $sourceConfig): Source
    {
        $connectionName = $sourceConfig['connection'];
        $sourceConfig['connection'] = $this->getConnectionByName($connectionName);
        $connection = $sourceConfig['connection'] ?? null;
        if (is_object($connection)) {
            Assert::isInstanceOfAny($connection, [NoConnection::class, Connection::class, ApiConnection::class]);
        } elseif (is_string($connection)) {
            $connection = $this->getConnectionByName($connection);
        } else {
            $connection = new NoConnection([]);
        }
        $sourceConfig['connection'] = $connection;

        $sourceConfig['computed_columns'] = $this->getColumnValueFilterInstances($sourceConfig, 'computed_columns');
        $sourceConfig['column_value_filter'] = $this->getColumnValueFilterInstances($sourceConfig, 'column_value_filter');
@@ -165,8 +175,15 @@ abstract class AbstractPluginManager extends \Laminas\ServiceManager\AbstractPlu
     */
    private function createDestination(array $destinationConfig): Destination
    {
        $connectionName = $destinationConfig['connection'];
        $destinationConfig['connection'] = $this->getConnectionByName($connectionName);
        $connection = $destinationConfig['connection'] ?? null;
        if (is_object($connection)) {
            Assert::isInstanceOfAny($connection, [NoConnection::class, Connection::class, ApiConnection::class]);
        } elseif (is_string($connection)) {
            $connection = $this->getConnectionByName($connection);
        } else {
            $connection = new NoConnection([]);
        }
        $destinationConfig['connection'] = $connection;

        $destinationConfig['column_value_filter'] = $this->getColumnValueFilterInstances($destinationConfig, 'column_value_filter');