Completed
Push — 15.x ( 1a7f4e...53b7d0 )
by Tim
65:00 queued 61:58
created

PluginModule::__construct()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 11

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 0
CRAP Score 2

Importance

Changes 0
Metric Value
dl 0
loc 11
rs 9.9
c 0
b 0
f 0
ccs 0
cts 9
cp 0
cc 1
nc 1
nop 3
crap 2
1
<?php
2
3
/**
4
 * TechDivision\Import\Modules\PluginModule
5
 *
6
 * NOTICE OF LICENSE
7
 *
8
 * This source file is subject to the Open Software License (OSL 3.0)
9
 * that is available through the world-wide-web at this URL:
10
 * http://opensource.org/licenses/osl-3.0.php
11
 *
12
 * PHP version 5
13
 *
14
 * @author    Tim Wagner <[email protected]>
15
 * @copyright 2019 TechDivision GmbH <[email protected]>
16
 * @license   http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
17
 * @link      https://github.com/techdivision/import
18
 * @link      http://www.techdivision.com
19
 */
20
21
namespace TechDivision\Import\Modules;
22
23
use TechDivision\Import\ApplicationInterface;
24
use TechDivision\Import\ConfigurationInterface;
25
use TechDivision\Import\Plugins\PluginExecutorInterface;
26
27
/**
28
 * A module implementation that provides plug-in functionality.
29
 *
30
 * @author    Tim Wagner <[email protected]>
31
 * @copyright 2019 TechDivision GmbH <[email protected]>
32
 * @license   http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
33
 * @link      https://github.com/techdivision/import
34
 * @link      http://www.techdivision.com
35
 */
36
class PluginModule implements ModuleInterface
37
{
38
39
    /**
40
     * The application instance.
41
     *
42
     * @var \TechDivision\Import\ApplicationInterface
43
     */
44
    protected $application;
45
46
    /**
47
     * The configuration instance.
48
     *
49
     * @var \TechDivision\Import\ConfigurationInterface
50
     */
51
    protected $configuration;
52
53
    /**
54
     * The plugin executor instance.
55
     *
56
     * @var \TechDivision\Import\Plugins\PluginExecutorInterface
57
     */
58
    protected $pluginExecutor;
59
60
    /**
61
     * Initializes the module with the application, configuration and plug-in executor instance.
62
     *
63
     * @param \TechDivision\Import\ApplicationInterface            $application    The application instance
64
     * @param \TechDivision\Import\ConfigurationInterface          $configuration  The configuration instance
65
     * @param \TechDivision\Import\Plugins\PluginExecutorInterface $pluginExecutor The plug-in executor instance
66
     */
67
    public function __construct(
68
        ApplicationInterface $application,
69
        ConfigurationInterface $configuration,
70
        PluginExecutorInterface $pluginExecutor
71
    ) {
72
73
        // initialize the application, the configuration and the plugin executor
74
        $this->application = $application;
75
        $this->configuration = $configuration;
76
        $this->pluginExecutor = $pluginExecutor;
77
    }
78
79
    /**
80
     * Return's the application instance.
81
     *
82
     * @return \TechDivision\Import\ApplicationInterface The application instance
83
     */
84
    protected function getApplication()
85
    {
86
        return $this->application;
87
    }
88
89
    /**
90
     * Return's the configuration instance.
91
     *
92
     * @return \TechDivision\Import\ConfigurationInterface The configuration instance
93
     */
94
    protected function getConfiguration()
95
    {
96
        return $this->configuration;
97
    }
98
99
    /**
100
     * Return's the plug-in executor instance.
101
     *
102
     * @return \TechDivision\Import\Plugins\PluginExecutorInterface The plug-in executor instance
103
     */
104
    protected function getPluginExecutor()
105
    {
106
        return $this->pluginExecutor;
107
    }
108
109
    /**
110
     * Inovkes the plug-in functionality.
111
     *
112
     * @return void
113
     */
114
    public function process()
115
    {
116
117
        // process the plugins defined in the configuration
118
        /** @var \TechDivision\Import\Configuration\PluginConfigurationInterface $pluginConfiguration */
119
        foreach ($this->getConfiguration()->getPlugins() as $pluginConfiguration) {
120
            // query whether or not the operation has been stopped
121
            if ($this->getApplication()->isStopped()) {
122
                break;
123
            }
124
125
            // execute the plugin instance
126
            $this->getPluginExecutor()->execute($pluginConfiguration);
127
         }
128
    }
129
}
130