Commit b7b4eb2a authored by Laurent Lecluse's avatar Laurent Lecluse
Browse files

Ajout de la gestion de tables via une table (début du travail).

Les sql_criterions sont remplacés par les sync_filtres et sont paramétrables en BDD directement plutôt que de les écrire dans le code source du package Import!!!

Génération des procédures de mise à jour actualisée en conséquence
parent cbe3d78a
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -37,7 +37,7 @@ return [
                            'sources'                   => [
                                'label'       => "Sources de données",
                                'description' => "Liste des sources de données",
                                'route'       => 'sources',
                                'route'       => 'import',
                                'resource'    => PrivilegeController::getResourceId('Import\Controller\Import', 'sources'),
                                'params'      => [
                                    'action' => 'sources',
+0 −57
Original line number Diff line number Diff line
@@ -19,61 +19,4 @@ return [
            'source_code' => null,
        ],
    ],

    'navigation' => [
        'default' => [
            'home' => [
                'pages' => [
                    'import' => [
                        'label'    => 'Import',
                        'order'    => 1,
                        'route'    => 'import',
                        'resource' => PrivilegeController::getResourceId('Import\Controller\Import', 'index'),
                        'pages'    => [
                            'showDiff'               => [
                                'label'       => "Écarts entre les données de l'application et ses sources",
                                'description' => "Affiche, table par table, la liste des données différentes entre l'application et ses sources de données",
                                'route'       => 'import',
                                'resource'    => PrivilegeController::getResourceId('Import\Controller\Import', 'show-diff'),
                                'params'      => [
                                    'action' => 'show-diff',
                                ],
                            ],
                            'updateTables'           => [
                                'label'       => "Mise à jour des données à partir de leurs sources",
                                'description' => "Met à jour l'ensemble des données partir de leurs sources respectives.",
                                'route'       => 'import',
                                'resource'    => PrivilegeController::getResourceId('Import\Controller\Import', 'update-tables'),
                                'params'      => [
                                    'action' => 'update-tables',
                                ],
                            ],
                            'show-import-tbl'        => [
                                'label'       => "Tableau de bord principal",
                                'description' => "Liste, table par table, les colonnes dont les données sont importables ou non, leur caractéristiques et l'état de l'import à leur niveau.",
                                'route'       => 'import',
                                'resource'    => PrivilegeController::getResourceId('Import\Controller\Import', 'show-import-tbl'),
                                'params'      => [
                                    'action' => 'show-import-tbl',
                                ],
                            ],
                            'updateViewsAndPackages' => [
                                'label'       => "Mise à jour des vues différentielles et des procédures de mise à jour",
                                'description' => "Réactualise les vues différentielles d'import. Ces dernières servent à déterminer quelles données ont changé,
        sont apparues ou ont disparues des sources de données.
        Met également à jour les procédures de mise à jour qui actualisent les données de l'application à partir des informations
        fournies par les vues différentielles.
        Cette réactualisation n'est utile que si les vues sources ont été modifiées.",
                                'route'       => 'import',
                                'resource'    => PrivilegeController::getResourceId('Import\Controller\Import', 'update-views-and-packages'),
                                'params'      => [
                                    'action' => 'update-views-and-packages',
                                ],
                            ],
                        ],
                    ],
                ],
            ],
        ],
    ],
];
 No newline at end of file
+1 −1
Original line number Diff line number Diff line
@@ -106,7 +106,7 @@ class ImportController extends AbstractActionController
        } elseif ($action) {
            $sq    = $this->getServiceQueryGenerator();
            $query = new Query($table);
            $query->addDefaultSqlCriterion($sq);
            $query->addDefaultSyncFiltre($sq);
            if ($action != 'all') $query->setAction($action);

            /* Mise à jour des données et récupération des éventuelles erreurs */
+77 −0
Original line number Diff line number Diff line
<?php

namespace UnicaenImport\Entity\Db;

use Doctrine\ORM\Mapping as ORM;

/**
 * Table
 *
 * @ORM\Entity
 * @ORM\Table(name="IMPORT_TABLES")
 */
class Table
{

    /**
     * @var string
     * @ORM\Id
     * @ORM\Column(name="TABLE_NAME", type="string", length=30, unique=true, nullable=false)
     */
    protected $name;

    /**
     * @var string
     * @ORM\Column(name="SYNC_FILTRE", type="string", length=2000, nullable=true)
     */
    protected $syncFiltre;



    /**
     * @return string
     */
    public function getName()
    {
        return $this->name;
    }



    /**
     * @param string $name
     *
     * @return Table
     */
    public function setName($name)
    {
        $this->name = $name;

        return $this;
    }



    /**
     * @return string
     */
    public function getSyncFiltre()
    {
        return $this->syncFiltre;
    }



    /**
     * @param string $syncFiltre
     *
     * @return Table
     */
    public function setSyncFiltre($syncFiltre)
    {
        $this->syncFiltre = $syncFiltre;

        return $this;
    }

}
 No newline at end of file
+8 −8
Original line number Diff line number Diff line
@@ -103,11 +103,11 @@ class Query
    protected $ignoreFields;

    /**
     * defaultSqlCriterion
     * syncFiltre
     *
     * @var string
     */
    protected $defaultSqlCriterion;
    protected $syncFiltre;



@@ -129,10 +129,10 @@ class Query
     *
     * @return self
     */
    public function addDefaultSqlCriterion(QueryGeneratorService $queryGenerator)
    public function addDefaultSyncFiltre(QueryGeneratorService $queryGenerator)
    {
        if ($this->getTableName()) {
            $this->defaultSqlCriterion = $queryGenerator->getSqlCriterion($this->getTableName());
            $this->syncFiltre = $queryGenerator->getSyncFiltre($this->getTableName());
        }

        return $this;
@@ -629,14 +629,14 @@ class Query
            break;
        }
        if (!empty($where)) {
            if (!empty($this->defaultSqlCriterion)) {
                $sql .= $this->defaultSqlCriterion . ' AND ' . implode(' AND ', $where);
            if (!empty($this->syncFiltre)) {
                $sql .= $this->syncFiltre . ' AND ' . implode(' AND ', $where);
            } else {
                $sql .= 'WHERE ' . implode(' AND ', $where);
            }
        } else {
            if (!empty($this->defaultSqlCriterion)) {
                $sql .= $this->defaultSqlCriterion;
            if (!empty($this->syncFiltre)) {
                $sql .= $this->syncFiltre;
            }
        }

Loading