Commit 6bed5cfb authored by Bertrand Gauthier's avatar Bertrand Gauthier
Browse files

Amélioration des ColumnNameFilter et ColumnValueFilter

parent 2d183637
Loading
Loading
Loading
Loading
+19 −2
Changes for src/UnicaenDbImport/Filter/ColumnName/ArrayMapColumnNameFilter.php: 19 added lines, 2 removed lines.
Original line number Diff line number Diff line
@@ -2,6 +2,8 @@

namespace UnicaenDbImport\Filter\ColumnName;

use UnicaenDbImport\Utils;

class ArrayMapColumnNameFilter implements ColumnNameFilterInterface
{
    /**
@@ -11,6 +13,11 @@ class ArrayMapColumnNameFilter implements ColumnNameFilterInterface
     */
    protected $mapping = [];

    /**
     * @var array
     */
    protected $normalizedMapping = [];

    /**
     * @param array $mapping Tableau de correspondance ['colonne_ou_attribut_source' => 'colonne_destination'].
     */
@@ -19,16 +26,26 @@ class ArrayMapColumnNameFilter implements ColumnNameFilterInterface
        $this->setMapping($mapping);
    }

    /**
     * @inheritDoc
     */
    public function __toString(): string
    {
        return Utils::associativeArrayToString($this->mapping);
    }

    /**
     * @param array $mapping
     * @return \UnicaenDbImport\Filter\ColumnName\ArrayMapColumnNameFilter
     */
    public function setMapping(array $mapping): self
    {
        $this->mapping = $mapping;

        $keysToLower = array_map('strtolower', $keys = array_keys($mapping));
        $keysToUpper = array_map('strtoupper', $keys);

        $this->mapping = array_merge(
        $this->normalizedMapping = array_merge(
            array_combine($keysToLower, $mapping),
            array_combine($keysToUpper, $mapping),
        );
@@ -44,6 +61,6 @@ class ArrayMapColumnNameFilter implements ColumnNameFilterInterface
     */
    public function filter(string $name): string
    {
        return $this->mapping[strtolower($name)] ?? $this->mapping[strtoupper($name)] ?? $name;
        return $this->normalizedMapping[strtolower($name)] ?? $this->normalizedMapping[strtoupper($name)] ?? $name;
    }
}
 No newline at end of file
+7 −0
Changes for src/UnicaenDbImport/Filter/ColumnName/ColumnNameFilterInterface.php: 7 added lines, 0 removed lines.
Original line number Diff line number Diff line
@@ -10,6 +10,13 @@ namespace UnicaenDbImport\Filter\ColumnName;
 */
interface ColumnNameFilterInterface
{
    /**
     * Retourne une représentation littérale de ce filtre.
     *
     * @return string
     */
    public function __toString(): string;

    /**
     * Fournit le nom de colonne dans la destination à partir du nom de colonne/attribut dans la source.
     *
+8 −0
Changes for src/UnicaenDbImport/Filter/ColumnName/DefaultColumnNameFilter.php: 8 added lines, 0 removed lines.
Original line number Diff line number Diff line
@@ -19,6 +19,14 @@ use Laminas\Filter\Word\CamelCaseToUnderscore;
 */
class DefaultColumnNameFilter implements ColumnNameFilterInterface
{
    /**
     * @inheritDoc
     */
    public function __toString(): string
    {
        return "attributExemple => ATTRIBUT_EXEMPLE";
    }

    /**
     * @inheritDoc
     */
+4 −6
Changes for src/UnicaenDbImport/Filter/ColumnValue/AbstractColumnValueFilter.php: 4 added lines, 6 removed lines.
Original line number Diff line number Diff line
@@ -2,20 +2,18 @@

namespace UnicaenDbImport\Filter\ColumnValue;

use UnicaenDbImport\Domain\Source;

abstract class AbstractColumnValueFilter implements ColumnValueFilterInterface
{
    /**
     * @var \UnicaenDbImport\Domain\Source
     * @var \UnicaenDbImport\Domain\SourceInterface
     */
    protected $source;
    protected $params;

    /**
     * @inheritDoc
     */
    public function setSource(Source $source)
    public function setParams(array $params)
    {
        $this->source = $source;
        $this->params = $params;
    }
}
 No newline at end of file
+11 −4
Changes for src/UnicaenDbImport/Filter/ColumnValue/ColumnValueFilterInterface.php: 11 added lines, 4 removed lines.
Original line number Diff line number Diff line
@@ -2,8 +2,6 @@

namespace UnicaenDbImport\Filter\ColumnValue;

use UnicaenDbImport\Domain\Source;

/**
 * Interface de transformation d'une valeur de colonne/attribut issu de la source
 * en une valeur de colonne destination.
@@ -13,9 +11,18 @@ use UnicaenDbImport\Domain\Source;
interface ColumnValueFilterInterface
{
    /**
     * @param \UnicaenDbImport\Domain\Source $source
     * Retourne une représentation littérale de ce filtre.
     *
     * @return string
     */
    public function __toString(): string;

    /**
     * Permet de fournir d'éventuels attributs libres complémentaires (contexte, etc.)
     *
     * @param array $params
     */
    public function setSource(Source $source);
    public function setParams(array $params);

    /**
     * @param string $name Nom de colonne/attribut source
Loading