From 88ae5711127ac1c7df20d52501b38b49dfb489f4 Mon Sep 17 00:00:00 2001 From: Ulf Tietze <u.tietze@neusta.de> Date: Sat, 1 Jun 2019 12:06:21 +0200 Subject: [PATCH] Introduce Export Definition to Dump Entries --- Api/ExportInterface.php | 16 ++++++++++++ Api/StrategyInterface.php | 12 +++++++++ Api/StrategyProviderInterface.php | 17 +++++++++++++ Model/Strategy/ExportToModule.php | 18 +++++++++++++ Model/Strategy/ExportToVar.php | 18 +++++++++++++ Model/Strategy/Provider.php | 42 +++++++++++++++++++++++++++++++ etc/di.xml | 20 +++++++++++++++ 7 files changed, 143 insertions(+) create mode 100644 Api/ExportInterface.php create mode 100644 Api/StrategyInterface.php create mode 100644 Api/StrategyProviderInterface.php create mode 100644 Model/Strategy/ExportToModule.php create mode 100644 Model/Strategy/ExportToVar.php create mode 100644 Model/Strategy/Provider.php diff --git a/Api/ExportInterface.php b/Api/ExportInterface.php new file mode 100644 index 0000000..43e82e2 --- /dev/null +++ b/Api/ExportInterface.php @@ -0,0 +1,16 @@ +<?php +declare(strict_types=1); + +namespace Firegento\ContentProvisioning\Api; + +use Firegento\ContentProvisioning\Api\Data\EntryInterface; + +interface ExportInterface +{ + /** + * @param StrategyInterface $strategy + * @param EntryInterface $entry + * @return void + */ + public function execute(StrategyInterface $strategy, EntryInterface $entry): void; +} \ No newline at end of file diff --git a/Api/StrategyInterface.php b/Api/StrategyInterface.php new file mode 100644 index 0000000..9fb3a23 --- /dev/null +++ b/Api/StrategyInterface.php @@ -0,0 +1,12 @@ +<?php +declare(strict_types=1); + +namespace Firegento\ContentProvisioning\Api; + +interface StrategyInterface +{ + /** + * @return string + */ + public function getTargetPath(): string; +} \ No newline at end of file diff --git a/Api/StrategyProviderInterface.php b/Api/StrategyProviderInterface.php new file mode 100644 index 0000000..1e1e9fd --- /dev/null +++ b/Api/StrategyProviderInterface.php @@ -0,0 +1,17 @@ +<?php +declare(strict_types=1); + +namespace Firegento\ContentProvisioning\Api; + +use Magento\Framework\Exception\NotFoundException; + +interface StrategyProviderInterface +{ + /** + * @param string $strategyCode + * @return StrategyInterface + * + * @throws NotFoundException + */ + public function get(string $strategyCode): StrategyInterface; +} \ No newline at end of file diff --git a/Model/Strategy/ExportToModule.php b/Model/Strategy/ExportToModule.php new file mode 100644 index 0000000..05e6ae5 --- /dev/null +++ b/Model/Strategy/ExportToModule.php @@ -0,0 +1,18 @@ +<?php +declare(strict_types=1); + +namespace Firegento\ContentProvisioning\Model\Strategy; + +use Firegento\ContentProvisioning\Api\StrategyInterface; + +class ExportToModule implements StrategyInterface +{ + + /** + * @return string + */ + public function getTargetPath(): string + { + // TODO: Implement getTargetPath() method. + } +} \ No newline at end of file diff --git a/Model/Strategy/ExportToVar.php b/Model/Strategy/ExportToVar.php new file mode 100644 index 0000000..ea91dd4 --- /dev/null +++ b/Model/Strategy/ExportToVar.php @@ -0,0 +1,18 @@ +<?php +declare(strict_types=1); + +namespace Firegento\ContentProvisioning\Model\Strategy; + +use Firegento\ContentProvisioning\Api\StrategyInterface; + +class ExportToVar implements StrategyInterface +{ + + /** + * @return string + */ + public function getTargetPath(): string + { + // TODO: Implement getTargetPath() method. + } +} \ No newline at end of file diff --git a/Model/Strategy/Provider.php b/Model/Strategy/Provider.php new file mode 100644 index 0000000..d407feb --- /dev/null +++ b/Model/Strategy/Provider.php @@ -0,0 +1,42 @@ +<?php +declare(strict_types=1); + +namespace Firegento\ContentProvisioning\Model\Strategy; + +use Firegento\ContentProvisioning\Api\StrategyInterface; +use Firegento\ContentProvisioning\Api\StrategyProviderInterface; +use Magento\Framework\Exception\NotFoundException; + +class Provider implements StrategyProviderInterface +{ + /** + * @var array|StrategyInterface[] + */ + private $strategies; + + /** + * Provider constructor. + * @param StrategyInterface[] $strategies + */ + public function __construct(array $strategies) + { + $this->strategies = $strategies; + } + + /** + * @param string $strategyCode + * @return StrategyInterface + * + * @throws NotFoundException + */ + public function get(string $strategyCode): StrategyInterface + { + $strategy = $this->strategies[$strategyCode] ?? null; + + if (!$strategy) { + throw new NotFoundException(__('Strategy %s not found.', $strategyCode)); + } + + return $strategy; + } +} \ No newline at end of file diff --git a/etc/di.xml b/etc/di.xml index 18cd8df..9442de5 100644 --- a/etc/di.xml +++ b/etc/di.xml @@ -105,4 +105,24 @@ </argument> </arguments> </type> + + <preference + for="Firegento\ContentProvisioning\Api\StrategyProviderInterface" + type="Firegento\ContentProvisioning\Model\Strategy\Provider" + /> + + <preference + for="Firegento\ContentProvisioning\Api\ExportInterface" + type="Firegento\ContentProvisioning\Model\Command\ExportEntry" + /> + + <type name="Firegento\ContentProvisioning\Model\Strategy\Provider"> + <arguments> + <argument name="strategies" xsi:type="array"> + <item name="export_to_module" xsi:type="object">Firegento\ContentProvisioning\Model\Strategy\ExportToModule</item> + <item name="export_to_var" xsi:type="object">Firegento\ContentProvisioning\Model\Strategy\ExportToVar</item> + </argument> + </arguments> + </type> + </config> -- GitLab