Loading src/UnicaenDbImport/Domain/DestinationInterface.php +2 −0 Changes for src/UnicaenDbImport/Domain/DestinationInterface.php: 2 added lines, 0 removed lines. Original line number Diff line number Diff line Loading @@ -6,6 +6,8 @@ use Doctrine\DBAL\Connection; interface DestinationInterface { const HISTO_COLUMNS = ['CREATED_ON', 'UPDATED_ON', 'DELETED_ON']; /** * Retourne le petit nom de cette destination. * Loading src/UnicaenDbImport/Domain/Source.php +30 −8 Changes for src/UnicaenDbImport/Domain/Source.php: 30 added lines, 8 removed lines. Original line number Diff line number Diff line Loading @@ -111,25 +111,47 @@ class Source implements SourceInterface } public function setColumns(array $columns) { $this->columns = $this->normalizeColumns($columns); } /** * @param array $columns * @return array */ private function normalizeColumns(array $columns) { $sourceCodeColumn = $this->getSourceCodeColumn(); $columns = array_map('strtoupper', $columns); // recherche puis retrait de la colonne $this->getSourceCodeColumn() $key = array_search($sourceCodeColumn, $columns); if ($key === FALSE) { // recherche puis retrait de la "source code column" $index = array_search($sourceCodeColumn, $columns); if ($index === FALSE) { throw new RuntimeException( "La colonne de référence '$sourceCodeColumn' est introuvable dans les colonnes spécifiées"); } unset($columns[$key]); unset($columns[$index]); // la source ne peut pas comporter de colonne nommée comme l'une des colonnes d'historique foreach (DestinationInterface::HISTO_COLUMNS as $col) { if ($found = in_array($col, $columns)) { throw new RuntimeException(sprintf( "La source '%s' ne peut pas comporter de colonne nommée '%s'", $this->getName(), $col )); } } if (empty($columns)) { throw new RuntimeException( "Les données sources doivent comporter au moins une colonne *en plus* de la colonne de référence '$sourceCodeColumn'"); throw new RuntimeException(sprintf( "La source '%s' doit comporter au moins une colonne *en plus* de la colonne de référence '%s'", $this->getName(), $sourceCodeColumn )); } $this->columns = $columns; return $columns; } public function getData() Loading Loading
src/UnicaenDbImport/Domain/DestinationInterface.php +2 −0 Changes for src/UnicaenDbImport/Domain/DestinationInterface.php: 2 added lines, 0 removed lines. Original line number Diff line number Diff line Loading @@ -6,6 +6,8 @@ use Doctrine\DBAL\Connection; interface DestinationInterface { const HISTO_COLUMNS = ['CREATED_ON', 'UPDATED_ON', 'DELETED_ON']; /** * Retourne le petit nom de cette destination. * Loading
src/UnicaenDbImport/Domain/Source.php +30 −8 Changes for src/UnicaenDbImport/Domain/Source.php: 30 added lines, 8 removed lines. Original line number Diff line number Diff line Loading @@ -111,25 +111,47 @@ class Source implements SourceInterface } public function setColumns(array $columns) { $this->columns = $this->normalizeColumns($columns); } /** * @param array $columns * @return array */ private function normalizeColumns(array $columns) { $sourceCodeColumn = $this->getSourceCodeColumn(); $columns = array_map('strtoupper', $columns); // recherche puis retrait de la colonne $this->getSourceCodeColumn() $key = array_search($sourceCodeColumn, $columns); if ($key === FALSE) { // recherche puis retrait de la "source code column" $index = array_search($sourceCodeColumn, $columns); if ($index === FALSE) { throw new RuntimeException( "La colonne de référence '$sourceCodeColumn' est introuvable dans les colonnes spécifiées"); } unset($columns[$key]); unset($columns[$index]); // la source ne peut pas comporter de colonne nommée comme l'une des colonnes d'historique foreach (DestinationInterface::HISTO_COLUMNS as $col) { if ($found = in_array($col, $columns)) { throw new RuntimeException(sprintf( "La source '%s' ne peut pas comporter de colonne nommée '%s'", $this->getName(), $col )); } } if (empty($columns)) { throw new RuntimeException( "Les données sources doivent comporter au moins une colonne *en plus* de la colonne de référence '$sourceCodeColumn'"); throw new RuntimeException(sprintf( "La source '%s' doit comporter au moins une colonne *en plus* de la colonne de référence '%s'", $this->getName(), $sourceCodeColumn )); } $this->columns = $columns; return $columns; } public function getData() Loading