From 858ec6e8ab06323ff68a556eded93e4c9532aa89 Mon Sep 17 00:00:00 2001 From: point Date: Tue, 14 Nov 2023 10:23:09 +0100 Subject: [PATCH 01/10] :construction: modif du model --- fluxRSS/model/FluxModel.php | 31 +++++++++++++++++-------------- 1 file changed, 17 insertions(+), 14 deletions(-) diff --git a/fluxRSS/model/FluxModel.php b/fluxRSS/model/FluxModel.php index 8c0a9e7..5f9f882 100755 --- a/fluxRSS/model/FluxModel.php +++ b/fluxRSS/model/FluxModel.php @@ -2,19 +2,17 @@ namespace model; +use DAL\Connection; use DAL\FluxGateway; use metier\Flux; +require_once "config/config.php"; class FluxModel { - private FluxGateway $gateway; - - public function __construct(FluxGateway $fluxGateway){ - $this->gateway = $fluxGateway; - } public function FindAllFlux(){ + $gateway = new FluxGateway(new Connection( $base, $login, $mdp)); $data = array(); - $result = $this->gateway->findAllFlux(); + $result = $gateway->findAllFlux(); foreach ($result as $row){ $data[] = new Flux($row['$flux']); @@ -22,33 +20,37 @@ class FluxModel return $data; } - public function addFlux(Flux $flux) - { + public function addFlux(Flux $flux){ + $gateway = new FluxGateway(new Connection( $base, $login, $mdp)); $data = $this->findFlux($flux); if ($data == array()) { - $this->gateway->addFlux($flux); + $gateway->addFlux($flux); } } public function addFluxBySrc(string $flux): Flux { + $gateway = new FluxGateway(new Connection( $base, $login, $mdp)); $newFlux = new Flux($flux); - $this->gateway->addFlux($newFlux); + $gateway->addFlux($newFlux); return $newFlux; } public function removeFlux(Flux $flux){ - $this->gateway->removeFlux($flux); + $gateway = new FluxGateway(new Connection( $base, $login, $mdp)); + $gateway->removeFlux($flux); } public function removeFluxBySrc(string $flux): Flux { + $gateway = new FluxGateway(new Connection( $base, $login, $mdp)); $newFlux = new Flux($flux); - $this->gateway->removeFlux($newFlux); + $gateway->removeFlux($newFlux); return $newFlux; } public function findFlux(Flux $flux){ + $gateway = new FluxGateway(new Connection( $base, $login, $mdp)); $data = array(); - $result = $this->gateway->findFlux($flux); + $result = $gateway->findFlux($flux); foreach ($result as $row){ $data[] = new Flux($row['$flux']); @@ -57,8 +59,9 @@ class FluxModel } public function findFluxBySrc(string $flux){ + $gateway = new FluxGateway(new Connection( $base, $login, $mdp)); $data = array(); - $result = $this->gateway->findFluxBySrc($flux); + $result = $gateway->findFluxBySrc($flux); foreach ($result as $row){ $data[] = new Flux($row['$flux']); From 16f4d40996ddc9a288fe157d617bfc6112307096 Mon Sep 17 00:00:00 2001 From: point Date: Tue, 14 Nov 2023 11:15:15 +0100 Subject: [PATCH 02/10] modif composer.json --- fluxRSS/composer.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/fluxRSS/composer.json b/fluxRSS/composer.json index 21ca7cc..bb8dfdb 100755 --- a/fluxRSS/composer.json +++ b/fluxRSS/composer.json @@ -8,7 +8,8 @@ "psr-4": { "controleur\\": "controleur/", "config\\": "config/", - "modeles\\": "metier/" + "model\\": "model/", + "DAL\\": "DAL/" } } } From 2bfceb3b6db92d6f74d5f4c5e605afb1e089be48 Mon Sep 17 00:00:00 2001 From: point Date: Tue, 14 Nov 2023 11:21:38 +0100 Subject: [PATCH 03/10] modif composer.json --- .idea/Php_RSS.iml | 4 ++++ fluxRSS/model/ArticleModel.php | 5 ++--- fluxRSS/vendor/composer/autoload_psr4.php | 3 ++- fluxRSS/vendor/composer/autoload_static.php | 14 +++++++++++--- fluxRSS/vendor/composer/installed.php | 12 ++++++------ 5 files changed, 25 insertions(+), 13 deletions(-) diff --git a/.idea/Php_RSS.iml b/.idea/Php_RSS.iml index 611ec76..996df65 100755 --- a/.idea/Php_RSS.iml +++ b/.idea/Php_RSS.iml @@ -5,6 +5,10 @@ + + + + diff --git a/fluxRSS/model/ArticleModel.php b/fluxRSS/model/ArticleModel.php index 4caf73a..3c7758b 100755 --- a/fluxRSS/model/ArticleModel.php +++ b/fluxRSS/model/ArticleModel.php @@ -2,15 +2,14 @@ namespace model; -use DAL; +use DAL\{ArticleGateway,Connection}; use metier; -require_once "config/config.php"; class ArticleModel { public static function getArticles() : array { - $gwArticle = new DAL\ArticleGateway(new DAL\Connection( $base, $login, $mdp)); + $gwArticle = new ArticleGateway(new Connection('mysql:host = localhost; dbname = dbrorossetto', 'rorossetto', 'tpphp')); $res = $gwArticle->getAllArticles(); foreach($res as $row){ $tabArticle[] = new metier\Article($row['id'], $row['title'],$row['datePub'],$row['description'],$row['guid'],$row['link'],$row['mediaContent'],$row['provenance'] ); diff --git a/fluxRSS/vendor/composer/autoload_psr4.php b/fluxRSS/vendor/composer/autoload_psr4.php index abb6bf8..e908ee3 100755 --- a/fluxRSS/vendor/composer/autoload_psr4.php +++ b/fluxRSS/vendor/composer/autoload_psr4.php @@ -6,10 +6,11 @@ $vendorDir = dirname(__DIR__); $baseDir = dirname($vendorDir); return array( - 'modeles\\' => array($baseDir . '/modeles'), + 'model\\' => array($baseDir . '/model'), 'controleur\\' => array($baseDir . '/controleur'), 'config\\' => array($baseDir . '/config'), 'Twig\\' => array($vendorDir . '/twig/twig/src'), 'Symfony\\Polyfill\\Mbstring\\' => array($vendorDir . '/symfony/polyfill-mbstring'), 'Symfony\\Polyfill\\Ctype\\' => array($vendorDir . '/symfony/polyfill-ctype'), + 'DAL\\' => array($baseDir . '/DAL'), ); diff --git a/fluxRSS/vendor/composer/autoload_static.php b/fluxRSS/vendor/composer/autoload_static.php index dc37466..716819b 100755 --- a/fluxRSS/vendor/composer/autoload_static.php +++ b/fluxRSS/vendor/composer/autoload_static.php @@ -14,7 +14,7 @@ class ComposerStaticInita6287a55fe354aae4af95d1e4395c915 public static $prefixLengthsPsr4 = array ( 'm' => array ( - 'modeles\\' => 8, + 'model\\' => 6, ), 'c' => array ( @@ -30,12 +30,16 @@ class ComposerStaticInita6287a55fe354aae4af95d1e4395c915 'Symfony\\Polyfill\\Mbstring\\' => 26, 'Symfony\\Polyfill\\Ctype\\' => 23, ), + 'D' => + array ( + 'DAL\\' => 4, + ), ); public static $prefixDirsPsr4 = array ( - 'modeles\\' => + 'model\\' => array ( - 0 => __DIR__ . '/../..' . '/modeles', + 0 => __DIR__ . '/../..' . '/model', ), 'controleur\\' => array ( @@ -57,6 +61,10 @@ class ComposerStaticInita6287a55fe354aae4af95d1e4395c915 array ( 0 => __DIR__ . '/..' . '/symfony/polyfill-ctype', ), + 'DAL\\' => + array ( + 0 => __DIR__ . '/../..' . '/DAL', + ), ); public static $classMap = array ( diff --git a/fluxRSS/vendor/composer/installed.php b/fluxRSS/vendor/composer/installed.php index a25b246..129d988 100755 --- a/fluxRSS/vendor/composer/installed.php +++ b/fluxRSS/vendor/composer/installed.php @@ -1,9 +1,9 @@ array( 'name' => '__root__', - 'pretty_version' => '1.0.0+no-version-set', - 'version' => '1.0.0.0', - 'reference' => NULL, + 'pretty_version' => 'dev-master', + 'version' => 'dev-master', + 'reference' => '16f4d40996ddc9a288fe157d617bfc6112307096', 'type' => 'library', 'install_path' => __DIR__ . '/../../', 'aliases' => array(), @@ -11,9 +11,9 @@ ), 'versions' => array( '__root__' => array( - 'pretty_version' => '1.0.0+no-version-set', - 'version' => '1.0.0.0', - 'reference' => NULL, + 'pretty_version' => 'dev-master', + 'version' => 'dev-master', + 'reference' => '16f4d40996ddc9a288fe157d617bfc6112307096', 'type' => 'library', 'install_path' => __DIR__ . '/../../', 'aliases' => array(), From 0ffbfc39b243095e414f46d088cec847002779af Mon Sep 17 00:00:00 2001 From: "maxime.point2" Date: Wed, 15 Nov 2023 09:03:12 +0100 Subject: [PATCH 04/10] :poop: ajout de admin et modif ArticleModel --- fluxRSS/DAL/AdminGateway.php | 27 +++++++++++++++++++++ fluxRSS/DAL/ArticleGateway.php | 39 +++++++++++++++++++++---------- fluxRSS/DAL/FluxGateway.php | 36 ++++++++++++++++++++-------- fluxRSS/composer.json | 3 ++- fluxRSS/controleur/Controleur.php | 2 +- fluxRSS/index.php | 3 +++ fluxRSS/metier/Admin.php | 0 fluxRSS/model/AdminModel.php | 25 ++++++++++++++++++++ fluxRSS/model/ArticleModel.php | 11 ++++++--- fluxRSS/model/FluxModel.php | 14 +++++------ fluxRSS/model/Parser.php | 0 11 files changed, 126 insertions(+), 34 deletions(-) create mode 100755 fluxRSS/DAL/AdminGateway.php mode change 100644 => 100755 fluxRSS/metier/Admin.php create mode 100755 fluxRSS/model/AdminModel.php mode change 100644 => 100755 fluxRSS/model/Parser.php diff --git a/fluxRSS/DAL/AdminGateway.php b/fluxRSS/DAL/AdminGateway.php new file mode 100755 index 0000000..f2b06c0 --- /dev/null +++ b/fluxRSS/DAL/AdminGateway.php @@ -0,0 +1,27 @@ +con = $con; + } + + public function login(string $login):array + { + try{ + $query = 'SELECT mdp,mail FROM Admin WHERE login = :login;'; + $this->con->executeQuery($query, array(':flux' => array($login, PDO::PARAM_STR))); + return $this->con->getResults(); + }catch (\PDOException $e){ + throw new \Exception("PDO error"); + } + } +} \ No newline at end of file diff --git a/fluxRSS/DAL/ArticleGateway.php b/fluxRSS/DAL/ArticleGateway.php index a36f565..7818920 100755 --- a/fluxRSS/DAL/ArticleGateway.php +++ b/fluxRSS/DAL/ArticleGateway.php @@ -1,6 +1,7 @@ con = $con; } + /** + * @throws Exception + */ public function getAllArticles():array { - $query = 'SELECT * FROM Article;'; - $this->con->executeQuery($query, array()); - return $this->con->getResults(); + try { + $query = 'SELECT * FROM Article;'; + $this->con->executeQuery($query, array()); + return $this->con->getResults(); + }catch (\PDOException $e){ + throw new Exception("PDO error"); + } } + /** + * @throws Exception + */ public function addArticle(Article $article){ - $query = 'INSERT INTO Article VALUES (:id,:title,to_date(:date,"Dy, DD Mon YYYY"),:description,:guid,:link,:mediaContent,:provenance);'; - $this->con->executeQuery($query, array( ':id' => array($article->getId(), PDO::PARAM_STR), - ':title' => array($article->getTitle(), PDO::PARAM_STR), - ':date' => array($article->getDate(),PDO::PARAM_STR), - ':description' => array($article->getDescription(),PDO::PARAM_STR), - ':guid' => array($article->getGuid(),PDO::PARAM_STR), - ':link' => array($article->getLink(),PDO::PARAM_STR), - ':mediaContent' => array($article->getMediaContent(),PDO::PARAM_STR), - ':provenance' => array($article->getProvenance(),PDO::PARAM_INT))); + try { + $query = 'INSERT INTO Article VALUES (:id,:title,to_date(:date,"Dy, DD Mon YYYY"),:description,:guid,:link,:mediaContent,:provenance);'; + $this->con->executeQuery($query, array(':id' => array($article->getId(), PDO::PARAM_STR), + ':title' => array($article->getTitle(), PDO::PARAM_STR), + ':date' => array($article->getDate(), PDO::PARAM_STR), + ':description' => array($article->getDescription(), PDO::PARAM_STR), + ':guid' => array($article->getGuid(), PDO::PARAM_STR), + ':link' => array($article->getLink(), PDO::PARAM_STR), + ':mediaContent' => array($article->getMediaContent(), PDO::PARAM_STR), + ':provenance' => array($article->getProvenance(), PDO::PARAM_INT))); + }catch (\PDOException $e){ + throw new Exception("PDO error"); + } } } \ No newline at end of file diff --git a/fluxRSS/DAL/FluxGateway.php b/fluxRSS/DAL/FluxGateway.php index 57ca526..43bbe9f 100755 --- a/fluxRSS/DAL/FluxGateway.php +++ b/fluxRSS/DAL/FluxGateway.php @@ -14,19 +14,31 @@ class FluxGateway } public function addFlux($flux){ - $query = 'INSERT INTO Flux VALUES (:flux);'; - $this->con->executeQuery($query, array(':flux' => array($flux->getFlux(), PDO::PARAM_STR))); + try{ + $query = 'INSERT INTO Flux VALUES (:flux);'; + $this->con->executeQuery($query, array(':flux' => array($flux->getFlux(), PDO::PARAM_STR))); + }catch (\PDOException $e){ + throw new \Exception("PDO error"); + } } public function removeFlux($flux){ - $query = 'DELETE FROM Flux WHERE flux = :flux;'; - $this->con->executeQuery($query, array(':flux' => array($flux->getFlux(), PDO::PARAM_STR))); + try{ + $query = 'DELETE FROM Flux WHERE flux = :flux;'; + $this->con->executeQuery($query, array(':flux' => array($flux->getFlux(), PDO::PARAM_STR))); + }catch (\PDOException $e){ + throw new \Exception("PDO error"); + } } public function findAllFlux(){ - $query = 'SELECT * FROM Flux;'; - $this->con->executeQuery($query); - return $this->con->getResults(); + try{ + $query = 'SELECT * FROM Flux;'; + $this->con->executeQuery($query); + return $this->con->getResults(); + }catch (\PDOException $e){ + throw new \Exception("PDO error"); + } } public function findFlux(Flux $flux){ @@ -34,8 +46,12 @@ class FluxGateway } public function findFluxBySrc(string $flux){ - $query = 'SELECT * FROM Flux WHERE flux = :flux;'; - $this->con->executeQuery($query, array(':flux' => array($flux, PDO::PARAM_STR))); - return $this->con->getResults(); + try{ + $query = 'SELECT * FROM Flux WHERE flux = :flux;'; + $this->con->executeQuery($query, array(':flux' => array($flux, PDO::PARAM_STR))); + return $this->con->getResults(); + }catch (\PDOException $e){ + throw new \Exception("PDO error"); + } } } \ No newline at end of file diff --git a/fluxRSS/composer.json b/fluxRSS/composer.json index bb8dfdb..2ef7dc7 100755 --- a/fluxRSS/composer.json +++ b/fluxRSS/composer.json @@ -9,7 +9,8 @@ "controleur\\": "controleur/", "config\\": "config/", "model\\": "model/", - "DAL\\": "DAL/" + "DAL\\": "DAL/", + "metier\\": "metier/" } } } diff --git a/fluxRSS/controleur/Controleur.php b/fluxRSS/controleur/Controleur.php index ca4318e..5fbf48a 100755 --- a/fluxRSS/controleur/Controleur.php +++ b/fluxRSS/controleur/Controleur.php @@ -9,7 +9,6 @@ class Controleur { global $twig; // nécessaire pour utiliser variables globales session_start(); - $tabArticle[] = ArticleModel::getArticles(); //debut //on initialise un tableau d'erreur @@ -30,6 +29,7 @@ class Controleur //mauvaise action default: + $tabArticle[] = ArticleModel::getArticles(); $dVueEreur[] = "Erreur d'appel php"; $dataview = ['Article'=> $tabArticle]; echo $twig->render('listArticle.html', ['tabArticle' => $dataview, 'dVueErreur'=>$dVueEreur]); diff --git a/fluxRSS/index.php b/fluxRSS/index.php index 0ceef5c..0e8dfd4 100755 --- a/fluxRSS/index.php +++ b/fluxRSS/index.php @@ -1,4 +1,5 @@ login($username); + + foreach ($lmdp as $motDePasse){ + if (password_verify($mdp,$motDePasse['mdp'])){ + $_SESSION['role'] = 'admin'; + $_SESSION['pseudo'] = $username; + return new Admin($username,$motDePasse['mail']); + } + } + return null; + } +} \ No newline at end of file diff --git a/fluxRSS/model/ArticleModel.php b/fluxRSS/model/ArticleModel.php index 3c7758b..6e23116 100755 --- a/fluxRSS/model/ArticleModel.php +++ b/fluxRSS/model/ArticleModel.php @@ -2,18 +2,23 @@ namespace model; -use DAL\{ArticleGateway,Connection}; +use DAL\{AdminGateway, ArticleGateway, Connection}; use metier; +require ('../DAL/ArticleGateway.php'); +require ('../DAL/Connection.php'); class ArticleModel { public static function getArticles() : array { - $gwArticle = new ArticleGateway(new Connection('mysql:host = localhost; dbname = dbrorossetto', 'rorossetto', 'tpphp')); + $gwArticle = new ArticleGateway(new Connection('mysql:host= londres.uca.local ; dbname= dbrorossetto', 'rorossetto', 'tpphp')); + $tabArticle = array(); $res = $gwArticle->getAllArticles(); foreach($res as $row){ $tabArticle[] = new metier\Article($row['id'], $row['title'],$row['datePub'],$row['description'],$row['guid'],$row['link'],$row['mediaContent'],$row['provenance'] ); } return $tabArticle; } -} \ No newline at end of file +} + +var_dump(ArticleModel::getArticles()); \ No newline at end of file diff --git a/fluxRSS/model/FluxModel.php b/fluxRSS/model/FluxModel.php index 5f9f882..5116de9 100755 --- a/fluxRSS/model/FluxModel.php +++ b/fluxRSS/model/FluxModel.php @@ -10,7 +10,7 @@ require_once "config/config.php"; class FluxModel { public function FindAllFlux(){ - $gateway = new FluxGateway(new Connection( $base, $login, $mdp)); + $gateway = new FluxGateway(new Connection('mysql:host= londres.uca.local ; dbname= dbrorossetto', 'rorossetto', 'tpphp')); $data = array(); $result = $gateway->findAllFlux(); @@ -21,7 +21,7 @@ class FluxModel } public function addFlux(Flux $flux){ - $gateway = new FluxGateway(new Connection( $base, $login, $mdp)); + $gateway = new FluxGateway(new Connection('mysql:host= londres.uca.local ; dbname= dbrorossetto', 'rorossetto', 'tpphp')); $data = $this->findFlux($flux); if ($data == array()) { $gateway->addFlux($flux); @@ -29,26 +29,26 @@ class FluxModel } public function addFluxBySrc(string $flux): Flux { - $gateway = new FluxGateway(new Connection( $base, $login, $mdp)); + $gateway = new FluxGateway(new Connection('mysql:host= londres.uca.local ; dbname= dbrorossetto', 'rorossetto', 'tpphp')); $newFlux = new Flux($flux); $gateway->addFlux($newFlux); return $newFlux; } public function removeFlux(Flux $flux){ - $gateway = new FluxGateway(new Connection( $base, $login, $mdp)); + $gateway = new FluxGateway(new Connection('mysql:host= londres.uca.local ; dbname= dbrorossetto', 'rorossetto', 'tpphp')); $gateway->removeFlux($flux); } public function removeFluxBySrc(string $flux): Flux { - $gateway = new FluxGateway(new Connection( $base, $login, $mdp)); + $gateway = new FluxGateway(new Connection('mysql:host= londres.uca.local ; dbname= dbrorossetto', 'rorossetto', 'tpphp')); $newFlux = new Flux($flux); $gateway->removeFlux($newFlux); return $newFlux; } public function findFlux(Flux $flux){ - $gateway = new FluxGateway(new Connection( $base, $login, $mdp)); + $gateway = new FluxGateway(new Connection('mysql:host= londres.uca.local ; dbname= dbrorossetto', 'rorossetto', 'tpphp')); $data = array(); $result = $gateway->findFlux($flux); @@ -59,7 +59,7 @@ class FluxModel } public function findFluxBySrc(string $flux){ - $gateway = new FluxGateway(new Connection( $base, $login, $mdp)); + $gateway = new FluxGateway(new Connection('mysql:host= londres.uca.local ; dbname= dbrorossetto', 'rorossetto', 'tpphp')); $data = array(); $result = $gateway->findFluxBySrc($flux); diff --git a/fluxRSS/model/Parser.php b/fluxRSS/model/Parser.php old mode 100644 new mode 100755 From 0b3730701cbf401eb9cbe731796293a9f194fd67 Mon Sep 17 00:00:00 2001 From: point Date: Wed, 15 Nov 2023 09:05:39 +0100 Subject: [PATCH 05/10] ajout composer --- fluxRSS/composer.lock | 258 ++++++++++++++++++++++++++ fluxRSS/model/ArticleModel.php | 2 +- fluxRSS/vendor/composer/installed.php | 4 +- 3 files changed, 261 insertions(+), 3 deletions(-) create mode 100644 fluxRSS/composer.lock diff --git a/fluxRSS/composer.lock b/fluxRSS/composer.lock new file mode 100644 index 0000000..9d8ce02 --- /dev/null +++ b/fluxRSS/composer.lock @@ -0,0 +1,258 @@ +{ + "_readme": [ + "This file locks the dependencies of your project to a known state", + "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", + "This file is @generated automatically" + ], + "content-hash": "03e1f7c6d7574f3683225067dbb2becc", + "packages": [ + { + "name": "symfony/polyfill-ctype", + "version": "v1.28.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-ctype.git", + "reference": "ea208ce43cbb04af6867b4fdddb1bdbf84cc28cb" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/ea208ce43cbb04af6867b4fdddb1bdbf84cc28cb", + "reference": "ea208ce43cbb04af6867b4fdddb1bdbf84cc28cb", + "shasum": "" + }, + "require": { + "php": ">=7.1" + }, + "provide": { + "ext-ctype": "*" + }, + "suggest": { + "ext-ctype": "For best performance" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "1.28-dev" + }, + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" + } + }, + "autoload": { + "files": [ + "bootstrap.php" + ], + "psr-4": { + "Symfony\\Polyfill\\Ctype\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Gert de Pagter", + "email": "BackEndTea@gmail.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill for ctype functions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "ctype", + "polyfill", + "portable" + ], + "support": { + "source": "https://github.com/symfony/polyfill-ctype/tree/v1.28.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2023-01-26T09:26:14+00:00" + }, + { + "name": "symfony/polyfill-mbstring", + "version": "v1.28.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-mbstring.git", + "reference": "42292d99c55abe617799667f454222c54c60e229" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/42292d99c55abe617799667f454222c54c60e229", + "reference": "42292d99c55abe617799667f454222c54c60e229", + "shasum": "" + }, + "require": { + "php": ">=7.1" + }, + "provide": { + "ext-mbstring": "*" + }, + "suggest": { + "ext-mbstring": "For best performance" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "1.28-dev" + }, + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" + } + }, + "autoload": { + "files": [ + "bootstrap.php" + ], + "psr-4": { + "Symfony\\Polyfill\\Mbstring\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill for the Mbstring extension", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "mbstring", + "polyfill", + "portable", + "shim" + ], + "support": { + "source": "https://github.com/symfony/polyfill-mbstring/tree/v1.28.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2023-07-28T09:04:16+00:00" + }, + { + "name": "twig/twig", + "version": "v3.7.1", + "source": { + "type": "git", + "url": "https://github.com/twigphp/Twig.git", + "reference": "a0ce373a0ca3bf6c64b9e3e2124aca502ba39554" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/twigphp/Twig/zipball/a0ce373a0ca3bf6c64b9e3e2124aca502ba39554", + "reference": "a0ce373a0ca3bf6c64b9e3e2124aca502ba39554", + "shasum": "" + }, + "require": { + "php": ">=7.2.5", + "symfony/polyfill-ctype": "^1.8", + "symfony/polyfill-mbstring": "^1.3" + }, + "require-dev": { + "psr/container": "^1.0|^2.0", + "symfony/phpunit-bridge": "^5.4.9|^6.3" + }, + "type": "library", + "autoload": { + "psr-4": { + "Twig\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com", + "homepage": "http://fabien.potencier.org", + "role": "Lead Developer" + }, + { + "name": "Twig Team", + "role": "Contributors" + }, + { + "name": "Armin Ronacher", + "email": "armin.ronacher@active-4.com", + "role": "Project Founder" + } + ], + "description": "Twig, the flexible, fast, and secure template language for PHP", + "homepage": "https://twig.symfony.com", + "keywords": [ + "templating" + ], + "support": { + "issues": "https://github.com/twigphp/Twig/issues", + "source": "https://github.com/twigphp/Twig/tree/v3.7.1" + }, + "funding": [ + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/twig/twig", + "type": "tidelift" + } + ], + "time": "2023-08-28T11:09:02+00:00" + } + ], + "packages-dev": [], + "aliases": [], + "minimum-stability": "stable", + "stability-flags": [], + "prefer-stable": false, + "prefer-lowest": false, + "platform": { + "ext-pdo": "*", + "ext-dom": "*" + }, + "platform-dev": [], + "plugin-api-version": "2.6.0" +} diff --git a/fluxRSS/model/ArticleModel.php b/fluxRSS/model/ArticleModel.php index 3c7758b..da532e0 100755 --- a/fluxRSS/model/ArticleModel.php +++ b/fluxRSS/model/ArticleModel.php @@ -9,7 +9,7 @@ class ArticleModel { public static function getArticles() : array { - $gwArticle = new ArticleGateway(new Connection('mysql:host = localhost; dbname = dbrorossetto', 'rorossetto', 'tpphp')); + $gwArticle = new ArticleGateway(new Connection('mysql:host = localhost; dbname = dbmapoint2', 'mapoint2', 'Overmax0')); $res = $gwArticle->getAllArticles(); foreach($res as $row){ $tabArticle[] = new metier\Article($row['id'], $row['title'],$row['datePub'],$row['description'],$row['guid'],$row['link'],$row['mediaContent'],$row['provenance'] ); diff --git a/fluxRSS/vendor/composer/installed.php b/fluxRSS/vendor/composer/installed.php index 129d988..7f68105 100755 --- a/fluxRSS/vendor/composer/installed.php +++ b/fluxRSS/vendor/composer/installed.php @@ -3,7 +3,7 @@ 'name' => '__root__', 'pretty_version' => 'dev-master', 'version' => 'dev-master', - 'reference' => '16f4d40996ddc9a288fe157d617bfc6112307096', + 'reference' => '2bfceb3b6db92d6f74d5f4c5e605afb1e089be48', 'type' => 'library', 'install_path' => __DIR__ . '/../../', 'aliases' => array(), @@ -13,7 +13,7 @@ '__root__' => array( 'pretty_version' => 'dev-master', 'version' => 'dev-master', - 'reference' => '16f4d40996ddc9a288fe157d617bfc6112307096', + 'reference' => '2bfceb3b6db92d6f74d5f4c5e605afb1e089be48', 'type' => 'library', 'install_path' => __DIR__ . '/../../', 'aliases' => array(), From 11f90fc96e50d8b596403e5e8a4d4346b1fcc2fe Mon Sep 17 00:00:00 2001 From: "maxime.point2" Date: Wed, 15 Nov 2023 10:06:40 +0100 Subject: [PATCH 06/10] :poop: retour stade fonctionnel --- fluxRSS/DAL/Connection.php | 29 ++++++++++++++++++++++------- fluxRSS/composer.lock | 0 fluxRSS/controleur/Controleur.php | 6 +++--- fluxRSS/index.php | 1 - fluxRSS/model/ArticleModel.php | 4 +--- fluxRSS/model/Parser.php | 6 ++++++ 6 files changed, 32 insertions(+), 14 deletions(-) mode change 100644 => 100755 fluxRSS/composer.lock diff --git a/fluxRSS/DAL/Connection.php b/fluxRSS/DAL/Connection.php index 8be3ee1..dc58de2 100755 --- a/fluxRSS/DAL/Connection.php +++ b/fluxRSS/DAL/Connection.php @@ -2,7 +2,9 @@ namespace DAL; +use Exception; use PDO; +use Twig\Error\Error; class Connection extends PDO { @@ -12,26 +14,39 @@ class Connection extends PDO * @param string $dsn * @param string $username * @param string $password + * @throws Exception */ public function __construct(string $dsn, string $username, string $password) { - parent::__construct($dsn, $username, $password); - $this->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); + try{ + parent::__construct($dsn, $username, $password); + $this->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); + }catch (\PDOException $e){ + throw new Exception("PDO error con"); + } + catch (Error $e){ + throw new Error("Error PDO"); + } } /** * @param string $query to execute * @param array $parameters to bind * @return bool Returns `true` on success, `false` otherwise + * @throws Exception */ public function executeQuery(string $query, array $parameters = []): bool { - $this->stmt = parent::prepare($query); - foreach ($parameters as $name => $value) { - $this->stmt->bindValue($name, $value[0], $value[1]); - } + try{ + $this->stmt = parent::prepare($query); + foreach ($parameters as $name => $value) { + $this->stmt->bindValue($name, $value[0], $value[1]); + } - return $this->stmt->execute(); + return $this->stmt->execute(); + }catch (\PDOException $e){ + throw new Exception("PDO error"); + } } /** diff --git a/fluxRSS/composer.lock b/fluxRSS/composer.lock old mode 100644 new mode 100755 diff --git a/fluxRSS/controleur/Controleur.php b/fluxRSS/controleur/Controleur.php index 5fbf48a..86ef927 100755 --- a/fluxRSS/controleur/Controleur.php +++ b/fluxRSS/controleur/Controleur.php @@ -51,12 +51,12 @@ class Controleur public function Reinit() { global $twig; // nécessaire pour utiliser variables globales - $dVue = [ 'nom' => '', 'age' => 0, + 'data' => ArticleModel::getArticles() ]; - echo $twig->render('vuephp1.html', [ + echo $twig->render('listArticle.html', [ 'dVue' => $dVue ]); } @@ -78,7 +78,7 @@ class Controleur $dVue = [ 'nom' => $nom, 'age' => $age, - 'data' => $data, + //'data' => $data, ]; echo $twig->render('vuephp1.html', ['dVue' => $dVue, 'dVueEreur' => $dVueEreur]); diff --git a/fluxRSS/index.php b/fluxRSS/index.php index 0e8dfd4..fd16b5b 100755 --- a/fluxRSS/index.php +++ b/fluxRSS/index.php @@ -1,5 +1,4 @@ getAllArticles(); foreach($res as $row){ diff --git a/fluxRSS/model/Parser.php b/fluxRSS/model/Parser.php index 6e61732..a965433 100755 --- a/fluxRSS/model/Parser.php +++ b/fluxRSS/model/Parser.php @@ -49,6 +49,9 @@ class Parser } + /** + * @throws Exception + */ public function parseAll($fluxes){ foreach ($fluxes as $flux){ $tabArticles[] =$this->parseArticles($flux); @@ -56,6 +59,9 @@ class Parser return $tabArticles; } + /** + * @throws Exception + */ public function addAllArticles(){ $allFlux = $this->fluxGateway->findAllFlux(); From ad56f74a69d8ff3b81d0d287531c37da6ef273ab Mon Sep 17 00:00:00 2001 From: mapoint2 Date: Wed, 15 Nov 2023 10:45:35 +0100 Subject: [PATCH 07/10] :poop: retour stade fonctionnel --- fluxRSS/metier/Article.php | 15 ++++++++++----- fluxRSS/model/ArticleModel.php | 16 +++++++++------- fluxRSS/templates/listArticle.html | 2 +- 3 files changed, 20 insertions(+), 13 deletions(-) diff --git a/fluxRSS/metier/Article.php b/fluxRSS/metier/Article.php index 50a6370..809c3d1 100755 --- a/fluxRSS/metier/Article.php +++ b/fluxRSS/metier/Article.php @@ -4,26 +4,26 @@ namespace metier; class Article { - private int $id; + private string $id; private string $title; private string $date; private string $description; private string $guid; private string $link; private string $mediaContent; - private int $provenance; + private string $provenance; /** - * @param int $id + * @param string $id * @param string $title * @param string $date * @param string $description * @param string $guid * @param string $link * @param string $mediaContent - * @param int $provenance + * @param string $provenance */ - public function __construct(int $id, string $title, string $date, string $description, string $guid, string $link, string $mediaContent, int $provenance) + public function __construct(string $id, string $title, string $date, string $description, string $guid, string $link, string $mediaContent, string $provenance) { $this->id = $id; $this->title = $title; @@ -115,4 +115,9 @@ class Article $this->provenance = $provenance; } + public function __toString(): string + { + return $this->title . $this->date . $this->description; + } + } \ No newline at end of file diff --git a/fluxRSS/model/ArticleModel.php b/fluxRSS/model/ArticleModel.php index 4134ff9..d8e24e8 100755 --- a/fluxRSS/model/ArticleModel.php +++ b/fluxRSS/model/ArticleModel.php @@ -2,21 +2,23 @@ namespace model; -use DAL\{AdminGateway, ArticleGateway, Connection}; -use metier; +use DAL\{ArticleGateway, Connection}; +use Exception; +use metier\Article; class ArticleModel { + /** + * @throws Exception + */ public static function getArticles() : array { - $gwArticle = new ArticleGateway(new Connection('mysql:host=londres.uca.local ; dbname=dbrorossetto', 'rorossetto', 'tpphp')); + $gwArticle = new ArticleGateway(new Connection('mysql:host=londres.uca.local;dbname=dbrorossetto', 'rorossetto', 'tpphp')); $tabArticle = array(); $res = $gwArticle->getAllArticles(); foreach($res as $row){ - $tabArticle[] = new metier\Article($row['id'], $row['title'],$row['datePub'],$row['description'],$row['guid'],$row['link'],$row['mediaContent'],$row['provenance'] ); + $tabArticle[] = new Article($row['id'], $row['title'],$row['datePub'],$row['description'],$row['guid'],$row['link'],$row['mediaContent'],$row['provenance'] ); } return $tabArticle; } -} - -var_dump(ArticleModel::getArticles()); \ No newline at end of file +} \ No newline at end of file diff --git a/fluxRSS/templates/listArticle.html b/fluxRSS/templates/listArticle.html index c3dbaa6..0852fc3 100755 --- a/fluxRSS/templates/listArticle.html +++ b/fluxRSS/templates/listArticle.html @@ -5,7 +5,7 @@ All Articles -{% for value in tabArticle.Article %} +{% for value in dVue.data %}

{{value}}

{% endfor %} From 88dedbfee3a8ff4b02ebab44faf175878f9dcdfb Mon Sep 17 00:00:00 2001 From: point Date: Wed, 15 Nov 2023 10:51:31 +0100 Subject: [PATCH 08/10] modif composer --- .idea/Php_RSS.iml | 1 + .idea/sqldialects.xml | 6 ++++++ Main.svg | 1 + fluxRSS/vendor/composer/autoload_psr4.php | 1 + fluxRSS/vendor/composer/autoload_static.php | 5 +++++ fluxRSS/vendor/composer/installed.php | 4 ++-- testDB.php.txt | 8 ++++++++ use case diagramm.mdj | 1 + 8 files changed, 25 insertions(+), 2 deletions(-) create mode 100644 .idea/sqldialects.xml create mode 100644 Main.svg create mode 100644 testDB.php.txt create mode 100644 use case diagramm.mdj diff --git a/.idea/Php_RSS.iml b/.idea/Php_RSS.iml index 996df65..606a380 100755 --- a/.idea/Php_RSS.iml +++ b/.idea/Php_RSS.iml @@ -9,6 +9,7 @@ + diff --git a/.idea/sqldialects.xml b/.idea/sqldialects.xml new file mode 100644 index 0000000..ff83d34 --- /dev/null +++ b/.idea/sqldialects.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/Main.svg b/Main.svg new file mode 100644 index 0000000..00e9d72 --- /dev/null +++ b/Main.svg @@ -0,0 +1 @@ +FluxArticleFluxGatewayArticleGatwayFluxModelArticleModelControleurValidatorConnectionAdminParser \ No newline at end of file diff --git a/fluxRSS/vendor/composer/autoload_psr4.php b/fluxRSS/vendor/composer/autoload_psr4.php index e908ee3..1002bc1 100755 --- a/fluxRSS/vendor/composer/autoload_psr4.php +++ b/fluxRSS/vendor/composer/autoload_psr4.php @@ -7,6 +7,7 @@ $baseDir = dirname($vendorDir); return array( 'model\\' => array($baseDir . '/model'), + 'metier\\' => array($baseDir . '/metier'), 'controleur\\' => array($baseDir . '/controleur'), 'config\\' => array($baseDir . '/config'), 'Twig\\' => array($vendorDir . '/twig/twig/src'), diff --git a/fluxRSS/vendor/composer/autoload_static.php b/fluxRSS/vendor/composer/autoload_static.php index 716819b..868aa69 100755 --- a/fluxRSS/vendor/composer/autoload_static.php +++ b/fluxRSS/vendor/composer/autoload_static.php @@ -15,6 +15,7 @@ class ComposerStaticInita6287a55fe354aae4af95d1e4395c915 'm' => array ( 'model\\' => 6, + 'metier\\' => 7, ), 'c' => array ( @@ -41,6 +42,10 @@ class ComposerStaticInita6287a55fe354aae4af95d1e4395c915 array ( 0 => __DIR__ . '/../..' . '/model', ), + 'metier\\' => + array ( + 0 => __DIR__ . '/../..' . '/metier', + ), 'controleur\\' => array ( 0 => __DIR__ . '/../..' . '/controleur', diff --git a/fluxRSS/vendor/composer/installed.php b/fluxRSS/vendor/composer/installed.php index 7f68105..f85d7f7 100755 --- a/fluxRSS/vendor/composer/installed.php +++ b/fluxRSS/vendor/composer/installed.php @@ -3,7 +3,7 @@ 'name' => '__root__', 'pretty_version' => 'dev-master', 'version' => 'dev-master', - 'reference' => '2bfceb3b6db92d6f74d5f4c5e605afb1e089be48', + 'reference' => 'ad56f74a69d8ff3b81d0d287531c37da6ef273ab', 'type' => 'library', 'install_path' => __DIR__ . '/../../', 'aliases' => array(), @@ -13,7 +13,7 @@ '__root__' => array( 'pretty_version' => 'dev-master', 'version' => 'dev-master', - 'reference' => '2bfceb3b6db92d6f74d5f4c5e605afb1e089be48', + 'reference' => 'ad56f74a69d8ff3b81d0d287531c37da6ef273ab', 'type' => 'library', 'install_path' => __DIR__ . '/../../', 'aliases' => array(), diff --git a/testDB.php.txt b/testDB.php.txt new file mode 100644 index 0000000..8ecfed6 --- /dev/null +++ b/testDB.php.txt @@ -0,0 +1,8 @@ +https://perso.limos.fr/~sesalva/files/php/Tp2A/tp1/projets.html +parser add article to the bd +X article par page lors de recherche +admin peut ajouter/suppr/modif flux rss, modif nb d'article par page + +flux rss = fichier xml qui contient news +parser doit parser le flux rss pour créer un article +php inclut parser xml diff --git a/use case diagramm.mdj b/use case diagramm.mdj new file mode 100644 index 0000000..8e08235 --- /dev/null +++ b/use case diagramm.mdj @@ -0,0 +1 @@ +{"_type":"Project","_id":"AAAAAAFF+h6SjaM2Hec=","name":"Untitled","ownedElements":[{"_type":"UMLModel","_id":"AAAAAAFF+qBWK6M3Z8Y=","_parent":{"$ref":"AAAAAAFF+h6SjaM2Hec="},"name":"Model","ownedElements":[{"_type":"UMLClassDiagram","_id":"AAAAAAFF+qBtyKM79qY=","_parent":{"$ref":"AAAAAAFF+qBWK6M3Z8Y="},"name":"Main","defaultDiagram":true,"ownedViews":[{"_type":"UMLClassView","_id":"AAAAAAGLr4ofbOxmReQ=","_parent":{"$ref":"AAAAAAFF+qBtyKM79qY="},"model":{"$ref":"AAAAAAGLr4ofbOxksOk="},"subViews":[{"_type":"UMLNameCompartmentView","_id":"AAAAAAGLr4ofbOxnEXE=","_parent":{"$ref":"AAAAAAGLr4ofbOxmReQ="},"model":{"$ref":"AAAAAAGLr4ofbOxksOk="},"subViews":[{"_type":"LabelView","_id":"AAAAAAGLr4ofbOxo7Ic=","_parent":{"$ref":"AAAAAAGLr4ofbOxnEXE="},"visible":false,"font":"Arial;13;0","left":208,"top":-352,"height":13},{"_type":"LabelView","_id":"AAAAAAGLr4ofbexpad0=","_parent":{"$ref":"AAAAAAGLr4ofbOxnEXE="},"font":"Arial;13;1","left":381,"top":111,"width":42.919921875,"height":13,"text":"Flux"},{"_type":"LabelView","_id":"AAAAAAGLr4ofbexqK8Y=","_parent":{"$ref":"AAAAAAGLr4ofbOxnEXE="},"visible":false,"font":"Arial;13;0","left":208,"top":-352,"width":73.67724609375,"height":13,"text":"(from Model)"},{"_type":"LabelView","_id":"AAAAAAGLr4ofbexrTbw=","_parent":{"$ref":"AAAAAAGLr4ofbOxnEXE="},"visible":false,"font":"Arial;13;0","left":208,"top":-352,"height":13,"horizontalAlignment":1}],"font":"Arial;13;0","left":376,"top":104,"width":52.919921875,"height":25,"stereotypeLabel":{"$ref":"AAAAAAGLr4ofbOxo7Ic="},"nameLabel":{"$ref":"AAAAAAGLr4ofbexpad0="},"namespaceLabel":{"$ref":"AAAAAAGLr4ofbexqK8Y="},"propertyLabel":{"$ref":"AAAAAAGLr4ofbexrTbw="}},{"_type":"UMLAttributeCompartmentView","_id":"AAAAAAGLr4ofbexsXL4=","_parent":{"$ref":"AAAAAAGLr4ofbOxmReQ="},"model":{"$ref":"AAAAAAGLr4ofbOxksOk="},"font":"Arial;13;0","left":376,"top":129,"width":52.919921875,"height":10},{"_type":"UMLOperationCompartmentView","_id":"AAAAAAGLr4ofbexthdY=","_parent":{"$ref":"AAAAAAGLr4ofbOxmReQ="},"model":{"$ref":"AAAAAAGLr4ofbOxksOk="},"font":"Arial;13;0","left":376,"top":139,"width":52.919921875,"height":10},{"_type":"UMLReceptionCompartmentView","_id":"AAAAAAGLr4ofbexuRSI=","_parent":{"$ref":"AAAAAAGLr4ofbOxmReQ="},"model":{"$ref":"AAAAAAGLr4ofbOxksOk="},"visible":false,"font":"Arial;13;0","left":104,"top":-176,"width":10,"height":10},{"_type":"UMLTemplateParameterCompartmentView","_id":"AAAAAAGLr4ofbexvlY0=","_parent":{"$ref":"AAAAAAGLr4ofbOxmReQ="},"model":{"$ref":"AAAAAAGLr4ofbOxksOk="},"visible":false,"font":"Arial;13;0","left":104,"top":-176,"width":10,"height":10}],"font":"Arial;13;0","containerChangeable":true,"left":376,"top":104,"width":51.919921875,"height":45,"nameCompartment":{"$ref":"AAAAAAGLr4ofbOxnEXE="},"attributeCompartment":{"$ref":"AAAAAAGLr4ofbexsXL4="},"operationCompartment":{"$ref":"AAAAAAGLr4ofbexthdY="},"receptionCompartment":{"$ref":"AAAAAAGLr4ofbexuRSI="},"templateParameterCompartment":{"$ref":"AAAAAAGLr4ofbexvlY0="}},{"_type":"UMLClassView","_id":"AAAAAAGLr4qOjeyQZgM=","_parent":{"$ref":"AAAAAAFF+qBtyKM79qY="},"model":{"$ref":"AAAAAAGLr4qOjeyOp8g="},"subViews":[{"_type":"UMLNameCompartmentView","_id":"AAAAAAGLr4qOjeyRo7I=","_parent":{"$ref":"AAAAAAGLr4qOjeyQZgM="},"model":{"$ref":"AAAAAAGLr4qOjeyOp8g="},"subViews":[{"_type":"LabelView","_id":"AAAAAAGLr4qOjeySV18=","_parent":{"$ref":"AAAAAAGLr4qOjeyRo7I="},"visible":false,"font":"Arial;13;0","left":384,"top":208,"height":13},{"_type":"LabelView","_id":"AAAAAAGLr4qOjuyT3tQ=","_parent":{"$ref":"AAAAAAGLr4qOjeyRo7I="},"font":"Arial;13;1","left":349,"top":511,"width":42.919921875,"height":13,"text":"Article"},{"_type":"LabelView","_id":"AAAAAAGLr4qOjuyUpo0=","_parent":{"$ref":"AAAAAAGLr4qOjeyRo7I="},"visible":false,"font":"Arial;13;0","left":384,"top":208,"width":73.67724609375,"height":13,"text":"(from Model)"},{"_type":"LabelView","_id":"AAAAAAGLr4qOjuyVAb4=","_parent":{"$ref":"AAAAAAGLr4qOjeyRo7I="},"visible":false,"font":"Arial;13;0","left":384,"top":208,"height":13,"horizontalAlignment":1}],"font":"Arial;13;0","left":344,"top":504,"width":52.919921875,"height":25,"stereotypeLabel":{"$ref":"AAAAAAGLr4qOjeySV18="},"nameLabel":{"$ref":"AAAAAAGLr4qOjuyT3tQ="},"namespaceLabel":{"$ref":"AAAAAAGLr4qOjuyUpo0="},"propertyLabel":{"$ref":"AAAAAAGLr4qOjuyVAb4="}},{"_type":"UMLAttributeCompartmentView","_id":"AAAAAAGLr4qOjuyWqy0=","_parent":{"$ref":"AAAAAAGLr4qOjeyQZgM="},"model":{"$ref":"AAAAAAGLr4qOjeyOp8g="},"font":"Arial;13;0","left":344,"top":529,"width":52.919921875,"height":10},{"_type":"UMLOperationCompartmentView","_id":"AAAAAAGLr4qOjuyXm+4=","_parent":{"$ref":"AAAAAAGLr4qOjeyQZgM="},"model":{"$ref":"AAAAAAGLr4qOjeyOp8g="},"font":"Arial;13;0","left":344,"top":539,"width":52.919921875,"height":10},{"_type":"UMLReceptionCompartmentView","_id":"AAAAAAGLr4qOjuyY+is=","_parent":{"$ref":"AAAAAAGLr4qOjeyQZgM="},"model":{"$ref":"AAAAAAGLr4qOjeyOp8g="},"visible":false,"font":"Arial;13;0","left":192,"top":104,"width":10,"height":10},{"_type":"UMLTemplateParameterCompartmentView","_id":"AAAAAAGLr4qOjuyZTv4=","_parent":{"$ref":"AAAAAAGLr4qOjeyQZgM="},"model":{"$ref":"AAAAAAGLr4qOjeyOp8g="},"visible":false,"font":"Arial;13;0","left":192,"top":104,"width":10,"height":10}],"font":"Arial;13;0","containerChangeable":true,"left":344,"top":504,"width":51.919921875,"height":45,"nameCompartment":{"$ref":"AAAAAAGLr4qOjeyRo7I="},"attributeCompartment":{"$ref":"AAAAAAGLr4qOjuyWqy0="},"operationCompartment":{"$ref":"AAAAAAGLr4qOjuyXm+4="},"receptionCompartment":{"$ref":"AAAAAAGLr4qOjuyY+is="},"templateParameterCompartment":{"$ref":"AAAAAAGLr4qOjuyZTv4="}},{"_type":"UMLClassView","_id":"AAAAAAGLr4sA9ey+QQ0=","_parent":{"$ref":"AAAAAAFF+qBtyKM79qY="},"model":{"$ref":"AAAAAAGLr4sA9Oy89r8="},"subViews":[{"_type":"UMLNameCompartmentView","_id":"AAAAAAGLr4sA9uy/1nQ=","_parent":{"$ref":"AAAAAAGLr4sA9ey+QQ0="},"model":{"$ref":"AAAAAAGLr4sA9Oy89r8="},"subViews":[{"_type":"LabelView","_id":"AAAAAAGLr4sA9uzAc4U=","_parent":{"$ref":"AAAAAAGLr4sA9uy/1nQ="},"visible":false,"font":"Arial;13;0","left":-624,"top":96,"height":13},{"_type":"LabelView","_id":"AAAAAAGLr4sA9uzBisk=","_parent":{"$ref":"AAAAAAGLr4sA9uy/1nQ="},"font":"Arial;13;1","left":157,"top":207,"width":81.1962890625,"height":13,"text":"FluxGateway"},{"_type":"LabelView","_id":"AAAAAAGLr4sA9uzCjqM=","_parent":{"$ref":"AAAAAAGLr4sA9uy/1nQ="},"visible":false,"font":"Arial;13;0","left":-624,"top":96,"width":73.67724609375,"height":13,"text":"(from Model)"},{"_type":"LabelView","_id":"AAAAAAGLr4sA9uzDGCM=","_parent":{"$ref":"AAAAAAGLr4sA9uy/1nQ="},"visible":false,"font":"Arial;13;0","left":-624,"top":96,"height":13,"horizontalAlignment":1}],"font":"Arial;13;0","left":152,"top":200,"width":91.1962890625,"height":25,"stereotypeLabel":{"$ref":"AAAAAAGLr4sA9uzAc4U="},"nameLabel":{"$ref":"AAAAAAGLr4sA9uzBisk="},"namespaceLabel":{"$ref":"AAAAAAGLr4sA9uzCjqM="},"propertyLabel":{"$ref":"AAAAAAGLr4sA9uzDGCM="}},{"_type":"UMLAttributeCompartmentView","_id":"AAAAAAGLr4sA9uzEqcU=","_parent":{"$ref":"AAAAAAGLr4sA9ey+QQ0="},"model":{"$ref":"AAAAAAGLr4sA9Oy89r8="},"font":"Arial;13;0","left":152,"top":225,"width":91.1962890625,"height":10},{"_type":"UMLOperationCompartmentView","_id":"AAAAAAGLr4sA9uzF6AU=","_parent":{"$ref":"AAAAAAGLr4sA9ey+QQ0="},"model":{"$ref":"AAAAAAGLr4sA9Oy89r8="},"font":"Arial;13;0","left":152,"top":235,"width":91.1962890625,"height":10},{"_type":"UMLReceptionCompartmentView","_id":"AAAAAAGLr4sA9uzGbC0=","_parent":{"$ref":"AAAAAAGLr4sA9ey+QQ0="},"model":{"$ref":"AAAAAAGLr4sA9Oy89r8="},"visible":false,"font":"Arial;13;0","left":-312,"top":48,"width":10,"height":10},{"_type":"UMLTemplateParameterCompartmentView","_id":"AAAAAAGLr4sA9uzHIfA=","_parent":{"$ref":"AAAAAAGLr4sA9ey+QQ0="},"model":{"$ref":"AAAAAAGLr4sA9Oy89r8="},"visible":false,"font":"Arial;13;0","left":-312,"top":48,"width":10,"height":10}],"font":"Arial;13;0","containerChangeable":true,"left":152,"top":200,"width":90.1962890625,"height":45,"nameCompartment":{"$ref":"AAAAAAGLr4sA9uy/1nQ="},"attributeCompartment":{"$ref":"AAAAAAGLr4sA9uzEqcU="},"operationCompartment":{"$ref":"AAAAAAGLr4sA9uzF6AU="},"receptionCompartment":{"$ref":"AAAAAAGLr4sA9uzGbC0="},"templateParameterCompartment":{"$ref":"AAAAAAGLr4sA9uzHIfA="}},{"_type":"UMLClassView","_id":"AAAAAAGLr4tHS+zpelA=","_parent":{"$ref":"AAAAAAFF+qBtyKM79qY="},"model":{"$ref":"AAAAAAGLr4tHS+znCJg="},"subViews":[{"_type":"UMLNameCompartmentView","_id":"AAAAAAGLr4tHTOzqy1s=","_parent":{"$ref":"AAAAAAGLr4tHS+zpelA="},"model":{"$ref":"AAAAAAGLr4tHS+znCJg="},"subViews":[{"_type":"LabelView","_id":"AAAAAAGLr4tHTOzrDj8=","_parent":{"$ref":"AAAAAAGLr4tHTOzqy1s="},"visible":false,"font":"Arial;13;0","left":-384,"top":-32,"height":13},{"_type":"LabelView","_id":"AAAAAAGLr4tHTOzsG+8=","_parent":{"$ref":"AAAAAAGLr4tHTOzqy1s="},"font":"Arial;13;1","left":141,"top":431,"width":87.70263671875,"height":13,"text":"ArticleGatway"},{"_type":"LabelView","_id":"AAAAAAGLr4tHTOztuq4=","_parent":{"$ref":"AAAAAAGLr4tHTOzqy1s="},"visible":false,"font":"Arial;13;0","left":-384,"top":-32,"width":73.67724609375,"height":13,"text":"(from Model)"},{"_type":"LabelView","_id":"AAAAAAGLr4tHTOzuOJo=","_parent":{"$ref":"AAAAAAGLr4tHTOzqy1s="},"visible":false,"font":"Arial;13;0","left":-384,"top":-32,"height":13,"horizontalAlignment":1}],"font":"Arial;13;0","left":136,"top":424,"width":97.70263671875,"height":25,"stereotypeLabel":{"$ref":"AAAAAAGLr4tHTOzrDj8="},"nameLabel":{"$ref":"AAAAAAGLr4tHTOzsG+8="},"namespaceLabel":{"$ref":"AAAAAAGLr4tHTOztuq4="},"propertyLabel":{"$ref":"AAAAAAGLr4tHTOzuOJo="}},{"_type":"UMLAttributeCompartmentView","_id":"AAAAAAGLr4tHTOzvss4=","_parent":{"$ref":"AAAAAAGLr4tHS+zpelA="},"model":{"$ref":"AAAAAAGLr4tHS+znCJg="},"font":"Arial;13;0","left":136,"top":449,"width":97.70263671875,"height":10},{"_type":"UMLOperationCompartmentView","_id":"AAAAAAGLr4tHTOzw/2c=","_parent":{"$ref":"AAAAAAGLr4tHS+zpelA="},"model":{"$ref":"AAAAAAGLr4tHS+znCJg="},"font":"Arial;13;0","left":136,"top":459,"width":97.70263671875,"height":10},{"_type":"UMLReceptionCompartmentView","_id":"AAAAAAGLr4tHTOzxkrk=","_parent":{"$ref":"AAAAAAGLr4tHS+zpelA="},"model":{"$ref":"AAAAAAGLr4tHS+znCJg="},"visible":false,"font":"Arial;13;0","left":-192,"top":-16,"width":10,"height":10},{"_type":"UMLTemplateParameterCompartmentView","_id":"AAAAAAGLr4tHTOzykco=","_parent":{"$ref":"AAAAAAGLr4tHS+zpelA="},"model":{"$ref":"AAAAAAGLr4tHS+znCJg="},"visible":false,"font":"Arial;13;0","left":-192,"top":-16,"width":10,"height":10}],"font":"Arial;13;0","containerChangeable":true,"left":136,"top":424,"width":96.70263671875,"height":45,"nameCompartment":{"$ref":"AAAAAAGLr4tHTOzqy1s="},"attributeCompartment":{"$ref":"AAAAAAGLr4tHTOzvss4="},"operationCompartment":{"$ref":"AAAAAAGLr4tHTOzw/2c="},"receptionCompartment":{"$ref":"AAAAAAGLr4tHTOzxkrk="},"templateParameterCompartment":{"$ref":"AAAAAAGLr4tHTOzykco="}},{"_type":"UMLClassView","_id":"AAAAAAGLr4t9Fu0U6JQ=","_parent":{"$ref":"AAAAAAFF+qBtyKM79qY="},"model":{"$ref":"AAAAAAGLr4t9Fe0SDHU="},"subViews":[{"_type":"UMLNameCompartmentView","_id":"AAAAAAGLr4t9Fu0VKg0=","_parent":{"$ref":"AAAAAAGLr4t9Fu0U6JQ="},"model":{"$ref":"AAAAAAGLr4t9Fe0SDHU="},"subViews":[{"_type":"LabelView","_id":"AAAAAAGLr4t9Fu0WQGc=","_parent":{"$ref":"AAAAAAGLr4t9Fu0VKg0="},"visible":false,"font":"Arial;13;0","left":-656,"top":16,"height":13},{"_type":"LabelView","_id":"AAAAAAGLr4t9Fu0XJEk=","_parent":{"$ref":"AAAAAAGLr4t9Fu0VKg0="},"font":"Arial;13;1","left":349,"top":207,"width":65.2763671875,"height":13,"text":"FluxModel"},{"_type":"LabelView","_id":"AAAAAAGLr4t9Fu0YMXA=","_parent":{"$ref":"AAAAAAGLr4t9Fu0VKg0="},"visible":false,"font":"Arial;13;0","left":-656,"top":16,"width":73.67724609375,"height":13,"text":"(from Model)"},{"_type":"LabelView","_id":"AAAAAAGLr4t9Fu0ZmDM=","_parent":{"$ref":"AAAAAAGLr4t9Fu0VKg0="},"visible":false,"font":"Arial;13;0","left":-656,"top":16,"height":13,"horizontalAlignment":1}],"font":"Arial;13;0","left":344,"top":200,"width":75.2763671875,"height":25,"stereotypeLabel":{"$ref":"AAAAAAGLr4t9Fu0WQGc="},"nameLabel":{"$ref":"AAAAAAGLr4t9Fu0XJEk="},"namespaceLabel":{"$ref":"AAAAAAGLr4t9Fu0YMXA="},"propertyLabel":{"$ref":"AAAAAAGLr4t9Fu0ZmDM="}},{"_type":"UMLAttributeCompartmentView","_id":"AAAAAAGLr4t9Fu0aqZ4=","_parent":{"$ref":"AAAAAAGLr4t9Fu0U6JQ="},"model":{"$ref":"AAAAAAGLr4t9Fe0SDHU="},"font":"Arial;13;0","left":344,"top":225,"width":75.2763671875,"height":10},{"_type":"UMLOperationCompartmentView","_id":"AAAAAAGLr4t9Fu0bKIw=","_parent":{"$ref":"AAAAAAGLr4t9Fu0U6JQ="},"model":{"$ref":"AAAAAAGLr4t9Fe0SDHU="},"font":"Arial;13;0","left":344,"top":235,"width":75.2763671875,"height":10},{"_type":"UMLReceptionCompartmentView","_id":"AAAAAAGLr4t9Fu0cGg0=","_parent":{"$ref":"AAAAAAGLr4t9Fu0U6JQ="},"model":{"$ref":"AAAAAAGLr4t9Fe0SDHU="},"visible":false,"font":"Arial;13;0","left":-328,"top":8,"width":10,"height":10},{"_type":"UMLTemplateParameterCompartmentView","_id":"AAAAAAGLr4t9Fu0dZuc=","_parent":{"$ref":"AAAAAAGLr4t9Fu0U6JQ="},"model":{"$ref":"AAAAAAGLr4t9Fe0SDHU="},"visible":false,"font":"Arial;13;0","left":-328,"top":8,"width":10,"height":10}],"font":"Arial;13;0","containerChangeable":true,"left":344,"top":200,"width":74.2763671875,"height":45,"nameCompartment":{"$ref":"AAAAAAGLr4t9Fu0VKg0="},"attributeCompartment":{"$ref":"AAAAAAGLr4t9Fu0aqZ4="},"operationCompartment":{"$ref":"AAAAAAGLr4t9Fu0bKIw="},"receptionCompartment":{"$ref":"AAAAAAGLr4t9Fu0cGg0="},"templateParameterCompartment":{"$ref":"AAAAAAGLr4t9Fu0dZuc="}},{"_type":"UMLClassView","_id":"AAAAAAGLr4u2wO0/BMQ=","_parent":{"$ref":"AAAAAAFF+qBtyKM79qY="},"model":{"$ref":"AAAAAAGLr4u2wO09x0k="},"subViews":[{"_type":"UMLNameCompartmentView","_id":"AAAAAAGLr4u2wO1Ajb0=","_parent":{"$ref":"AAAAAAGLr4u2wO0/BMQ="},"model":{"$ref":"AAAAAAGLr4u2wO09x0k="},"subViews":[{"_type":"LabelView","_id":"AAAAAAGLr4u2we1BZIA=","_parent":{"$ref":"AAAAAAGLr4u2wO1Ajb0="},"visible":false,"font":"Arial;13;0","left":-608,"top":144,"height":13},{"_type":"LabelView","_id":"AAAAAAGLr4u2we1Ch7U=","_parent":{"$ref":"AAAAAAGLr4u2wO1Ajb0="},"font":"Arial;13;1","left":333,"top":423,"width":79.0126953125,"height":13,"text":"ArticleModel"},{"_type":"LabelView","_id":"AAAAAAGLr4u2we1DVWc=","_parent":{"$ref":"AAAAAAGLr4u2wO1Ajb0="},"visible":false,"font":"Arial;13;0","left":-608,"top":144,"width":73.67724609375,"height":13,"text":"(from Model)"},{"_type":"LabelView","_id":"AAAAAAGLr4u2we1EC7I=","_parent":{"$ref":"AAAAAAGLr4u2wO1Ajb0="},"visible":false,"font":"Arial;13;0","left":-608,"top":144,"height":13,"horizontalAlignment":1}],"font":"Arial;13;0","left":328,"top":416,"width":89.0126953125,"height":25,"stereotypeLabel":{"$ref":"AAAAAAGLr4u2we1BZIA="},"nameLabel":{"$ref":"AAAAAAGLr4u2we1Ch7U="},"namespaceLabel":{"$ref":"AAAAAAGLr4u2we1DVWc="},"propertyLabel":{"$ref":"AAAAAAGLr4u2we1EC7I="}},{"_type":"UMLAttributeCompartmentView","_id":"AAAAAAGLr4u2we1FDjs=","_parent":{"$ref":"AAAAAAGLr4u2wO0/BMQ="},"model":{"$ref":"AAAAAAGLr4u2wO09x0k="},"font":"Arial;13;0","left":328,"top":441,"width":89.0126953125,"height":10},{"_type":"UMLOperationCompartmentView","_id":"AAAAAAGLr4u2we1GOeQ=","_parent":{"$ref":"AAAAAAGLr4u2wO0/BMQ="},"model":{"$ref":"AAAAAAGLr4u2wO09x0k="},"font":"Arial;13;0","left":328,"top":451,"width":89.0126953125,"height":10},{"_type":"UMLReceptionCompartmentView","_id":"AAAAAAGLr4u2we1Hq9Q=","_parent":{"$ref":"AAAAAAGLr4u2wO0/BMQ="},"model":{"$ref":"AAAAAAGLr4u2wO09x0k="},"visible":false,"font":"Arial;13;0","left":-304,"top":72,"width":10,"height":10},{"_type":"UMLTemplateParameterCompartmentView","_id":"AAAAAAGLr4u2we1IQSw=","_parent":{"$ref":"AAAAAAGLr4u2wO0/BMQ="},"model":{"$ref":"AAAAAAGLr4u2wO09x0k="},"visible":false,"font":"Arial;13;0","left":-304,"top":72,"width":10,"height":10}],"font":"Arial;13;0","containerChangeable":true,"left":328,"top":416,"width":88.0126953125,"height":45,"nameCompartment":{"$ref":"AAAAAAGLr4u2wO1Ajb0="},"attributeCompartment":{"$ref":"AAAAAAGLr4u2we1FDjs="},"operationCompartment":{"$ref":"AAAAAAGLr4u2we1GOeQ="},"receptionCompartment":{"$ref":"AAAAAAGLr4u2we1Hq9Q="},"templateParameterCompartment":{"$ref":"AAAAAAGLr4u2we1IQSw="}},{"_type":"UMLClassView","_id":"AAAAAAGLr4w7e+1w0I8=","_parent":{"$ref":"AAAAAAFF+qBtyKM79qY="},"model":{"$ref":"AAAAAAGLr4w7eu1u8Gg="},"subViews":[{"_type":"UMLNameCompartmentView","_id":"AAAAAAGLr4w7e+1x1J4=","_parent":{"$ref":"AAAAAAGLr4w7e+1w0I8="},"model":{"$ref":"AAAAAAGLr4w7eu1u8Gg="},"subViews":[{"_type":"LabelView","_id":"AAAAAAGLr4w7e+1yxNg=","_parent":{"$ref":"AAAAAAGLr4w7e+1x1J4="},"visible":false,"font":"Arial;13;0","left":432,"top":496,"height":13},{"_type":"LabelView","_id":"AAAAAAGLr4w7e+1zbkk=","_parent":{"$ref":"AAAAAAGLr4w7e+1x1J4="},"font":"Arial;13;1","left":573,"top":328,"width":67.44091796875,"height":13,"text":"Controleur"},{"_type":"LabelView","_id":"AAAAAAGLr4w7e+10o0Q=","_parent":{"$ref":"AAAAAAGLr4w7e+1x1J4="},"visible":false,"font":"Arial;13;0","left":432,"top":496,"width":73.67724609375,"height":13,"text":"(from Model)"},{"_type":"LabelView","_id":"AAAAAAGLr4w7e+11GwA=","_parent":{"$ref":"AAAAAAGLr4w7e+1x1J4="},"visible":false,"font":"Arial;13;0","left":432,"top":496,"height":13,"horizontalAlignment":1}],"font":"Arial;13;0","left":568,"top":321,"width":77.44091796875,"height":25,"stereotypeLabel":{"$ref":"AAAAAAGLr4w7e+1yxNg="},"nameLabel":{"$ref":"AAAAAAGLr4w7e+1zbkk="},"namespaceLabel":{"$ref":"AAAAAAGLr4w7e+10o0Q="},"propertyLabel":{"$ref":"AAAAAAGLr4w7e+11GwA="}},{"_type":"UMLAttributeCompartmentView","_id":"AAAAAAGLr4w7e+12qNs=","_parent":{"$ref":"AAAAAAGLr4w7e+1w0I8="},"model":{"$ref":"AAAAAAGLr4w7eu1u8Gg="},"font":"Arial;13;0","left":568,"top":346,"width":77.44091796875,"height":10},{"_type":"UMLOperationCompartmentView","_id":"AAAAAAGLr4w7e+13c7Y=","_parent":{"$ref":"AAAAAAGLr4w7e+1w0I8="},"model":{"$ref":"AAAAAAGLr4w7eu1u8Gg="},"font":"Arial;13;0","left":568,"top":356,"width":77.44091796875,"height":10},{"_type":"UMLReceptionCompartmentView","_id":"AAAAAAGLr4w7e+145ik=","_parent":{"$ref":"AAAAAAGLr4w7e+1w0I8="},"model":{"$ref":"AAAAAAGLr4w7eu1u8Gg="},"visible":false,"font":"Arial;13;0","left":216,"top":248,"width":10,"height":10},{"_type":"UMLTemplateParameterCompartmentView","_id":"AAAAAAGLr4w7fO154NM=","_parent":{"$ref":"AAAAAAGLr4w7e+1w0I8="},"model":{"$ref":"AAAAAAGLr4w7eu1u8Gg="},"visible":false,"font":"Arial;13;0","left":216,"top":248,"width":10,"height":10}],"font":"Arial;13;0","containerChangeable":true,"left":568,"top":321,"width":76.44091796875,"height":45,"nameCompartment":{"$ref":"AAAAAAGLr4w7e+1x1J4="},"attributeCompartment":{"$ref":"AAAAAAGLr4w7e+12qNs="},"operationCompartment":{"$ref":"AAAAAAGLr4w7e+13c7Y="},"receptionCompartment":{"$ref":"AAAAAAGLr4w7e+145ik="},"templateParameterCompartment":{"$ref":"AAAAAAGLr4w7fO154NM="}},{"_type":"UMLClassView","_id":"AAAAAAGLr411J+2bMLA=","_parent":{"$ref":"AAAAAAFF+qBtyKM79qY="},"model":{"$ref":"AAAAAAGLr411J+2ZYOI="},"subViews":[{"_type":"UMLNameCompartmentView","_id":"AAAAAAGLr411J+2cO68=","_parent":{"$ref":"AAAAAAGLr411J+2bMLA="},"model":{"$ref":"AAAAAAGLr411J+2ZYOI="},"subViews":[{"_type":"LabelView","_id":"AAAAAAGLr411J+2dkI0=","_parent":{"$ref":"AAAAAAGLr411J+2cO68="},"visible":false,"font":"Arial;13;0","left":-288,"top":-112,"height":13},{"_type":"LabelView","_id":"AAAAAAGLr411J+2ebew=","_parent":{"$ref":"AAAAAAGLr411J+2cO68="},"font":"Arial;13;1","left":589,"top":431,"width":55.9072265625,"height":13,"text":"Validator"},{"_type":"LabelView","_id":"AAAAAAGLr411J+2foZw=","_parent":{"$ref":"AAAAAAGLr411J+2cO68="},"visible":false,"font":"Arial;13;0","left":-288,"top":-112,"width":73.67724609375,"height":13,"text":"(from Model)"},{"_type":"LabelView","_id":"AAAAAAGLr411J+2gzuo=","_parent":{"$ref":"AAAAAAGLr411J+2cO68="},"visible":false,"font":"Arial;13;0","left":-288,"top":-112,"height":13,"horizontalAlignment":1}],"font":"Arial;13;0","left":584,"top":424,"width":65.9072265625,"height":25,"stereotypeLabel":{"$ref":"AAAAAAGLr411J+2dkI0="},"nameLabel":{"$ref":"AAAAAAGLr411J+2ebew="},"namespaceLabel":{"$ref":"AAAAAAGLr411J+2foZw="},"propertyLabel":{"$ref":"AAAAAAGLr411J+2gzuo="}},{"_type":"UMLAttributeCompartmentView","_id":"AAAAAAGLr411J+2hFhA=","_parent":{"$ref":"AAAAAAGLr411J+2bMLA="},"model":{"$ref":"AAAAAAGLr411J+2ZYOI="},"font":"Arial;13;0","left":584,"top":449,"width":65.9072265625,"height":10},{"_type":"UMLOperationCompartmentView","_id":"AAAAAAGLr411KO2iids=","_parent":{"$ref":"AAAAAAGLr411J+2bMLA="},"model":{"$ref":"AAAAAAGLr411J+2ZYOI="},"font":"Arial;13;0","left":584,"top":459,"width":65.9072265625,"height":10},{"_type":"UMLReceptionCompartmentView","_id":"AAAAAAGLr411KO2jAKQ=","_parent":{"$ref":"AAAAAAGLr411J+2bMLA="},"model":{"$ref":"AAAAAAGLr411J+2ZYOI="},"visible":false,"font":"Arial;13;0","left":-144,"top":-56,"width":10,"height":10},{"_type":"UMLTemplateParameterCompartmentView","_id":"AAAAAAGLr411KO2ki0E=","_parent":{"$ref":"AAAAAAGLr411J+2bMLA="},"model":{"$ref":"AAAAAAGLr411J+2ZYOI="},"visible":false,"font":"Arial;13;0","left":-144,"top":-56,"width":10,"height":10}],"font":"Arial;13;0","containerChangeable":true,"left":584,"top":424,"width":64.9072265625,"height":45,"nameCompartment":{"$ref":"AAAAAAGLr411J+2cO68="},"attributeCompartment":{"$ref":"AAAAAAGLr411J+2hFhA="},"operationCompartment":{"$ref":"AAAAAAGLr411KO2iids="},"receptionCompartment":{"$ref":"AAAAAAGLr411KO2jAKQ="},"templateParameterCompartment":{"$ref":"AAAAAAGLr411KO2ki0E="}},{"_type":"UMLClassView","_id":"AAAAAAGLr42hUe3Gd5g=","_parent":{"$ref":"AAAAAAFF+qBtyKM79qY="},"model":{"$ref":"AAAAAAGLr42hUe3EoLI="},"subViews":[{"_type":"UMLNameCompartmentView","_id":"AAAAAAGLr42hUe3Hgn0=","_parent":{"$ref":"AAAAAAGLr42hUe3Gd5g="},"model":{"$ref":"AAAAAAGLr42hUe3EoLI="},"subViews":[{"_type":"LabelView","_id":"AAAAAAGLr42hUu3IkRU=","_parent":{"$ref":"AAAAAAGLr42hUe3Hgn0="},"visible":false,"font":"Arial;13;0","left":-640,"top":-544,"height":13},{"_type":"LabelView","_id":"AAAAAAGLr42hUu3Jy68=","_parent":{"$ref":"AAAAAAGLr42hUe3Hgn0="},"font":"Arial;13;1","left":13,"top":319,"width":72.49365234375,"height":13,"text":"Connection"},{"_type":"LabelView","_id":"AAAAAAGLr42hUu3KHUg=","_parent":{"$ref":"AAAAAAGLr42hUe3Hgn0="},"visible":false,"font":"Arial;13;0","left":-640,"top":-544,"width":73.67724609375,"height":13,"text":"(from Model)"},{"_type":"LabelView","_id":"AAAAAAGLr42hUu3LwQU=","_parent":{"$ref":"AAAAAAGLr42hUe3Hgn0="},"visible":false,"font":"Arial;13;0","left":-640,"top":-544,"height":13,"horizontalAlignment":1}],"font":"Arial;13;0","left":8,"top":312,"width":82.49365234375,"height":25,"stereotypeLabel":{"$ref":"AAAAAAGLr42hUu3IkRU="},"nameLabel":{"$ref":"AAAAAAGLr42hUu3Jy68="},"namespaceLabel":{"$ref":"AAAAAAGLr42hUu3KHUg="},"propertyLabel":{"$ref":"AAAAAAGLr42hUu3LwQU="}},{"_type":"UMLAttributeCompartmentView","_id":"AAAAAAGLr42hUu3MzdM=","_parent":{"$ref":"AAAAAAGLr42hUe3Gd5g="},"model":{"$ref":"AAAAAAGLr42hUe3EoLI="},"font":"Arial;13;0","left":8,"top":337,"width":82.49365234375,"height":10},{"_type":"UMLOperationCompartmentView","_id":"AAAAAAGLr42hUu3NIww=","_parent":{"$ref":"AAAAAAGLr42hUe3Gd5g="},"model":{"$ref":"AAAAAAGLr42hUe3EoLI="},"font":"Arial;13;0","left":8,"top":347,"width":82.49365234375,"height":10},{"_type":"UMLReceptionCompartmentView","_id":"AAAAAAGLr42hUu3OEh4=","_parent":{"$ref":"AAAAAAGLr42hUe3Gd5g="},"model":{"$ref":"AAAAAAGLr42hUe3EoLI="},"visible":false,"font":"Arial;13;0","left":-320,"top":-272,"width":10,"height":10},{"_type":"UMLTemplateParameterCompartmentView","_id":"AAAAAAGLr42hUu3PGK8=","_parent":{"$ref":"AAAAAAGLr42hUe3Gd5g="},"model":{"$ref":"AAAAAAGLr42hUe3EoLI="},"visible":false,"font":"Arial;13;0","left":-320,"top":-272,"width":10,"height":10}],"font":"Arial;13;0","containerChangeable":true,"left":8,"top":312,"width":81.49365234375,"height":45,"nameCompartment":{"$ref":"AAAAAAGLr42hUe3Hgn0="},"attributeCompartment":{"$ref":"AAAAAAGLr42hUu3MzdM="},"operationCompartment":{"$ref":"AAAAAAGLr42hUu3NIww="},"receptionCompartment":{"$ref":"AAAAAAGLr42hUu3OEh4="},"templateParameterCompartment":{"$ref":"AAAAAAGLr42hUu3PGK8="}},{"_type":"UMLDependencyView","_id":"AAAAAAGLr44zyu34ZpE=","_parent":{"$ref":"AAAAAAFF+qBtyKM79qY="},"model":{"$ref":"AAAAAAGLr44zye321Qo="},"subViews":[{"_type":"EdgeLabelView","_id":"AAAAAAGLr44zy+35pF0=","_parent":{"$ref":"AAAAAAGLr44zyu34ZpE="},"model":{"$ref":"AAAAAAGLr44zye321Qo="},"visible":false,"font":"Arial;13;0","left":376,"top":164,"height":13,"alpha":1.5707963267948966,"distance":15,"hostEdge":{"$ref":"AAAAAAGLr44zyu34ZpE="},"edgePosition":1},{"_type":"EdgeLabelView","_id":"AAAAAAGLr44zy+36zj8=","_parent":{"$ref":"AAAAAAGLr44zyu34ZpE="},"model":{"$ref":"AAAAAAGLr44zye321Qo="},"visible":null,"font":"Arial;13;0","left":361,"top":161,"height":13,"alpha":1.5707963267948966,"distance":30,"hostEdge":{"$ref":"AAAAAAGLr44zyu34ZpE="},"edgePosition":1},{"_type":"EdgeLabelView","_id":"AAAAAAGLr44zy+37P6c=","_parent":{"$ref":"AAAAAAGLr44zyu34ZpE="},"model":{"$ref":"AAAAAAGLr44zye321Qo="},"visible":false,"font":"Arial;13;0","left":405,"top":171,"height":13,"alpha":-1.5707963267948966,"distance":15,"hostEdge":{"$ref":"AAAAAAGLr44zyu34ZpE="},"edgePosition":1}],"font":"Arial;13;0","head":{"$ref":"AAAAAAGLr4ofbOxmReQ="},"tail":{"$ref":"AAAAAAGLr4t9Fu0U6JQ="},"lineStyle":1,"points":"386:199;396:150","showVisibility":true,"nameLabel":{"$ref":"AAAAAAGLr44zy+35pF0="},"stereotypeLabel":{"$ref":"AAAAAAGLr44zy+36zj8="},"propertyLabel":{"$ref":"AAAAAAGLr44zy+37P6c="}},{"_type":"UMLDependencyView","_id":"AAAAAAGLr45C1O4JWNI=","_parent":{"$ref":"AAAAAAFF+qBtyKM79qY="},"model":{"$ref":"AAAAAAGLr45C1O4HDN8="},"subViews":[{"_type":"EdgeLabelView","_id":"AAAAAAGLr45C1O4Kn8k=","_parent":{"$ref":"AAAAAAGLr45C1O4JWNI="},"model":{"$ref":"AAAAAAGLr45C1O4HDN8="},"visible":false,"font":"Arial;13;0","left":384,"top":475,"height":13,"alpha":1.5707963267948966,"distance":15,"hostEdge":{"$ref":"AAAAAAGLr45C1O4JWNI="},"edgePosition":1},{"_type":"EdgeLabelView","_id":"AAAAAAGLr45C1e4L0lg=","_parent":{"$ref":"AAAAAAGLr45C1O4JWNI="},"model":{"$ref":"AAAAAAGLr45C1O4HDN8="},"visible":null,"font":"Arial;13;0","left":399,"top":475,"height":13,"alpha":1.5707963267948966,"distance":30,"hostEdge":{"$ref":"AAAAAAGLr45C1O4JWNI="},"edgePosition":1},{"_type":"EdgeLabelView","_id":"AAAAAAGLr45C1e4MFO4=","_parent":{"$ref":"AAAAAAGLr45C1O4JWNI="},"model":{"$ref":"AAAAAAGLr45C1O4HDN8="},"visible":false,"font":"Arial;13;0","left":355,"top":476,"height":13,"alpha":-1.5707963267948966,"distance":15,"hostEdge":{"$ref":"AAAAAAGLr45C1O4JWNI="},"edgePosition":1}],"font":"Arial;13;0","head":{"$ref":"AAAAAAGLr4qOjeyQZgM="},"tail":{"$ref":"AAAAAAGLr4u2wO0/BMQ="},"lineStyle":1,"points":"371:462;370:503","showVisibility":true,"nameLabel":{"$ref":"AAAAAAGLr45C1O4Kn8k="},"stereotypeLabel":{"$ref":"AAAAAAGLr45C1e4L0lg="},"propertyLabel":{"$ref":"AAAAAAGLr45C1e4MFO4="}},{"_type":"UMLAssociationView","_id":"AAAAAAGLr45Xb+4cWj0=","_parent":{"$ref":"AAAAAAFF+qBtyKM79qY="},"model":{"$ref":"AAAAAAGLr45Xbu4YV/Q="},"subViews":[{"_type":"EdgeLabelView","_id":"AAAAAAGLr45Xb+4dUnU=","_parent":{"$ref":"AAAAAAGLr45Xb+4cWj0="},"model":{"$ref":"AAAAAAGLr45Xbu4YV/Q="},"visible":false,"font":"Arial;13;0","left":125,"top":372,"height":13,"alpha":1.5707963267948966,"distance":15,"hostEdge":{"$ref":"AAAAAAGLr45Xb+4cWj0="},"edgePosition":1},{"_type":"EdgeLabelView","_id":"AAAAAAGLr45XcO4eIwk=","_parent":{"$ref":"AAAAAAGLr45Xb+4cWj0="},"model":{"$ref":"AAAAAAGLr45Xbu4YV/Q="},"visible":null,"font":"Arial;13;0","left":135,"top":360,"height":13,"alpha":1.5707963267948966,"distance":30,"hostEdge":{"$ref":"AAAAAAGLr45Xb+4cWj0="},"edgePosition":1},{"_type":"EdgeLabelView","_id":"AAAAAAGLr45XcO4fNxA=","_parent":{"$ref":"AAAAAAGLr45Xb+4cWj0="},"model":{"$ref":"AAAAAAGLr45Xbu4YV/Q="},"visible":false,"font":"Arial;13;0","left":106,"top":395,"height":13,"alpha":-1.5707963267948966,"distance":15,"hostEdge":{"$ref":"AAAAAAGLr45Xb+4cWj0="},"edgePosition":1},{"_type":"EdgeLabelView","_id":"AAAAAAGLr45XcO4gyEs=","_parent":{"$ref":"AAAAAAGLr45Xb+4cWj0="},"model":{"$ref":"AAAAAAGLr45Xb+4ZWAc="},"visible":false,"font":"Arial;13;0","left":106,"top":356,"height":13,"alpha":0.5235987755982988,"distance":30,"hostEdge":{"$ref":"AAAAAAGLr45Xb+4cWj0="},"edgePosition":2},{"_type":"EdgeLabelView","_id":"AAAAAAGLr45XcO4hDhk=","_parent":{"$ref":"AAAAAAGLr45Xb+4cWj0="},"model":{"$ref":"AAAAAAGLr45Xb+4ZWAc="},"visible":false,"font":"Arial;13;0","left":116,"top":348,"height":13,"alpha":0.7853981633974483,"distance":40,"hostEdge":{"$ref":"AAAAAAGLr45Xb+4cWj0="},"edgePosition":2},{"_type":"EdgeLabelView","_id":"AAAAAAGLr45XcO4ioQQ=","_parent":{"$ref":"AAAAAAGLr45Xb+4cWj0="},"model":{"$ref":"AAAAAAGLr45Xb+4ZWAc="},"visible":false,"font":"Arial;13;0","left":85,"top":375,"height":13,"alpha":-0.5235987755982988,"distance":25,"hostEdge":{"$ref":"AAAAAAGLr45Xb+4cWj0="},"edgePosition":2},{"_type":"EdgeLabelView","_id":"AAAAAAGLr45XcO4jRi0=","_parent":{"$ref":"AAAAAAGLr45Xb+4cWj0="},"model":{"$ref":"AAAAAAGLr45Xb+4aK00="},"visible":false,"font":"Arial;13;0","left":145,"top":388,"height":13,"alpha":-0.5235987755982988,"distance":30,"hostEdge":{"$ref":"AAAAAAGLr45Xb+4cWj0="}},{"_type":"EdgeLabelView","_id":"AAAAAAGLr45XcO4k//E=","_parent":{"$ref":"AAAAAAGLr45Xb+4cWj0="},"model":{"$ref":"AAAAAAGLr45Xb+4aK00="},"visible":false,"font":"Arial;13;0","left":152,"top":377,"height":13,"alpha":-0.7853981633974483,"distance":40,"hostEdge":{"$ref":"AAAAAAGLr45Xb+4cWj0="}},{"_type":"EdgeLabelView","_id":"AAAAAAGLr45XcO4lGWI=","_parent":{"$ref":"AAAAAAGLr45Xb+4cWj0="},"model":{"$ref":"AAAAAAGLr45Xb+4aK00="},"visible":false,"font":"Arial;13;0","left":131,"top":412,"height":13,"alpha":0.5235987755982988,"distance":25,"hostEdge":{"$ref":"AAAAAAGLr45Xb+4cWj0="}},{"_type":"UMLQualifierCompartmentView","_id":"AAAAAAGLr45XcO4mxxM=","_parent":{"$ref":"AAAAAAGLr45Xb+4cWj0="},"model":{"$ref":"AAAAAAGLr45Xb+4ZWAc="},"visible":false,"font":"Arial;13;0","width":10,"height":10},{"_type":"UMLQualifierCompartmentView","_id":"AAAAAAGLr45XcO4n9Hs=","_parent":{"$ref":"AAAAAAGLr45Xb+4cWj0="},"model":{"$ref":"AAAAAAGLr45Xb+4aK00="},"visible":false,"font":"Arial;13;0","width":10,"height":10}],"font":"Arial;13;0","head":{"$ref":"AAAAAAGLr4tHS+zpelA="},"tail":{"$ref":"AAAAAAGLr42hUe3Gd5g="},"lineStyle":1,"points":"77:358;156:423","showVisibility":true,"nameLabel":{"$ref":"AAAAAAGLr45Xb+4dUnU="},"stereotypeLabel":{"$ref":"AAAAAAGLr45XcO4eIwk="},"propertyLabel":{"$ref":"AAAAAAGLr45XcO4fNxA="},"showEndOrder":"hide","tailRoleNameLabel":{"$ref":"AAAAAAGLr45XcO4gyEs="},"tailPropertyLabel":{"$ref":"AAAAAAGLr45XcO4hDhk="},"tailMultiplicityLabel":{"$ref":"AAAAAAGLr45XcO4ioQQ="},"headRoleNameLabel":{"$ref":"AAAAAAGLr45XcO4jRi0="},"headPropertyLabel":{"$ref":"AAAAAAGLr45XcO4k//E="},"headMultiplicityLabel":{"$ref":"AAAAAAGLr45XcO4lGWI="},"tailQualifiersCompartment":{"$ref":"AAAAAAGLr45XcO4mxxM="},"headQualifiersCompartment":{"$ref":"AAAAAAGLr45XcO4n9Hs="}},{"_type":"UMLAssociationView","_id":"AAAAAAGLr45mIO74jNM=","_parent":{"$ref":"AAAAAAFF+qBtyKM79qY="},"model":{"$ref":"AAAAAAGLr45mIO70KSY="},"subViews":[{"_type":"EdgeLabelView","_id":"AAAAAAGLr45mIO75yg8=","_parent":{"$ref":"AAAAAAGLr45mIO74jNM="},"model":{"$ref":"AAAAAAGLr45mIO70KSY="},"visible":false,"font":"Arial;13;0","left":113,"top":259,"height":13,"alpha":1.5707963267948966,"distance":15,"hostEdge":{"$ref":"AAAAAAGLr45mIO74jNM="},"edgePosition":1},{"_type":"EdgeLabelView","_id":"AAAAAAGLr45mIe76e8Q=","_parent":{"$ref":"AAAAAAGLr45mIO74jNM="},"model":{"$ref":"AAAAAAGLr45mIO70KSY="},"visible":null,"font":"Arial;13;0","left":104,"top":247,"height":13,"alpha":1.5707963267948966,"distance":30,"hostEdge":{"$ref":"AAAAAAGLr45mIO74jNM="},"edgePosition":1},{"_type":"EdgeLabelView","_id":"AAAAAAGLr45mIe77ps0=","_parent":{"$ref":"AAAAAAGLr45mIO74jNM="},"model":{"$ref":"AAAAAAGLr45mIO70KSY="},"visible":false,"font":"Arial;13;0","left":130,"top":284,"height":13,"alpha":-1.5707963267948966,"distance":15,"hostEdge":{"$ref":"AAAAAAGLr45mIO74jNM="},"edgePosition":1},{"_type":"EdgeLabelView","_id":"AAAAAAGLr45mIe78KVg=","_parent":{"$ref":"AAAAAAGLr45mIO74jNM="},"model":{"$ref":"AAAAAAGLr45mIO71ZqM="},"visible":false,"font":"Arial;13;0","left":90,"top":277,"height":13,"alpha":0.5235987755982988,"distance":30,"hostEdge":{"$ref":"AAAAAAGLr45mIO74jNM="},"edgePosition":2},{"_type":"EdgeLabelView","_id":"AAAAAAGLr45mIe79Fjw=","_parent":{"$ref":"AAAAAAGLr45mIO74jNM="},"model":{"$ref":"AAAAAAGLr45mIO71ZqM="},"visible":false,"font":"Arial;13;0","left":84,"top":265,"height":13,"alpha":0.7853981633974483,"distance":40,"hostEdge":{"$ref":"AAAAAAGLr45mIO74jNM="},"edgePosition":2},{"_type":"EdgeLabelView","_id":"AAAAAAGLr45mIe7+wgM=","_parent":{"$ref":"AAAAAAGLr45mIO74jNM="},"model":{"$ref":"AAAAAAGLr45mIO71ZqM="},"visible":false,"font":"Arial;13;0","left":103,"top":301,"height":13,"alpha":-0.5235987755982988,"distance":25,"hostEdge":{"$ref":"AAAAAAGLr45mIO74jNM="},"edgePosition":2},{"_type":"EdgeLabelView","_id":"AAAAAAGLr45mIe7/iX4=","_parent":{"$ref":"AAAAAAGLr45mIO74jNM="},"model":{"$ref":"AAAAAAGLr45mIO72eIk="},"visible":false,"font":"Arial;13;0","left":135,"top":243,"height":13,"alpha":-0.5235987755982988,"distance":30,"hostEdge":{"$ref":"AAAAAAGLr45mIO74jNM="}},{"_type":"EdgeLabelView","_id":"AAAAAAGLr45mIe8Atl8=","_parent":{"$ref":"AAAAAAGLr45mIO74jNM="},"model":{"$ref":"AAAAAAGLr45mIO72eIk="},"visible":false,"font":"Arial;13;0","left":125,"top":234,"height":13,"alpha":-0.7853981633974483,"distance":40,"hostEdge":{"$ref":"AAAAAAGLr45mIO74jNM="}},{"_type":"EdgeLabelView","_id":"AAAAAAGLr45mIe8Bvlo=","_parent":{"$ref":"AAAAAAGLr45mIO74jNM="},"model":{"$ref":"AAAAAAGLr45mIO72eIk="},"visible":false,"font":"Arial;13;0","left":155,"top":263,"height":13,"alpha":0.5235987755982988,"distance":25,"hostEdge":{"$ref":"AAAAAAGLr45mIO74jNM="}},{"_type":"UMLQualifierCompartmentView","_id":"AAAAAAGLr45mIe8CYfo=","_parent":{"$ref":"AAAAAAGLr45mIO74jNM="},"model":{"$ref":"AAAAAAGLr45mIO71ZqM="},"visible":false,"font":"Arial;13;0","width":10,"height":10},{"_type":"UMLQualifierCompartmentView","_id":"AAAAAAGLr45mIe8DBHE=","_parent":{"$ref":"AAAAAAGLr45mIO74jNM="},"model":{"$ref":"AAAAAAGLr45mIO72eIk="},"visible":false,"font":"Arial;13;0","width":10,"height":10}],"font":"Arial;13;0","head":{"$ref":"AAAAAAGLr4sA9ey+QQ0="},"tail":{"$ref":"AAAAAAGLr42hUe3Gd5g="},"lineStyle":1,"points":"79:311;165:246","showVisibility":true,"nameLabel":{"$ref":"AAAAAAGLr45mIO75yg8="},"stereotypeLabel":{"$ref":"AAAAAAGLr45mIe76e8Q="},"propertyLabel":{"$ref":"AAAAAAGLr45mIe77ps0="},"showEndOrder":"hide","tailRoleNameLabel":{"$ref":"AAAAAAGLr45mIe78KVg="},"tailPropertyLabel":{"$ref":"AAAAAAGLr45mIe79Fjw="},"tailMultiplicityLabel":{"$ref":"AAAAAAGLr45mIe7+wgM="},"headRoleNameLabel":{"$ref":"AAAAAAGLr45mIe7/iX4="},"headPropertyLabel":{"$ref":"AAAAAAGLr45mIe8Atl8="},"headMultiplicityLabel":{"$ref":"AAAAAAGLr45mIe8Bvlo="},"tailQualifiersCompartment":{"$ref":"AAAAAAGLr45mIe8CYfo="},"headQualifiersCompartment":{"$ref":"AAAAAAGLr45mIe8DBHE="}},{"_type":"UMLDependencyView","_id":"AAAAAAGLr475fftRd1Y=","_parent":{"$ref":"AAAAAAFF+qBtyKM79qY="},"model":{"$ref":"AAAAAAGLr475fPtPm7M="},"subViews":[{"_type":"EdgeLabelView","_id":"AAAAAAGLr475fftSV/c=","_parent":{"$ref":"AAAAAAGLr475fftRd1Y="},"model":{"$ref":"AAAAAAGLr475fPtPm7M="},"visible":false,"font":"Arial;13;0","left":280,"top":450,"height":13,"alpha":1.5707963267948966,"distance":15,"hostEdge":{"$ref":"AAAAAAGLr475fftRd1Y="},"edgePosition":1},{"_type":"EdgeLabelView","_id":"AAAAAAGLr475fvtTPQk=","_parent":{"$ref":"AAAAAAGLr475fftRd1Y="},"model":{"$ref":"AAAAAAGLr475fPtPm7M="},"visible":null,"font":"Arial;13;0","left":281,"top":465,"height":13,"alpha":1.5707963267948966,"distance":30,"hostEdge":{"$ref":"AAAAAAGLr475fftRd1Y="},"edgePosition":1},{"_type":"EdgeLabelView","_id":"AAAAAAGLr475fvtUWS4=","_parent":{"$ref":"AAAAAAGLr475fftRd1Y="},"model":{"$ref":"AAAAAAGLr475fPtPm7M="},"visible":false,"font":"Arial;13;0","left":279,"top":421,"height":13,"alpha":-1.5707963267948966,"distance":15,"hostEdge":{"$ref":"AAAAAAGLr475fftRd1Y="},"edgePosition":1}],"font":"Arial;13;0","head":{"$ref":"AAAAAAGLr4tHS+zpelA="},"tail":{"$ref":"AAAAAAGLr4u2wO0/BMQ="},"lineStyle":1,"points":"327:440;234:444","showVisibility":true,"nameLabel":{"$ref":"AAAAAAGLr475fftSV/c="},"stereotypeLabel":{"$ref":"AAAAAAGLr475fvtTPQk="},"propertyLabel":{"$ref":"AAAAAAGLr475fvtUWS4="}},{"_type":"UMLDependencyView","_id":"AAAAAAGLr48idPw6MwU=","_parent":{"$ref":"AAAAAAFF+qBtyKM79qY="},"model":{"$ref":"AAAAAAGLr48idPw4hzA="},"subViews":[{"_type":"EdgeLabelView","_id":"AAAAAAGLr48idPw7yvg=","_parent":{"$ref":"AAAAAAGLr48idPw6MwU="},"model":{"$ref":"AAAAAAGLr48idPw4hzA="},"visible":false,"font":"Arial;13;0","left":292,"top":231,"height":13,"alpha":1.5707963267948966,"distance":15,"hostEdge":{"$ref":"AAAAAAGLr48idPw6MwU="},"edgePosition":1},{"_type":"EdgeLabelView","_id":"AAAAAAGLr48idPw8MrM=","_parent":{"$ref":"AAAAAAGLr48idPw6MwU="},"model":{"$ref":"AAAAAAGLr48idPw4hzA="},"visible":null,"font":"Arial;13;0","left":292,"top":246,"height":13,"alpha":1.5707963267948966,"distance":30,"hostEdge":{"$ref":"AAAAAAGLr48idPw6MwU="},"edgePosition":1},{"_type":"EdgeLabelView","_id":"AAAAAAGLr48idfw91t4=","_parent":{"$ref":"AAAAAAGLr48idPw6MwU="},"model":{"$ref":"AAAAAAGLr48idPw4hzA="},"visible":false,"font":"Arial;13;0","left":293,"top":201,"height":13,"alpha":-1.5707963267948966,"distance":15,"hostEdge":{"$ref":"AAAAAAGLr48idPw6MwU="},"edgePosition":1}],"font":"Arial;13;0","head":{"$ref":"AAAAAAGLr4sA9ey+QQ0="},"tail":{"$ref":"AAAAAAGLr4t9Fu0U6JQ="},"lineStyle":1,"points":"343:222;243:222","showVisibility":true,"nameLabel":{"$ref":"AAAAAAGLr48idPw7yvg="},"stereotypeLabel":{"$ref":"AAAAAAGLr48idPw8MrM="},"propertyLabel":{"$ref":"AAAAAAGLr48idfw91t4="}},{"_type":"UMLDependencyView","_id":"AAAAAAGLr49RKP9AUcw=","_parent":{"$ref":"AAAAAAFF+qBtyKM79qY="},"model":{"$ref":"AAAAAAGLr49RJ/8+xx4="},"subViews":[{"_type":"EdgeLabelView","_id":"AAAAAAGLr49RKP9BnH0=","_parent":{"$ref":"AAAAAAGLr49RKP9AUcw="},"model":{"$ref":"AAAAAAGLr49RJ/8+xx4="},"visible":false,"font":"Arial;13;0","left":486,"top":289,"height":13,"alpha":1.5707963267948966,"distance":15,"hostEdge":{"$ref":"AAAAAAGLr49RKP9AUcw="},"edgePosition":1},{"_type":"EdgeLabelView","_id":"AAAAAAGLr49RKP9C5/w=","_parent":{"$ref":"AAAAAAGLr49RKP9AUcw="},"model":{"$ref":"AAAAAAGLr49RJ/8+xx4="},"visible":null,"font":"Arial;13;0","left":479,"top":302,"height":13,"alpha":1.5707963267948966,"distance":30,"hostEdge":{"$ref":"AAAAAAGLr49RKP9AUcw="},"edgePosition":1},{"_type":"EdgeLabelView","_id":"AAAAAAGLr49RKP9DU7w=","_parent":{"$ref":"AAAAAAGLr49RKP9AUcw="},"model":{"$ref":"AAAAAAGLr49RJ/8+xx4="},"visible":false,"font":"Arial;13;0","left":499,"top":262,"height":13,"alpha":-1.5707963267948966,"distance":15,"hostEdge":{"$ref":"AAAAAAGLr49RKP9AUcw="},"edgePosition":1}],"font":"Arial;13;0","head":{"$ref":"AAAAAAGLr4t9Fu0U6JQ="},"tail":{"$ref":"AAAAAAGLr4w7e+1w0I8="},"lineStyle":1,"points":"567:322;419:243","showVisibility":true,"nameLabel":{"$ref":"AAAAAAGLr49RKP9BnH0="},"stereotypeLabel":{"$ref":"AAAAAAGLr49RKP9C5/w="},"propertyLabel":{"$ref":"AAAAAAGLr49RKP9DU7w="}},{"_type":"UMLDependencyView","_id":"AAAAAAGLr49gEQCbJ30=","_parent":{"$ref":"AAAAAAFF+qBtyKM79qY="},"model":{"$ref":"AAAAAAGLr49gEQCZ4Gc="},"subViews":[{"_type":"EdgeLabelView","_id":"AAAAAAGLr49gEQCccrw=","_parent":{"$ref":"AAAAAAGLr49gEQCbJ30="},"model":{"$ref":"AAAAAAGLr49gEQCZ4Gc="},"visible":false,"font":"Arial;13;0","left":497,"top":396,"height":13,"alpha":1.5707963267948966,"distance":15,"hostEdge":{"$ref":"AAAAAAGLr49gEQCbJ30="},"edgePosition":1},{"_type":"EdgeLabelView","_id":"AAAAAAGLr49gEQCdObs=","_parent":{"$ref":"AAAAAAGLr49gEQCbJ30="},"model":{"$ref":"AAAAAAGLr49gEQCZ4Gc="},"visible":null,"font":"Arial;13;0","left":503,"top":410,"height":13,"alpha":1.5707963267948966,"distance":30,"hostEdge":{"$ref":"AAAAAAGLr49gEQCbJ30="},"edgePosition":1},{"_type":"EdgeLabelView","_id":"AAAAAAGLr49gEQCeA0k=","_parent":{"$ref":"AAAAAAGLr49gEQCbJ30="},"model":{"$ref":"AAAAAAGLr49gEQCZ4Gc="},"visible":false,"font":"Arial;13;0","left":486,"top":369,"height":13,"alpha":-1.5707963267948966,"distance":15,"hostEdge":{"$ref":"AAAAAAGLr49gEQCbJ30="},"edgePosition":1}],"font":"Arial;13;0","head":{"$ref":"AAAAAAGLr4u2wO0/BMQ="},"tail":{"$ref":"AAAAAAGLr4w7e+1w0I8="},"lineStyle":1,"points":"567:359;417:420","showVisibility":true,"nameLabel":{"$ref":"AAAAAAGLr49gEQCccrw="},"stereotypeLabel":{"$ref":"AAAAAAGLr49gEQCdObs="},"propertyLabel":{"$ref":"AAAAAAGLr49gEQCeA0k="}},{"_type":"UMLDependencyView","_id":"AAAAAAGLr4+L0AKZ8Rg=","_parent":{"$ref":"AAAAAAFF+qBtyKM79qY="},"model":{"$ref":"AAAAAAGLr4+LzwKXXhM="},"subViews":[{"_type":"EdgeLabelView","_id":"AAAAAAGLr4+L0AKa5oI=","_parent":{"$ref":"AAAAAAGLr4+L0AKZ8Rg="},"model":{"$ref":"AAAAAAGLr4+LzwKXXhM="},"visible":false,"font":"Arial;13;0","left":625,"top":387,"height":13,"alpha":1.5707963267948966,"distance":15,"hostEdge":{"$ref":"AAAAAAGLr4+L0AKZ8Rg="},"edgePosition":1},{"_type":"EdgeLabelView","_id":"AAAAAAGLr4+L0AKb/9E=","_parent":{"$ref":"AAAAAAGLr4+L0AKZ8Rg="},"model":{"$ref":"AAAAAAGLr4+LzwKXXhM="},"visible":null,"font":"Arial;13;0","left":640,"top":385,"height":13,"alpha":1.5707963267948966,"distance":30,"hostEdge":{"$ref":"AAAAAAGLr4+L0AKZ8Rg="},"edgePosition":1},{"_type":"EdgeLabelView","_id":"AAAAAAGLr4+L0AKcFfw=","_parent":{"$ref":"AAAAAAGLr4+L0AKZ8Rg="},"model":{"$ref":"AAAAAAGLr4+LzwKXXhM="},"visible":false,"font":"Arial;13;0","left":596,"top":390,"height":13,"alpha":-1.5707963267948966,"distance":15,"hostEdge":{"$ref":"AAAAAAGLr4+L0AKZ8Rg="},"edgePosition":1}],"font":"Arial;13;0","head":{"$ref":"AAAAAAGLr411J+2bMLA="},"tail":{"$ref":"AAAAAAGLr4w7e+1w0I8="},"lineStyle":1,"points":"608:367;614:423","showVisibility":true,"nameLabel":{"$ref":"AAAAAAGLr4+L0AKa5oI="},"stereotypeLabel":{"$ref":"AAAAAAGLr4+L0AKb/9E="},"propertyLabel":{"$ref":"AAAAAAGLr4+L0AKcFfw="}},{"_type":"UMLClassView","_id":"AAAAAAGLr5bYBRZmUIU=","_parent":{"$ref":"AAAAAAFF+qBtyKM79qY="},"model":{"$ref":"AAAAAAGLr5bYBBZkCMI="},"subViews":[{"_type":"UMLNameCompartmentView","_id":"AAAAAAGLr5bYBRZnDXs=","_parent":{"$ref":"AAAAAAGLr5bYBRZmUIU="},"model":{"$ref":"AAAAAAGLr5bYBBZkCMI="},"subViews":[{"_type":"LabelView","_id":"AAAAAAGLr5bYBRZoL6k=","_parent":{"$ref":"AAAAAAGLr5bYBRZnDXs="},"visible":false,"font":"Arial;13;0","left":-128,"top":80,"height":13},{"_type":"LabelView","_id":"AAAAAAGLr5bYBRZp5Zw=","_parent":{"$ref":"AAAAAAGLr5bYBRZnDXs="},"font":"Arial;13;1","left":677,"top":255,"width":42.919921875,"height":13,"text":"Admin"},{"_type":"LabelView","_id":"AAAAAAGLr5bYBRZqerE=","_parent":{"$ref":"AAAAAAGLr5bYBRZnDXs="},"visible":false,"font":"Arial;13;0","left":-128,"top":80,"width":73.67724609375,"height":13,"text":"(from Model)"},{"_type":"LabelView","_id":"AAAAAAGLr5bYBRZrRdw=","_parent":{"$ref":"AAAAAAGLr5bYBRZnDXs="},"visible":false,"font":"Arial;13;0","left":-128,"top":80,"height":13,"horizontalAlignment":1}],"font":"Arial;13;0","left":672,"top":248,"width":52.919921875,"height":25,"stereotypeLabel":{"$ref":"AAAAAAGLr5bYBRZoL6k="},"nameLabel":{"$ref":"AAAAAAGLr5bYBRZp5Zw="},"namespaceLabel":{"$ref":"AAAAAAGLr5bYBRZqerE="},"propertyLabel":{"$ref":"AAAAAAGLr5bYBRZrRdw="}},{"_type":"UMLAttributeCompartmentView","_id":"AAAAAAGLr5bYBRZsx84=","_parent":{"$ref":"AAAAAAGLr5bYBRZmUIU="},"model":{"$ref":"AAAAAAGLr5bYBBZkCMI="},"font":"Arial;13;0","left":672,"top":273,"width":52.919921875,"height":10},{"_type":"UMLOperationCompartmentView","_id":"AAAAAAGLr5bYBRZtCp0=","_parent":{"$ref":"AAAAAAGLr5bYBRZmUIU="},"model":{"$ref":"AAAAAAGLr5bYBBZkCMI="},"font":"Arial;13;0","left":672,"top":283,"width":52.919921875,"height":10},{"_type":"UMLReceptionCompartmentView","_id":"AAAAAAGLr5bYBRZuI6Q=","_parent":{"$ref":"AAAAAAGLr5bYBRZmUIU="},"model":{"$ref":"AAAAAAGLr5bYBBZkCMI="},"visible":false,"font":"Arial;13;0","left":-64,"top":40,"width":10,"height":10},{"_type":"UMLTemplateParameterCompartmentView","_id":"AAAAAAGLr5bYBRZvEwA=","_parent":{"$ref":"AAAAAAGLr5bYBRZmUIU="},"model":{"$ref":"AAAAAAGLr5bYBBZkCMI="},"visible":false,"font":"Arial;13;0","left":-64,"top":40,"width":10,"height":10}],"font":"Arial;13;0","containerChangeable":true,"left":672,"top":248,"width":51.919921875,"height":45,"nameCompartment":{"$ref":"AAAAAAGLr5bYBRZnDXs="},"attributeCompartment":{"$ref":"AAAAAAGLr5bYBRZsx84="},"operationCompartment":{"$ref":"AAAAAAGLr5bYBRZtCp0="},"receptionCompartment":{"$ref":"AAAAAAGLr5bYBRZuI6Q="},"templateParameterCompartment":{"$ref":"AAAAAAGLr5bYBRZvEwA="}},{"_type":"UMLClassView","_id":"AAAAAAGLr5nyTBnAzJE=","_parent":{"$ref":"AAAAAAFF+qBtyKM79qY="},"model":{"$ref":"AAAAAAGLr5nyTBm+3eU="},"subViews":[{"_type":"UMLNameCompartmentView","_id":"AAAAAAGLr5nyTBnBMhY=","_parent":{"$ref":"AAAAAAGLr5nyTBnAzJE="},"model":{"$ref":"AAAAAAGLr5nyTBm+3eU="},"subViews":[{"_type":"LabelView","_id":"AAAAAAGLr5nyTRnCHrc=","_parent":{"$ref":"AAAAAAGLr5nyTBnBMhY="},"visible":false,"font":"Arial;13;0","height":13},{"_type":"LabelView","_id":"AAAAAAGLr5nyTRnD/wc=","_parent":{"$ref":"AAAAAAGLr5nyTBnBMhY="},"font":"Arial;13;1","left":357,"top":327,"width":42.919921875,"height":13,"text":"Parser"},{"_type":"LabelView","_id":"AAAAAAGLr5nyTRnEREI=","_parent":{"$ref":"AAAAAAGLr5nyTBnBMhY="},"visible":false,"font":"Arial;13;0","width":73.67724609375,"height":13,"text":"(from Model)"},{"_type":"LabelView","_id":"AAAAAAGLr5nyTRnFLgs=","_parent":{"$ref":"AAAAAAGLr5nyTBnBMhY="},"visible":false,"font":"Arial;13;0","height":13,"horizontalAlignment":1}],"font":"Arial;13;0","left":352,"top":320,"width":52.919921875,"height":25,"stereotypeLabel":{"$ref":"AAAAAAGLr5nyTRnCHrc="},"nameLabel":{"$ref":"AAAAAAGLr5nyTRnD/wc="},"namespaceLabel":{"$ref":"AAAAAAGLr5nyTRnEREI="},"propertyLabel":{"$ref":"AAAAAAGLr5nyTRnFLgs="}},{"_type":"UMLAttributeCompartmentView","_id":"AAAAAAGLr5nyTRnGx8k=","_parent":{"$ref":"AAAAAAGLr5nyTBnAzJE="},"model":{"$ref":"AAAAAAGLr5nyTBm+3eU="},"font":"Arial;13;0","left":352,"top":345,"width":52.919921875,"height":10},{"_type":"UMLOperationCompartmentView","_id":"AAAAAAGLr5nyTRnH01Q=","_parent":{"$ref":"AAAAAAGLr5nyTBnAzJE="},"model":{"$ref":"AAAAAAGLr5nyTBm+3eU="},"font":"Arial;13;0","left":352,"top":355,"width":52.919921875,"height":10},{"_type":"UMLReceptionCompartmentView","_id":"AAAAAAGLr5nyTRnIfLw=","_parent":{"$ref":"AAAAAAGLr5nyTBnAzJE="},"model":{"$ref":"AAAAAAGLr5nyTBm+3eU="},"visible":false,"font":"Arial;13;0","width":10,"height":10},{"_type":"UMLTemplateParameterCompartmentView","_id":"AAAAAAGLr5nyTRnJplY=","_parent":{"$ref":"AAAAAAGLr5nyTBnAzJE="},"model":{"$ref":"AAAAAAGLr5nyTBm+3eU="},"visible":false,"font":"Arial;13;0","width":10,"height":10}],"font":"Arial;13;0","containerChangeable":true,"left":352,"top":320,"width":51.919921875,"height":45,"nameCompartment":{"$ref":"AAAAAAGLr5nyTBnBMhY="},"attributeCompartment":{"$ref":"AAAAAAGLr5nyTRnGx8k="},"operationCompartment":{"$ref":"AAAAAAGLr5nyTRnH01Q="},"receptionCompartment":{"$ref":"AAAAAAGLr5nyTRnIfLw="},"templateParameterCompartment":{"$ref":"AAAAAAGLr5nyTRnJplY="}},{"_type":"UMLDependencyView","_id":"AAAAAAGLr5oSOBq2Fh8=","_parent":{"$ref":"AAAAAAFF+qBtyKM79qY="},"model":{"$ref":"AAAAAAGLr5oSNxq0sAE="},"subViews":[{"_type":"EdgeLabelView","_id":"AAAAAAGLr5oSOBq3uyM=","_parent":{"$ref":"AAAAAAGLr5oSOBq2Fh8="},"model":{"$ref":"AAAAAAGLr5oSNxq0sAE="},"visible":false,"font":"Arial;13;0","left":364,"top":275,"height":13,"alpha":1.5707963267948966,"distance":15,"hostEdge":{"$ref":"AAAAAAGLr5oSOBq2Fh8="},"edgePosition":1},{"_type":"EdgeLabelView","_id":"AAAAAAGLr5oSOBq4z/I=","_parent":{"$ref":"AAAAAAGLr5oSOBq2Fh8="},"model":{"$ref":"AAAAAAGLr5oSNxq0sAE="},"visible":null,"font":"Arial;13;0","left":349,"top":275,"height":13,"alpha":1.5707963267948966,"distance":30,"hostEdge":{"$ref":"AAAAAAGLr5oSOBq2Fh8="},"edgePosition":1},{"_type":"EdgeLabelView","_id":"AAAAAAGLr5oSOBq5bBY=","_parent":{"$ref":"AAAAAAGLr5oSOBq2Fh8="},"model":{"$ref":"AAAAAAGLr5oSNxq0sAE="},"visible":false,"font":"Arial;13;0","left":393,"top":276,"height":13,"alpha":-1.5707963267948966,"distance":15,"hostEdge":{"$ref":"AAAAAAGLr5oSOBq2Fh8="},"edgePosition":1}],"font":"Arial;13;0","head":{"$ref":"AAAAAAGLr4t9Fu0U6JQ="},"tail":{"$ref":"AAAAAAGLr5nyTBnAzJE="},"lineStyle":1,"points":"378:319;380:246","showVisibility":true,"nameLabel":{"$ref":"AAAAAAGLr5oSOBq3uyM="},"stereotypeLabel":{"$ref":"AAAAAAGLr5oSOBq4z/I="},"propertyLabel":{"$ref":"AAAAAAGLr5oSOBq5bBY="}},{"_type":"UMLDependencyView","_id":"AAAAAAGLr5oflxuBRew=","_parent":{"$ref":"AAAAAAFF+qBtyKM79qY="},"model":{"$ref":"AAAAAAGLr5oflht/qLU="},"subViews":[{"_type":"EdgeLabelView","_id":"AAAAAAGLr5oflxuC2fU=","_parent":{"$ref":"AAAAAAGLr5oflxuBRew="},"model":{"$ref":"AAAAAAGLr5oflht/qLU="},"visible":false,"font":"Arial;13;0","left":388,"top":384,"height":13,"alpha":1.5707963267948966,"distance":15,"hostEdge":{"$ref":"AAAAAAGLr5oflxuBRew="},"edgePosition":1},{"_type":"EdgeLabelView","_id":"AAAAAAGLr5oflxuD8xw=","_parent":{"$ref":"AAAAAAGLr5oflxuBRew="},"model":{"$ref":"AAAAAAGLr5oflht/qLU="},"visible":null,"font":"Arial;13;0","left":403,"top":385,"height":13,"alpha":1.5707963267948966,"distance":30,"hostEdge":{"$ref":"AAAAAAGLr5oflxuBRew="},"edgePosition":1},{"_type":"EdgeLabelView","_id":"AAAAAAGLr5oflxuE6so=","_parent":{"$ref":"AAAAAAGLr5oflxuBRew="},"model":{"$ref":"AAAAAAGLr5oflht/qLU="},"visible":false,"font":"Arial;13;0","left":359,"top":383,"height":13,"alpha":-1.5707963267948966,"distance":15,"hostEdge":{"$ref":"AAAAAAGLr5oflxuBRew="},"edgePosition":1}],"font":"Arial;13;0","head":{"$ref":"AAAAAAGLr4u2wO0/BMQ="},"tail":{"$ref":"AAAAAAGLr5nyTBnAzJE="},"lineStyle":1,"points":"376:366;373:415","showVisibility":true,"nameLabel":{"$ref":"AAAAAAGLr5oflxuC2fU="},"stereotypeLabel":{"$ref":"AAAAAAGLr5oflxuD8xw="},"propertyLabel":{"$ref":"AAAAAAGLr5oflxuE6so="}},{"_type":"UMLDependencyView","_id":"AAAAAAGLr7/Tgh5LDps=","_parent":{"$ref":"AAAAAAFF+qBtyKM79qY="},"model":{"$ref":"AAAAAAGLr7/TgR5J+DQ="},"subViews":[{"_type":"EdgeLabelView","_id":"AAAAAAGLr7/Tgh5MlqQ=","_parent":{"$ref":"AAAAAAGLr7/Tgh5LDps="},"model":{"$ref":"AAAAAAGLr7/TgR5J+DQ="},"visible":false,"font":"Arial;13;0","left":643,"top":287,"height":13,"alpha":1.5707963267948966,"distance":15,"hostEdge":{"$ref":"AAAAAAGLr7/Tgh5LDps="},"edgePosition":1},{"_type":"EdgeLabelView","_id":"AAAAAAGLr7/Tgh5NTY4=","_parent":{"$ref":"AAAAAAGLr7/Tgh5LDps="},"model":{"$ref":"AAAAAAGLr7/TgR5J+DQ="},"visible":null,"font":"Arial;13;0","left":634,"top":275,"height":13,"alpha":1.5707963267948966,"distance":30,"hostEdge":{"$ref":"AAAAAAGLr7/Tgh5LDps="},"edgePosition":1},{"_type":"EdgeLabelView","_id":"AAAAAAGLr7/Tgh5Oeq0=","_parent":{"$ref":"AAAAAAGLr7/Tgh5LDps="},"model":{"$ref":"AAAAAAGLr7/TgR5J+DQ="},"visible":false,"font":"Arial;13;0","left":662,"top":310,"height":13,"alpha":-1.5707963267948966,"distance":15,"hostEdge":{"$ref":"AAAAAAGLr7/Tgh5LDps="},"edgePosition":1}],"font":"Arial;13;0","head":{"$ref":"AAAAAAGLr5bYBRZmUIU="},"tail":{"$ref":"AAAAAAGLr4w7e+1w0I8="},"lineStyle":1,"points":"635:320;671:291","showVisibility":true,"nameLabel":{"$ref":"AAAAAAGLr7/Tgh5MlqQ="},"stereotypeLabel":{"$ref":"AAAAAAGLr7/Tgh5NTY4="},"propertyLabel":{"$ref":"AAAAAAGLr7/Tgh5Oeq0="}}]},{"_type":"UMLClass","_id":"AAAAAAGLr4na8+w5ld8=","_parent":{"$ref":"AAAAAAFF+qBWK6M3Z8Y="},"name":"Admin"},{"_type":"UMLClass","_id":"AAAAAAGLr4ofbOxksOk=","_parent":{"$ref":"AAAAAAFF+qBWK6M3Z8Y="},"name":"Flux"},{"_type":"UMLClass","_id":"AAAAAAGLr4qOjeyOp8g=","_parent":{"$ref":"AAAAAAFF+qBWK6M3Z8Y="},"name":"Article"},{"_type":"UMLClass","_id":"AAAAAAGLr4sA9Oy89r8=","_parent":{"$ref":"AAAAAAFF+qBWK6M3Z8Y="},"name":"FluxGateway"},{"_type":"UMLClass","_id":"AAAAAAGLr4tHS+znCJg=","_parent":{"$ref":"AAAAAAFF+qBWK6M3Z8Y="},"name":"ArticleGatway"},{"_type":"UMLClass","_id":"AAAAAAGLr4t9Fe0SDHU=","_parent":{"$ref":"AAAAAAFF+qBWK6M3Z8Y="},"name":"FluxModel","ownedElements":[{"_type":"UMLDependency","_id":"AAAAAAGLr44zye321Qo=","_parent":{"$ref":"AAAAAAGLr4t9Fe0SDHU="},"source":{"$ref":"AAAAAAGLr4t9Fe0SDHU="},"target":{"$ref":"AAAAAAGLr4ofbOxksOk="}},{"_type":"UMLDependency","_id":"AAAAAAGLr48idPw4hzA=","_parent":{"$ref":"AAAAAAGLr4t9Fe0SDHU="},"source":{"$ref":"AAAAAAGLr4t9Fe0SDHU="},"target":{"$ref":"AAAAAAGLr4sA9Oy89r8="}},{"_type":"UMLAssociation","_id":"AAAAAAGLr5d3DReWANE=","_parent":{"$ref":"AAAAAAGLr4t9Fe0SDHU="},"name":"flux","end1":{"_type":"UMLAssociationEnd","_id":"AAAAAAGLr5d3DReX81Y=","_parent":{"$ref":"AAAAAAGLr5d3DReWANE="},"reference":{"$ref":"AAAAAAGLr4t9Fe0SDHU="}},"end2":{"_type":"UMLAssociationEnd","_id":"AAAAAAGLr5d3DReY118=","_parent":{"$ref":"AAAAAAGLr5d3DReWANE="},"reference":{"$ref":"AAAAAAGLr4ofbOxksOk="},"navigable":"navigable"}}]},{"_type":"UMLClass","_id":"AAAAAAGLr4u2wO09x0k=","_parent":{"$ref":"AAAAAAFF+qBWK6M3Z8Y="},"name":"ArticleModel","ownedElements":[{"_type":"UMLDependency","_id":"AAAAAAGLr45C1O4HDN8=","_parent":{"$ref":"AAAAAAGLr4u2wO09x0k="},"source":{"$ref":"AAAAAAGLr4u2wO09x0k="},"target":{"$ref":"AAAAAAGLr4qOjeyOp8g="}},{"_type":"UMLDependency","_id":"AAAAAAGLr475fPtPm7M=","_parent":{"$ref":"AAAAAAGLr4u2wO09x0k="},"source":{"$ref":"AAAAAAGLr4u2wO09x0k="},"target":{"$ref":"AAAAAAGLr4tHS+znCJg="}}]},{"_type":"UMLClass","_id":"AAAAAAGLr4w7eu1u8Gg=","_parent":{"$ref":"AAAAAAFF+qBWK6M3Z8Y="},"name":"Controleur","ownedElements":[{"_type":"UMLDependency","_id":"AAAAAAGLr49RJ/8+xx4=","_parent":{"$ref":"AAAAAAGLr4w7eu1u8Gg="},"source":{"$ref":"AAAAAAGLr4w7eu1u8Gg="},"target":{"$ref":"AAAAAAGLr4t9Fe0SDHU="}},{"_type":"UMLDependency","_id":"AAAAAAGLr49gEQCZ4Gc=","_parent":{"$ref":"AAAAAAGLr4w7eu1u8Gg="},"source":{"$ref":"AAAAAAGLr4w7eu1u8Gg="},"target":{"$ref":"AAAAAAGLr4u2wO09x0k="}},{"_type":"UMLDependency","_id":"AAAAAAGLr4+LzwKXXhM=","_parent":{"$ref":"AAAAAAGLr4w7eu1u8Gg="},"source":{"$ref":"AAAAAAGLr4w7eu1u8Gg="},"target":{"$ref":"AAAAAAGLr411J+2ZYOI="}},{"_type":"UMLDependency","_id":"AAAAAAGLr5FRZhGCMEI=","_parent":{"$ref":"AAAAAAGLr4w7eu1u8Gg="},"source":{"$ref":"AAAAAAGLr4w7eu1u8Gg="},"target":{"$ref":"AAAAAAGLr4na8+w5ld8="}},{"_type":"UMLDependency","_id":"AAAAAAGLr5qtfxyw80U=","_parent":{"$ref":"AAAAAAGLr4w7eu1u8Gg="},"source":{"$ref":"AAAAAAGLr4w7eu1u8Gg="},"target":{"$ref":"AAAAAAGLr5nyTBm+3eU="}},{"_type":"UMLDependency","_id":"AAAAAAGLr7/TgR5J+DQ=","_parent":{"$ref":"AAAAAAGLr4w7eu1u8Gg="},"source":{"$ref":"AAAAAAGLr4w7eu1u8Gg="},"target":{"$ref":"AAAAAAGLr5bYBBZkCMI="}}]},{"_type":"UMLClass","_id":"AAAAAAGLr411J+2ZYOI=","_parent":{"$ref":"AAAAAAFF+qBWK6M3Z8Y="},"name":"Validator"},{"_type":"UMLClass","_id":"AAAAAAGLr42hUe3EoLI=","_parent":{"$ref":"AAAAAAFF+qBWK6M3Z8Y="},"name":"Connection","ownedElements":[{"_type":"UMLAssociation","_id":"AAAAAAGLr45Xbu4YV/Q=","_parent":{"$ref":"AAAAAAGLr42hUe3EoLI="},"end1":{"_type":"UMLAssociationEnd","_id":"AAAAAAGLr45Xb+4ZWAc=","_parent":{"$ref":"AAAAAAGLr45Xbu4YV/Q="},"reference":{"$ref":"AAAAAAGLr42hUe3EoLI="}},"end2":{"_type":"UMLAssociationEnd","_id":"AAAAAAGLr45Xb+4aK00=","_parent":{"$ref":"AAAAAAGLr45Xbu4YV/Q="},"reference":{"$ref":"AAAAAAGLr4tHS+znCJg="},"aggregation":"composite"}},{"_type":"UMLAssociation","_id":"AAAAAAGLr45mIO70KSY=","_parent":{"$ref":"AAAAAAGLr42hUe3EoLI="},"end1":{"_type":"UMLAssociationEnd","_id":"AAAAAAGLr45mIO71ZqM=","_parent":{"$ref":"AAAAAAGLr45mIO70KSY="},"reference":{"$ref":"AAAAAAGLr42hUe3EoLI="}},"end2":{"_type":"UMLAssociationEnd","_id":"AAAAAAGLr45mIO72eIk=","_parent":{"$ref":"AAAAAAGLr45mIO70KSY="},"reference":{"$ref":"AAAAAAGLr4sA9Oy89r8="},"aggregation":"composite"}}]},{"_type":"UMLClass","_id":"AAAAAAGLr5bYBBZkCMI=","_parent":{"$ref":"AAAAAAFF+qBWK6M3Z8Y="},"name":"Admin"},{"_type":"UMLClass","_id":"AAAAAAGLr5nyTBm+3eU=","_parent":{"$ref":"AAAAAAFF+qBWK6M3Z8Y="},"name":"Parser","ownedElements":[{"_type":"UMLDependency","_id":"AAAAAAGLr5oSNxq0sAE=","_parent":{"$ref":"AAAAAAGLr5nyTBm+3eU="},"source":{"$ref":"AAAAAAGLr5nyTBm+3eU="},"target":{"$ref":"AAAAAAGLr4t9Fe0SDHU="}},{"_type":"UMLDependency","_id":"AAAAAAGLr5oflht/qLU=","_parent":{"$ref":"AAAAAAGLr5nyTBm+3eU="},"source":{"$ref":"AAAAAAGLr5nyTBm+3eU="},"target":{"$ref":"AAAAAAGLr4u2wO09x0k="}}]}]}]} \ No newline at end of file From 76787c26ef42d76253eb92ff31442545461b9c3c Mon Sep 17 00:00:00 2001 From: mapoint2 Date: Wed, 15 Nov 2023 10:59:56 +0100 Subject: [PATCH 09/10] modif listArticle --- fluxRSS/templates/listArticle.html | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/fluxRSS/templates/listArticle.html b/fluxRSS/templates/listArticle.html index 0852fc3..78eee5a 100755 --- a/fluxRSS/templates/listArticle.html +++ b/fluxRSS/templates/listArticle.html @@ -6,7 +6,13 @@ {% for value in dVue.data %} -

{{value}}

+

+ {% for article in value} +

+ {{article}} +

+ {% endfor %} +

{% endfor %} \ No newline at end of file From 5de925155f11931c2913034b20277649b6d136e4 Mon Sep 17 00:00:00 2001 From: Rossetto Date: Wed, 15 Nov 2023 11:39:57 +0100 Subject: [PATCH 10/10] modification on parser to test --- fluxRSS/DAL/ArticleGateway.php | 9 +++++++++ fluxRSS/model/Parser.php | 21 +++++++++++++++++---- 2 files changed, 26 insertions(+), 4 deletions(-) diff --git a/fluxRSS/DAL/ArticleGateway.php b/fluxRSS/DAL/ArticleGateway.php index 7818920..89e43ec 100755 --- a/fluxRSS/DAL/ArticleGateway.php +++ b/fluxRSS/DAL/ArticleGateway.php @@ -48,4 +48,13 @@ class ArticleGateway throw new Exception("PDO error"); } } + + public function removeAllArticleForParser(){ + try{ + $query = 'DELETE FROM Article;'; + $this->con->executeQuery($query); + }catch(\PDOException $p){ + throw new Exception("Data is not delete."); + } + } } \ No newline at end of file diff --git a/fluxRSS/model/Parser.php b/fluxRSS/model/Parser.php index a965433..287e26d 100755 --- a/fluxRSS/model/Parser.php +++ b/fluxRSS/model/Parser.php @@ -3,6 +3,7 @@ namespace model; use DAL\ArticleGateway; +use DAL\Connection; use DAL\FluxGateway; use DOMDocument; use Exception; @@ -62,13 +63,25 @@ class Parser /** * @throws Exception */ - public function addAllArticles(){ - $allFlux = $this->fluxGateway->findAllFlux(); + public function addAllArticles() + { + $this->articleGateway->removeAllArticleForParser(); + $allFlux = $this->fluxGateway->findAllFlux(); + var_dump($allFlux); $allArticles = $this->parseAll($allFlux); - + var_dump($allArticles); foreach ($allArticles as $article) { $this->articleGateway->addArticle($article); } + return $allArticles; } -} \ No newline at end of file + +} +$gwArt = new ArticleGateway(new Connection('mysql:host=londres.uca.local;dbname=dbrorossetto', 'rorossetto', 'tpphp')); +$gwFl = new FluxGateway(new Connection('mysql:host=londres.uca.local;dbname=dbrorossetto', 'rorossetto', 'tpphp')); +$pars = new Parser( $gwFl,$gwArt); +var_dump($pars->addAllArticles()); + + +