Loading config/module.config.php +15 −2 Original line number Diff line number Diff line Loading @@ -10,6 +10,8 @@ use UnicaenDbImport\Importer\PostgreSQL\PostgreSQLImporter; use UnicaenDbImport\Importer\PostgreSQL\PostgreSQLImporterFactory; use UnicaenDbImport\Service\ImportService; use UnicaenDbImport\Service\ImportServiceFactory; use UnicaenDbImport\Service\SynchroService; use UnicaenDbImport\Service\SynchroServiceFactory; return [ 'import' => [ Loading @@ -29,10 +31,20 @@ return [ 'route' => 'run import [--all|-a] [--name=]', 'defaults' => [ 'controller' => 'UnicaenDbImport\Controller\Console', 'action' => 'runImport', 'action' => 'runImportOnly', ], ], ], 'execute_synchro' => [ 'type' => 'simple', 'options' => [ 'route' => 'run synchro [--all|-a] [--name=]', 'defaults' => [ 'controller' => 'UnicaenDbImport\Controller\Console', 'action' => 'runSynchroOnly', ], ], ], ] ] ] ], Loading @@ -47,6 +59,7 @@ return [ 'factories' => [ ImportConfig::class => ImportConfigFactory::class, ImportService::class => ImportServiceFactory::class, SynchroService::class => SynchroServiceFactory::class, PostgreSQLImporter::class => PostgreSQLImporterFactory::class, ], Loading src/UnicaenDbImport/CodeGenerator/Common/AbstractCodeGenerator.php +10 −3 Original line number Diff line number Diff line Loading @@ -162,7 +162,7 @@ EOT; return $sql; } public function generateSQLForInsertIntoIntermmediateTable($intermediateTable, array $columnsValues) public function generateSQLForInsertIntoDestinationTable($tableName, array $columnsValues) { $platform = $this->platform; Loading @@ -175,13 +175,20 @@ EOT; }, $columnsValues)); $sqlTemplate = <<<'EOT' insert into {intermediateTable} ({commaSeparatedColumnNames}) values ({commaSeparatedColumnValues}); insert into {tableName} ({commaSeparatedColumnNames}) values ({commaSeparatedColumnValues}); EOT; $sql = Util::tokenReplacedString($sqlTemplate, compact('intermediateTable', 'commaSeparatedColumnNames', 'commaSeparatedColumnValues')); $sql = Util::tokenReplacedString($sqlTemplate, compact('tableName', 'commaSeparatedColumnNames', 'commaSeparatedColumnValues')); return $sql; } public function generateSQLForTruncateTable($tableName) { $platform = $this->platform; return $platform->getTruncateTableSQL($tableName); } /** * @return string */ Loading src/UnicaenDbImport/CodeGenerator/Common/CodeGeneratorInterface.php +1 −1 Original line number Diff line number Diff line Loading @@ -74,7 +74,7 @@ interface CodeGeneratorInterface * @param array $columnsValues * @return string */ public function generateSQLForInsertIntoIntermmediateTable($intermediateTable, array $columnsValues); public function generateSQLForInsertIntoDestinationTable($intermediateTable, array $columnsValues); /** * @return string Loading src/UnicaenDbImport/Config/ImportConfig.php +52 −6 Original line number Diff line number Diff line Loading @@ -4,10 +4,16 @@ namespace UnicaenDbImport\Config; use Doctrine\DBAL\Platforms\AbstractPlatform; use UnicaenApp\Exception\RuntimeException; use UnicaenDbImport\Domain\Import; use UnicaenDbImport\Domain\ImportInterface; use UnicaenDbImport\Domain\Exception\ImportNotFoundException; use UnicaenDbImport\Importer\ImporterInterface; /** * Contient les configurations spécifiées dans un unicaen-db-import.global.php * Permet la récupération des Importers (~> Interfaces (et méthodes correspondantes) associés à PostgreSQLImporter ou OracleXXX ou ...) * @package UnicaenDbImport\Config */ class ImportConfig { /** Loading @@ -21,10 +27,15 @@ class ImportConfig protected $imports = []; /** * @param \UnicaenDbImport\Domain\Import[] $imports * @var ImportInterface[] */ protected $synchros = []; /** * @param Import[] $imports * @return static */ public function setImports(array $imports) public function setImports(array $imports): self { $this->imports = $imports; Loading @@ -34,7 +45,7 @@ class ImportConfig /** * @return ImportInterface[] */ public function getImports() public function getImports(): array { return $this->imports; } Loading @@ -43,7 +54,7 @@ class ImportConfig * @param string $name * @return ImportInterface */ public function getImport($name) public function getImport($name): ImportInterface { foreach ($this->imports as $import) { if ($import->getName() === $name) { Loading @@ -51,7 +62,41 @@ class ImportConfig } } throw ImportNotFoundException::byName($name); return null; } /** * @param ImportInterface[] $synchros * @return static */ public function setSynchros(array $synchros): self { $this->synchros = $synchros; return $this; } /** * @return ImportInterface[] */ public function getSynchros(): array { return $this->synchros; } /** * @param string $name * @return ImportInterface */ public function getSynchro($name): ImportInterface { foreach ($this->synchros as $synchro) { if ($synchro->getName() === $name) { return $synchro; } } return null; } /** Loading Loading @@ -81,8 +126,9 @@ class ImportConfig } /** * @param \UnicaenDbImport\Domain\ImportInterface $import * @param ImportInterface $import * @return ImporterInterface * @throws \Doctrine\DBAL\DBALException */ public function getImporterForImport(ImportInterface $import) { Loading src/UnicaenDbImport/Config/ImportConfigFactory.php +21 −4 Original line number Diff line number Diff line Loading @@ -6,9 +6,7 @@ use Doctrine\DBAL\Connection; use UnicaenDbImport\Domain\Destination; use UnicaenDbImport\Domain\Import; use UnicaenDbImport\Domain\Source; use UnicaenDbImport\Config\ConfigException; use UnicaenDbImport\Importer\ImporterException; use UnicaenDbImport\Domain\Exception\ImportNotFoundException; use Zend\ServiceManager\ServiceLocatorInterface; class ImportConfigFactory Loading @@ -34,10 +32,12 @@ class ImportConfigFactory $importers = $this->createImporters($config); $imports = $this->createImports($config); $synchros = $this->createSynchros($config); $importConfig = new ImportConfig(); $importConfig->setImporters($importers); $importConfig->setImports($imports); $importConfig->setSynchros($synchros); return $importConfig; } Loading Loading @@ -105,6 +105,23 @@ class ImportConfigFactory return Import::fromConfig($importConfig); } private function createSynchros($config) { $synchros = []; if (array_key_exists($key = 'synchros', $config)) { foreach ($config[$key] as $synchroArr) { $synchros[] = $this->createSynchro($synchroArr); } } return $synchros; } private function createSynchro($synchroConfig) { return $this->createImport($synchroConfig); //Même configuration interne (une source, une destination, ...) } private function createSource(array $config) { /** @var Connection $conn */ Loading Loading
config/module.config.php +15 −2 Original line number Diff line number Diff line Loading @@ -10,6 +10,8 @@ use UnicaenDbImport\Importer\PostgreSQL\PostgreSQLImporter; use UnicaenDbImport\Importer\PostgreSQL\PostgreSQLImporterFactory; use UnicaenDbImport\Service\ImportService; use UnicaenDbImport\Service\ImportServiceFactory; use UnicaenDbImport\Service\SynchroService; use UnicaenDbImport\Service\SynchroServiceFactory; return [ 'import' => [ Loading @@ -29,10 +31,20 @@ return [ 'route' => 'run import [--all|-a] [--name=]', 'defaults' => [ 'controller' => 'UnicaenDbImport\Controller\Console', 'action' => 'runImport', 'action' => 'runImportOnly', ], ], ], 'execute_synchro' => [ 'type' => 'simple', 'options' => [ 'route' => 'run synchro [--all|-a] [--name=]', 'defaults' => [ 'controller' => 'UnicaenDbImport\Controller\Console', 'action' => 'runSynchroOnly', ], ], ], ] ] ] ], Loading @@ -47,6 +59,7 @@ return [ 'factories' => [ ImportConfig::class => ImportConfigFactory::class, ImportService::class => ImportServiceFactory::class, SynchroService::class => SynchroServiceFactory::class, PostgreSQLImporter::class => PostgreSQLImporterFactory::class, ], Loading
src/UnicaenDbImport/CodeGenerator/Common/AbstractCodeGenerator.php +10 −3 Original line number Diff line number Diff line Loading @@ -162,7 +162,7 @@ EOT; return $sql; } public function generateSQLForInsertIntoIntermmediateTable($intermediateTable, array $columnsValues) public function generateSQLForInsertIntoDestinationTable($tableName, array $columnsValues) { $platform = $this->platform; Loading @@ -175,13 +175,20 @@ EOT; }, $columnsValues)); $sqlTemplate = <<<'EOT' insert into {intermediateTable} ({commaSeparatedColumnNames}) values ({commaSeparatedColumnValues}); insert into {tableName} ({commaSeparatedColumnNames}) values ({commaSeparatedColumnValues}); EOT; $sql = Util::tokenReplacedString($sqlTemplate, compact('intermediateTable', 'commaSeparatedColumnNames', 'commaSeparatedColumnValues')); $sql = Util::tokenReplacedString($sqlTemplate, compact('tableName', 'commaSeparatedColumnNames', 'commaSeparatedColumnValues')); return $sql; } public function generateSQLForTruncateTable($tableName) { $platform = $this->platform; return $platform->getTruncateTableSQL($tableName); } /** * @return string */ Loading
src/UnicaenDbImport/CodeGenerator/Common/CodeGeneratorInterface.php +1 −1 Original line number Diff line number Diff line Loading @@ -74,7 +74,7 @@ interface CodeGeneratorInterface * @param array $columnsValues * @return string */ public function generateSQLForInsertIntoIntermmediateTable($intermediateTable, array $columnsValues); public function generateSQLForInsertIntoDestinationTable($intermediateTable, array $columnsValues); /** * @return string Loading
src/UnicaenDbImport/Config/ImportConfig.php +52 −6 Original line number Diff line number Diff line Loading @@ -4,10 +4,16 @@ namespace UnicaenDbImport\Config; use Doctrine\DBAL\Platforms\AbstractPlatform; use UnicaenApp\Exception\RuntimeException; use UnicaenDbImport\Domain\Import; use UnicaenDbImport\Domain\ImportInterface; use UnicaenDbImport\Domain\Exception\ImportNotFoundException; use UnicaenDbImport\Importer\ImporterInterface; /** * Contient les configurations spécifiées dans un unicaen-db-import.global.php * Permet la récupération des Importers (~> Interfaces (et méthodes correspondantes) associés à PostgreSQLImporter ou OracleXXX ou ...) * @package UnicaenDbImport\Config */ class ImportConfig { /** Loading @@ -21,10 +27,15 @@ class ImportConfig protected $imports = []; /** * @param \UnicaenDbImport\Domain\Import[] $imports * @var ImportInterface[] */ protected $synchros = []; /** * @param Import[] $imports * @return static */ public function setImports(array $imports) public function setImports(array $imports): self { $this->imports = $imports; Loading @@ -34,7 +45,7 @@ class ImportConfig /** * @return ImportInterface[] */ public function getImports() public function getImports(): array { return $this->imports; } Loading @@ -43,7 +54,7 @@ class ImportConfig * @param string $name * @return ImportInterface */ public function getImport($name) public function getImport($name): ImportInterface { foreach ($this->imports as $import) { if ($import->getName() === $name) { Loading @@ -51,7 +62,41 @@ class ImportConfig } } throw ImportNotFoundException::byName($name); return null; } /** * @param ImportInterface[] $synchros * @return static */ public function setSynchros(array $synchros): self { $this->synchros = $synchros; return $this; } /** * @return ImportInterface[] */ public function getSynchros(): array { return $this->synchros; } /** * @param string $name * @return ImportInterface */ public function getSynchro($name): ImportInterface { foreach ($this->synchros as $synchro) { if ($synchro->getName() === $name) { return $synchro; } } return null; } /** Loading Loading @@ -81,8 +126,9 @@ class ImportConfig } /** * @param \UnicaenDbImport\Domain\ImportInterface $import * @param ImportInterface $import * @return ImporterInterface * @throws \Doctrine\DBAL\DBALException */ public function getImporterForImport(ImportInterface $import) { Loading
src/UnicaenDbImport/Config/ImportConfigFactory.php +21 −4 Original line number Diff line number Diff line Loading @@ -6,9 +6,7 @@ use Doctrine\DBAL\Connection; use UnicaenDbImport\Domain\Destination; use UnicaenDbImport\Domain\Import; use UnicaenDbImport\Domain\Source; use UnicaenDbImport\Config\ConfigException; use UnicaenDbImport\Importer\ImporterException; use UnicaenDbImport\Domain\Exception\ImportNotFoundException; use Zend\ServiceManager\ServiceLocatorInterface; class ImportConfigFactory Loading @@ -34,10 +32,12 @@ class ImportConfigFactory $importers = $this->createImporters($config); $imports = $this->createImports($config); $synchros = $this->createSynchros($config); $importConfig = new ImportConfig(); $importConfig->setImporters($importers); $importConfig->setImports($imports); $importConfig->setSynchros($synchros); return $importConfig; } Loading Loading @@ -105,6 +105,23 @@ class ImportConfigFactory return Import::fromConfig($importConfig); } private function createSynchros($config) { $synchros = []; if (array_key_exists($key = 'synchros', $config)) { foreach ($config[$key] as $synchroArr) { $synchros[] = $this->createSynchro($synchroArr); } } return $synchros; } private function createSynchro($synchroConfig) { return $this->createImport($synchroConfig); //Même configuration interne (une source, une destination, ...) } private function createSource(array $config) { /** @var Connection $conn */ Loading